表签
1. 基础常用命令
某个命令 --h
,对这个命令进行解释某个命令 --help
,解释这个命令(更详细)man某个命令
,文档式解释这个命令(更更详细)(执行该命令后,还可以按/+关键字进行查询结果的搜索)Ctrl + c
,结束命令TAB键
,自动补全命令(按一次自动补全,连续按两次,提示所有以输入开头字母的所有命令)键盘上下键
,输入临近的历史命令history
,查看所有的历史命令Ctrl + r
,进入历史命令的搜索功能模式clear
,清除屏幕里面的所有命令pwd
,显示当前目录路径(常用)firefox&
,最后后面的 & 符号,表示使用后台方式打开 Firefox,然后显示该进程的 PID 值jobs
,查看后台运行的程序列表ifconfig
,查看 IP 等信息(常用)locate 搜索关键字
,快速搜索系统文件/文件夹(类似 Windows 上的 everything 索引式搜索)(常用)updatedb
,配合上面的 locate,给 locate 的索引更新(locate 默认是一天更新一次索引)(常用)
date
,查看系统时间(常用)date -s20080103
,设置日期(常用)date -s18:24
,设置时间,如果要同时更改 BIOS 时间,再执行hwclock --systohc
(常用)
cal
,在终端中查看日历,肯定没有农历显示的uptime
,查看系统已经运行了多久,当前有几个用户等信息(常用)echo "字符串内容"
,输出 "字符串内容"cat 文件路名
,显示文件内容(属于打印语句)cat -n 文件名
,显示文件,并每一行内容都编号more 文件名
,用分页的方式查看文件内容(按 space 翻下一页,按 Ctrl + B 返回上页)less
文件名,用分页的方式查看文件内容(带上下翻页)- 按 j 向下移动,按 k 向上移动
- 按 / 后,输入要查找的字符串内容,可以对文件进行向下查询,如果存在多个结果可以按 n 调到下一个结果出
- 按 ? 后,输入要查找的字符串内容,可以对文件进行向上查询,如果存在多个结果可以按 n 调到下一个结果出
tail -200f 文件名
,查看文件被更新的新内容尾 200 行,如果文件还有在新增可以动态查看到(一般用于查看日记文件)shutdown
shutdown -hnow
,立即关机shutdown -h+10
,10 分钟后关机shutdown -h23:30
,23:30 关机shutdown -rnew
,立即重启
poweroff
,立即关机(常用)reboot
,立即重启(常用)zip mytest.zip /opt/test/
,把 /opt 目录下的 test/ 目录进行压缩,压缩成一个名叫 mytest 的 zip 文件unzip mytest.zip
,对 mytest.zip 这个文件进行解压,解压到当前所在目录unzip mytest.zip -d /opt/setups/
,对 mytest.zip 这个文件进行解压,解压到 /opt/setups/ 目录下
tar -cvf mytest.tar mytest/
,对 mytest/ 目录进行归档处理(归档和压缩不一样)tar -xvf mytest.tar
,释放 mytest.tar 这个归档文件,释放到当前目录tar -xvf mytest.tar -C /opt/setups/
,释放 mytest.tar 这个归档文件,释放到 /opt/setups/ 目录下
last
,显示最近登录的帐户及时间lastlog
,显示系统所有用户各自在最近登录的记录,如果没有登录过的用户会显示 从未登陆过ls
,列出当前目录下的所有没有隐藏的文件 / 文件夹。ls -a
,列出包括以.号开头的隐藏文件 / 文件夹(也就是所有文件)ls -R
,显示出目录下以及其所有子目录的文件 / 文件夹(递归地方式,不显示隐藏的文件)ls -a -R
,显示出目录下以及其所有子目录的文件 / 文件夹(递归地方式,显示隐藏的文件)ls -l
,列出目录下所有文件的权限、所有者、文件大小、修改时间及名称(也就是显示详细信息,不显示隐藏文件)。显示出来的效果如下:-rwxr-xr-x. 1 root root 4096 3月 26 10:57,其中最前面的 - 表示这是一个普通文件 lrwxrwxrwx. 1 root root 4096 3月 26 10:57,其中最前面的 l 表示这是一个链接文件,类似 Windows 的快捷方式 drwxr-xr-x. 5 root root 4096 3月 26 10:57,其中最前面的 d 表示这是一个目录
ls -ld 目录名
,显示该目录的基本信息ls -t
,依照文件最后修改时间的顺序列出文件名。ls -F
,列出当前目录下的文件名及其类型。以 / 结尾表示为目录名,以 * 结尾表示为可执行文件,以 @ 结尾表示为符号连接ls -lg
,同上,并显示出文件的所有者工作组名。ls -lh
,查看文件夹类文件详细信息,文件大小,文件修改时间ls /opt | head -5
,显示 opt 目录下前 5 条记录ls -l /opt |grep "^-"|wc -l
,统计 opt 目录下文件的个数,不会递归统计ls -lR /opt |grep "^-"|wc -l
,统计 opt 目录下文件的个数,会递归统计ls -l /opt |grep "^d"|wc -l
,统计 opt 目录下目录的个数,不会递归统计ls -lR /opt |grep "^d"|wc -l
,统计 opt 目录下目录的个数,会递归统计ls -lR /opt |grep "js"|wc -l
,统计 opt 目录下 js 文件的个数,会递归统计
cd
,目录切换cd ..
,改变目录位置至当前目录的父目录(上级目录)。cd ~
,改变目录位置至用户登录时的工作目录。cd 回车
,回到家目录cd -
,上一个工作目录cd dir1/
,改变目录位置至 dir1 目录下。cd ~user
,改变目录位置至用户的工作目录。cd ../user
,改变目录位置至相对路径user的目录下。cd /../..
,改变目录位置至绝对路径的目录位置下。
cp 源文件 目标文件
,复制文件cp -r 源文件夹 目标文件夹
,复制文件夹cp -r -v 源文件夹 目标文件夹
,复制文件夹(显示详细信息,一般用于文件夹很大,需要查看复制进度的时候)cp /usr/share/easy-rsa/2.0/keys/{ca.crt,server.{crt,key},dh2048.pem,ta.key} /etc/openvpn/keys/
,复制同目录下花括号中的文件
tar cpf - . | tar xpf - -C /opt
,复制当前所有文件到 /opt 目录下,一般如果文件夹文件多的情况下用这个更好,用 cp 比较容易出问题mv 文件 目标文件夹
,移动文件到目标文件夹mv 文件
,不指定目录重命名后的名字,用来重命名文件
touch 文件名
,创建一个空白文件/更新已有文件的时间(后者少用)mkdir 文件夹名
,创建文件夹mkdir -p /opt/setups/nginx/conf/
,创建一个名为 conf 文件夹,如果它的上级目录 nginx 没有也会跟着一起生成,如果有则跳过rmdir 文件夹名
,删除文件夹(只能删除文件夹里面是没有东西的文件夹)rm 文件
,删除文件rm -r 文件夹
,删除文件夹rm -r -i 文件夹
,在删除文件夹里的文件会提示(要的话,在提示后面输入yes)rm -r -f 文件夹
,强制删除rm -r -f 文件夹1/ 文件夹2/ 文件夹3/
删除多个
find
,高级查找find . -name *lin*
,其中 . 代表在当前目录找,-name 表示匹配文件名 / 文件夹名,*lin* 用通配符搜索含有lin的文件或是文件夹find . -iname *lin*
,其中 . 代表在当前目录找,-iname 表示匹配文件名 / 文件夹名(忽略大小写差异),*lin* 用通配符搜索含有lin的文件或是文件夹find / -name *.conf
,其中 / 代表根目录查找,*.conf代表搜索后缀会.conf的文件find /opt -name .oh-my-zsh
,其中 /opt 代表目录名,.oh-my-zsh 代表搜索的是隐藏文件 / 文件夹名字为 oh-my-zsh 的find /opt -type f -iname .oh-my-zsh
,其中 /opt 代表目录名,-type f 代表只找文件,.oh-my-zsh 代表搜索的是隐藏文件名字为 oh-my-zsh 的find /opt -type d -iname .oh-my-zsh
,其中 /opt 代表目录名,-type d 代表只找目录,.oh-my-zsh 代表搜索的是隐藏文件夹名字为 oh-my-zsh 的find . -name "lin*" -exec ls -l {} \;
,当前目录搜索lin开头的文件,然后用其搜索后的结果集,再执行ls -l的命令(这个命令可变,其他命令也可以),其中 -exec 和 {} \; 都是固定格式find /opt -type f -size +800M -print0 | xargs -0 du -h | sort -nr
,找出 /opt 目录下大于 800 M 的文件find / -name "*tower*" -exec rm {} \;
,找到文件并删除du -hm --max-depth=2 | sort -nr | head -12
,找出系统中占用容量最大的前 12 个目录
cat /etc/resolv.conf
,查看 DNS 设置netstat -tlunp
,查看当前运行的服务,同时可以查看到:运行的程序已使用端口情况env
,查看所有系统变量export
,查看所有系统变量echo $JAVA_HOME
,查看指定系统变量的值,这里查看的是自己配置的 JAVA_HOME。unset $JAVA_HOME
,删除指定的环境变量ln -s /opt/data /opt/logs/data
,表示给 /opt/logs 目录下创建一个名为 data 的软链接,该软链接指向到 /opt/data
2. 用户、权限-相关命令
hostname
,查看当前登陆用户全名cat /etc/group
,查看所有组cat /etc/passwd
,查看所有用户groups youmeek
,查看 youmeek 用户属于哪个组useradd youmeek -g judasn
,添加用户并绑定到 judasn 组下userdel -r youmeek
,删除名字为 youmeek 的用户- 参数:
-r
,表示删除用户的时候连同用户的家目录一起删除
- 参数:
修改普通用户 youmeek 的权限跟 root 权限一样:
常用方法(原理是把该用户加到可以直接使用 sudo 的一个权限状态而已):
- 编辑配置文件:
vim /etc/sudoers
找到 98 行(预估),有一个:
root ALL=(ALL) ALL
,在这一行下面再增加一行,效果如下:root ALL=(ALL) ALL youmeek ALL=(ALL) ALL
- 编辑配置文件:
另一种方法:
- 编辑系统用户的配置文件:
vim /etc/passwd
,找到 root 和 youmeek 各自开头的那一行,比如 root 是:root:x:0:0:root:/root:/bin/zsh
,这个代表的含义为:用户名:密码:UserId:GroupId:描述:家目录:登录使用的 shell - 通过这两行对比,我们可以直接修改 youmeek 所在行的 UserId 值 和 GroupId 值,都改为 0。
- 编辑系统用户的配置文件:
groupadd judasn
,添加一个名为 judasn 的用户组groupdel judasn
,删除一个名为 judasn 的用户组(前提:先删除组下面的所有用户)usermod 用户名 -g 组名
,把用户修改到其他组下passwd youmeek
,修改 youmeek 用户的密码(前提:只有 root 用户才有修改其他用户的权限,其他用户只能修改自己的)chmod 777 文件名/目录
,给指定文件增加最高权限,系统中的所有人都可以进行读写。- linux 的权限分为 rwx。r 代表:可读,w 代表:可写,x 代表:可执行
- 这三个权限都可以转换成数值表示,r = 4,w = 2,x = 1,- = 0,所以总和是 7,也就是最大权限。第一个 7 是所属主(user)的权限,第二个 7 是所属组(group)的权限,最后一位 7 是非本群组用户(others)的权限。
su
:切换到 root 用户,终端目录还是原来的地方(常用)su -
:切换到 root 用户,其中 - 号另起一个终端并切换账号su 用户名
,切换指定用户帐号登陆,终端目录还是原来地方。su - 用户名
,切换到指定用户帐号登陆,其中 - 号另起一个终端并切换账号
exit
,注销当前用户(常用)sudo 某个命令
,使用管理员权限使用命令,使用 sudo 回车之后需要输入当前登录账号的密码。(常用)passwd
,修改当前用户密码(常用)
3. 磁盘管理
df -h
,自动以合适的磁盘容量单位查看磁盘大小和使用空间df -k
,以磁盘容量单位 K 为数值结果查看磁盘使用情况df -m
,以磁盘容量单位 M 为数值结果查看磁盘使用情况
du -sh /opt
,查看 opt 这个文件夹大小 (h 的意思 human-readable 用人类可读性较好方式显示,系统会自动调节单位,显示合适大小的单位)du -sh ./*
,查看当前目录下所有文件夹大小 (h 的意思 human-readable 用人类可读性较好方式显示,系统会自动调节单位,显示合适大小的单位)du -sh /opt/setups/
,显示 /opt/setups/ 目录所占硬盘空间大小(s 表示 –summarize 仅显示总计,即当前目录的大小。h 表示 –human-readable 以 KB,MB,GB 为单位,提高信息的可读性)mount /dev/sdb5 /newDir/
,把分区 sdb5 挂载在根目录下的一个名为 newDir 的空目录下,需要注意的是:这个目录最好为空,不然已有的那些文件将看不到,除非卸载挂载。- 挂载好之后,通过:
df -h
,查看挂载情况。
- 挂载好之后,通过:
umount /newDir/
,卸载挂载,用目录名- 如果这样卸载不了可以使用:
umount -l /newDir/
- 如果这样卸载不了可以使用:
umount /dev/sdb5
,卸载挂载,用分区名
4. 资料
- http://wenku.baidu.com/view/1ad19bd226fff705cc170af3.html
- http://blog.csdn.net/nzing/article/details/9166057
5. 终端工具
5.1. brew
homebrew
homebrew,是mac下类似apt-get的软件管理工具。
通常情况下brew安装的软件都会在brewprefix
返回的目录中,不会在额外创建文件。
安装
没啥说的,直接安装官方提供的方式,终端下运行:ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
使用
安装完brew之后,执行brew update
和brew doctor
,然后按照提示稍微设置下,需要我们将/usr/local/bin
添加到PATH路径的最前面,保证系统优先调用到的是brew下载的。在命名行下输入:echo export PATH='/usr/local/bin:$PATH' >> ~/.bash_profile
。
一般来说,我会用brew安装git, nvm, zsh。V2EX有人统计了下常用的安装软件:
wget=26
pkg-config=17
automake=17
autoconf=17
readline=15
git=14
gettext=14
libtool=14
xz=14
pcre=13
imagemagick=12
zsh=12
jpeg=12
gdbm=12
openssl=11
mongodb=11
cmake=11
coreutils=11
libevent=11
tree=11
freetype=11
sqlite=11
libpng=10
macvim=10
mtr=10
libyaml=10
mysql=9
node=9
mercurial=9
tig=9
nginx=9
gnutls=8
redis=8
libgpg-error=8
ack=8
gmp=8
tmux=8
libtiff=8
glib=7
go=7
libksba=7
nettle=7
p11-kit=7
unrar=7
phantomjs=7
python=7
libffi=7
gawk=7
libtasn1=7
lua=7
apple-gcc42=7
libxslt=7
dos2unix=6
fontconfig=6
python3=6
htop-osx=6
pixman=6
ctags=6
gd=5
intltool=5
git-extras=5
swig=5
curl=5
neon=5
jasper=5
curl-ca-bundle=5
icu4c=5
p7zip=5
postgresql=5
zlib=5
libxml2=5
删除
这个说一下吧,因为公司的电脑是别人之前使用的,暂时有些资料需要保存,我无法删除,我新建了个用户继续使用。
之前的brew可能是其他用户安装的,导致我的新用户能使用brew命令,但是无法安装,更新(应该是权限读取的问题)。所以我想卸载brew重新安装。官方提供的一个脚本好像是几年前的,uninstall_homebrew.sh。而我找到一个说明,感觉比较简单明了:
Uninstall
WARNING: Before copying and pasting these commands on your shell, make sure the first one (brew –prefix
) returns the path where homebrew was installed properly. If not, you might ending up removing stuff from your computer you did not intend to remove.
cd `brew --prefix`
rm -rf Cellar
brew prune
rm -rf Library .git .gitignore bin/brew README.md share/man/man1/brew
rm -rf ~/Library/Caches/Homebrew
http://superuser.com/questions/203707/how-to-uninstall-homebrew-osx-packet-> manager
Reinstall
ruby -e "$(curl -fsSL https://raw.github.com/mxcl/homebrew/go)"
https://github.com/mxcl/homebrew/wiki/Installation
也许第一次删除安装还是会出问题,那就结合官方提供的shell里的路径,全部删除,再次重启。
特别说明
我这里删除再安装之后,可以通过brew install
安装软件,比如git。但是执行brew doctor
时,会报告link
的错误: You have unlinked kegs in your Cellar
,执行brew link git
之后,会提示could not symlink opt is not writable
。
此问题是/usr/local
目录缺少权限,执行sudo chmod -R g+w /usr/local
,再次brew link git
即可。
homebrew-cask
cask, 它是brew的一个扩展,提供命令行下安装软件的功能。它所安装的所有软件都在/opt/homebrew-cask/Caskroom
目录下,自动完成了软连接到Application
。
安装
brew install caskroom/cask/brew-cask
,一键安装。
如果已经安装的用户,可以升级到最近版本:
brew update && brew upgrade brew-cask && brew cleanup && brew cask cleanup
还有要说明的一点:默认通过brew cask安装的软件,是软连接到~/Applications
目录下,这是可以通过设置修改的,具体的使用可以通过man brew-cask
查看。
我是直接echo export PATH='/usr/local/bin:$PATH' >> ~/.zshrc
,写入到配置文件中。
运行
第一次安装过后,执行brew cask --help
查看下说明(其实只要是第一次运行),需要你提供root权限,方便cask软连接到Application中。
安装其他软件的话,可以先使用brew cask search <name>
查看是否有匹配的。再使用brew cask install <name>
进行安装。成功之后,就可以直接在Application中找到刚刚安装的软件。
关联Alfred2
安装完应用之后,如果你是Alfred2用户,还需要设置一下link,使得Alfred可以搜索通过brew cask安装的应用,操作方法是:
# 查看状态
brew cask alfred status
# 设置连接
brew cask alfred link
Homebrew 常用命令:
brew list # 查看已经安装的包
brew update # 更新 Homebrew 自身
brew doctor # 诊断关于 Homebrew 的问题 (Homebrew 有问题时请用它 )
brew cleanup # 清理老版本软件包或者无用的文件
brew show ${formula} # 查看包信息
brew search ${formula} # 按名称搜索
brew upgrade ${formula} # 升级软件包
brew install ${formula} # 按名称安装
brew uninstall ${formula} # 按名称卸载
brew pin/unpin ${formula} # 锁定或者解锁软件包版本,防止误升级
使用brew cask安装的软件
- Dropbox
- TextExpander
LaunchRocket
LaunchRocket是一个管理brew安装的service的工具,安装之后可以看所有的service的运行状态。
参考资料
5.2. iTerm2
早就听说这个终端工具了,可以完全替代terminal。
设置
配色
Solarized, 是目前最完整的 Terminal/Editor/IDE 配色项目,几乎覆盖所有主流操作系统(Mac OS X, Linux, Windows)、编辑器和 IDE(Vim, Emacs, Xcode, TextMate, NetBeans, Visual Studio 等),终端(iTerm2, Terminal.app, Putty 等)。类似的项目还有 Tomorrow Theme。
拿tomorrow-theme举例,下载Tomorrow-Night-Eighties.itermcolors文件,双击自动导入到iTerm2中,在Perferences->Profiles->Colors->Load Presets中可以看到对应的配色。修改即可。
中文乱码问题
确保Preferences->Profiles->Terminal->Terminal Emulation中的字符编码为UTF-8。
中文乱码的问题需要设置一下locale, 在对于的shell配置文件中,比如bash对应的就是~/.bashrc
, zsh对应的就是~/.zshrc
, 这里以zsh为例,打开.zshrc文件,修改其中# You may need to manually set your language environment
export LANG=en_US.UTF-8
:
# You may need to manually set your language environment
export LANG=en_US.UTF-8
接着重启一下终端,或者输入: source ~/.zshrc
。
一些快捷操作
command+方向键
: 切换tab。command+enter
: 全屏模式。command+f
: 搜索,支持正则表达式。command+d
: 垂直分屏。command+shift+d
: 水平分屏。command+[ 或 command +]
: 在最近使用的分屏直接切换。command+t
: 打开新标签。command+w
: 关闭新标签。command+;
: 自动补全历史命令。command+r
: 清除屏幕,相当与clear.command+p/n
: 上一条/下一条命令,相当于方向键上和下。ctrl+r
: 搜索命令历史。
编辑操作
基本的Emacs移动光标方式。还有一些很好的操作方式,我觉得都可以借鉴配置到SublimeText中。
ctrl+d
: 删除当前字符。ctrl+h
: 删除之前的字符。ctrl+u
: 删除整行。ctrl+k
: 删除当前到文本末尾的字符。ctrl+w
: 删除光标前的单词。ctrl+t
: 交换当前光标和前一个位置,互换。
参考资料
6. Zsh 介绍
zsh是shell语言类型,兼容bash,提供强大的命令行功能,比如tab补全,自动纠错功能等。缺点就是配置太麻烦,好在有一个叫做oh-my-zsh
的开源项目,很好的弥补了这一缺陷,只需要修修改改配置文件,就能很顺手。
- Zsh 兼容 Bash,据传说 99% 的 Bash 操作 和 Zsh 是相同的
- Zsh 官网:http://www.zsh.org/
先看下你的 CentOS 支持哪些 shell:
cat /etc/shells
,正常结果应该是这样的:/bin/sh /bin/bash /sbin/nologin /bin/dash /bin/tcsh /bin/csh
默认 CentOS / Ubuntu / Mac 系统用的是 Bash,倒也不是说 Bash 不好,而是说我们有更好的选择。
6.1. Zsh 安装
- CentOS 安装:
sudo yum install -y zsh
- Ubuntu 安装:
sudo apt-get install -y zsh
- Mac 安装:
brew install zsh
。 - 在检查下系统的 shell:
cat /etc/shells
,你会发现多了一个:/bin/zsh
- 替换bash的方式:
chsh -s /bin/zsh
。关闭终端,再次打开即为zsh。注意:之前我们使用bash,我们为了使用brew安装的软件,修改了
~/.bash_prorile
文件,新的zsh自己也有配置文件,是~/.zshrc
,需要将配置拷贝到~/.zshrc
中。或者在安装完oh-my-zsh后,执行echo export PATH='/usr/local/bin:$PATH' >> ~/.zshrc
。
使用 Zsh 扩展集合:oh-my-zsh
- oh-my-zsh 帮我们整理了一些常用的 Zsh 扩展功能和主题:https://github.com/robbyrussell/oh-my-zsh
- 我们无需自己去捣搞 Zsh,直接用 oh-my-zsh 就足够了,如果你想继续深造的话那再去弄。
- 先安装 git:
sudo yum install -y git
- 安装 oh-my-zsh
wget https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh -O - | sh
- 安装 oh-my-zsh
curl -L http://install.ohmyz.sh | sh
- 在以 root 用户为前提下,oh-my-zsh 的安装目录:/root/.oh-my-zsh
- 在以 root 用户为前提下,Zsh 的配置文件位置:/root/.zshrc
- 为 root 用户设置 zsh 为系统默认 shell:
chsh -s /bin/zsh root
- 如果你要重新恢复到 bash:
chsh -s /bin/bash root
6.2. Zsh 配置
插件
- 启用 oh-my-zsh 中自带的插件。
- oh-my-zsh 的插件列表介绍(太长了,用源码不精准地统计下有 149 个):https://github.com/robbyrussell/oh-my-zsh/wiki/Plugins
- 我们看下安装 oh-my-zsh 的时候自带有多少个插件:
ls -l /root/.oh-my-zsh/plugins |grep "^d"|wc -l
,我这边得到的结果是:211 - 编辑配置文件:
vim /root/.zshrc
,找到下图的地方,怎么安装,原作者注释写得很清楚了,别装太多了,默认 git 是安装的。 - 插件推荐:
wd
- 简单地讲就是给指定目录映射一个全局的名字,以后方便直接跳转到这个目录,比如:
- 编辑配置文件,添加上 wd 的名字:
vim /root/.zshrc
- 我常去目录:/opt/setups,每次进入该目录下都需要这样:
cd /opt/setups
- 现在用 wd 给他映射一个快捷方式:
cd /opt/setups ; wd add setups
- 以后我在任何目录下只要运行:
wd setups
就自动跑到 /opt/setups 目录下了 - 插件官网:https://github.com/mfaerevaag/wd
autojump
- 这个插件会记录你常去的那些目录,然后做一下权重记录,你可以用这个命令看到你的习惯:
j --stat
,如果这个里面有你的记录,那你就只要敲最后一个文件夹名字即可进入,比如我个人习惯的 program:j program
,就可以直接到:/usr/program
- 插件官网:https://github.com/wting/autojump
- 官网插件下载地址:https://github.com/wting/autojump/downloads
- 插件下载:
wget https://github.com/downloads/wting/autojump/autojump_v21.1.2.tar.gz
- 解压:
tar zxvf autojump_v21.1.2.tar.gz
- 进入解压后目录并安装:
cd autojump_v21.1.2/ ; ./install.sh
- 再执行下这个:
source /etc/profile.d/autojump.sh
- 编辑配置文件,添加上 autojump 的名字:
vim /root/.zshrc
- 这个插件会记录你常去的那些目录,然后做一下权重记录,你可以用这个命令看到你的习惯:
zsh-syntax-highlighting
- 这个插件会对终端命令高亮显示,比如正确的拼写会是绿色标识,否则是红色,另外对于一些shell输出语句也会有高亮显示,算是不错的辅助插件
- 插件官网:https://github.com/zsh-users/zsh-syntax-highlighting
- 安装,复制该命令:'git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting'
- 编辑:
vim ~/.zshrc
,找到这一行,后括号里面的后面添加:plugins=( 前面的一些插件名称 zsh-syntax-highlighting)
- 刷新下配置:
source ~/.zshrc
主题
- 很多人喜欢捣搞这个 ╮( ̄▽ ̄)╭
- 捣搞主题和插件思路一样
- oh-my-zsh 的主题列表介绍(还是太长了):https://github.com/robbyrussell/oh-my-zsh/wiki/Themes
- 我们看下安装 oh-my-zsh 的时候,自带有多少个:
ls -l /root/.oh-my-zsh/themes |grep "^-"|wc -l
,我这边得到的结果是:140 - 我个人品味地推荐的是(排名有先后):
ys
agnoster
avit
blinks
- 编辑配置文件:
vim /root/.zshrc
,找到下图的地方,怎么安装,原作者注释写得很清楚了,如果你没特别的喜欢那就选择随机吧。 - 配置好新主题需要重新连接 shell 才能看到效果
一些人性化功能
- 呃,这个其实可以不用讲的,你自己用的时候你自己会发现的,各种便捷,特别是用 Tab 多的人一定会有各种惊喜的。
- 使用 ctrl-r 来搜索命令历史记录。按完此快捷键后,可以输入关键命令词语,如果历史记录有含有此词语会显示出来。
- 命令别名:
- 在命令行中输入 alias 可以查看已经有的命令别名
- 自己新增一些别名,编辑文件:
vim ~/.zshrc
,在文件加入下面格式的命令,比如以下是网友提供的一些思路:
alias cls='clear'
alias ll='ls -l'
alias la='ls -a'
alias grep="grep --color=auto"
alias -s html='vim' # 在命令行直接输入后缀为 html 的文件名,会在 Vim 中打开
alias -s rb='vim' # 在命令行直接输入 ruby 文件,会在 Vim 中打开
alias -s py='vim' # 在命令行直接输入 python 文件,会用 vim 中打开,以下类似
alias -s js='vim'
alias -s c='vim'
alias -s java='vim'
alias -s txt='vim'
alias -s gz='tar -xzvf' # 在命令行直接输入后缀为 gz 的文件名,会自动解压打开
alias -s tgz='tar -xzvf'
alias -s zip='unzip'
alias -s bz2='tar -xjvf'
6.3. 差异
- 我们现在增加系统变量在:/etc/profile 后,输入命令:source /etc/profile 之后,重启服务器发现刚刚的系统变量现在没效果。
- 解决办法:
vim ~/.zshrc
,在该配置文件里面增加一行:source /etc/profile
,然后刷新 zsh 的配置:source ~/.zshrc
。
6.4. 参考资料
- http://macshuo.com/?p=676
- https://aaaaaashu.gitbooks.io/mac-dev-setup/content/iTerm/zsh.html
- http://hackerxu.com/2014/11/19/ZSH.html
- https://blog.phpgao.com/oh-my-zsh.html
- http://www.bkjia.com/Linuxjc/1033947.html
- http://swiftcafe.io/2015/10/31/cafe-time-omz/
- http://swiftcafe.io/2015/12/04/omz-plugin/
- http://www.hackbase.com/article-206940-1.html
- http://hahack.com/wiki/shell-zsh.html
- http://blog.jobbole.com/86820/
- http://uecss.com/zsh-brew-autojump-plugins-shell-for-mac.html
- http://www.cnblogs.com/westfly/p/3283525.html
- http://wdxtub.com/2016/02/18/oh-my-zsh/
6.5. cmder+
修改config下的文件user-aliases.cmd添加
subl="C:\Program Files\Sublime Text 3\sublime_text.exe" $1 -new_console:s75H
7. tmux
tmux是指通过一个终端登录远程主机并运行后,在其中可以开启多个控制台而的终端复用软件。使用了tmux,你就可以在一个终端中同时运行多个会话,只需开启一个终端。
如果只是分隔屏幕,配色的变化,其实客户端item2以及screen就已经很好了。那我们为什么要使用tmux呢?
为什么使用tmux:
- 保持会话: 断开ssh或关闭电脑,你的ssh可以重新连接,能够保持你的工作环境连续性。前提实在服务器端装上tumx
使用tmux会话的分离与连接就可以轻松解决以上问题,分离(detach)可以使终端会话在后台运行,连接(attach)可以重新打开在后台运行的会话,也可以多个终端连接同一会话。
7.1. 安装
Mac
brew install tmux
即可
Linux
yum install tmux
类似命令即可
Windows
Windows下可以使用cygwin来安装 cygwin,cygwin是图形安装界面,请确保在 Select Packages 界面出现时,选中 tmux 即可。
7.2. tmux的基本概念
启动之后,可以看到命令行最底部多了一条绿色的状态条,上面显示了一些信息,比如计算机名和时间等。
Session(会话)
一组窗口的集合,通常用来概括同一个任务。session可以有自己的名字便于任务之间的切换。
Window(窗口)
单个可见窗口。Windows有自己的编号,也可以认为和ITerm2中的Tab类似。
当你新建一个会话的时候,tmux 已经自动给你在新会话中自动创建了一个窗口(Window),窗口的编号从0
开始,名称则默认为当前工作目录或者当前运行的程序,都显示在下方的状态条中。如下图所示,我将工作目录切换到了~/Documents
,窗口0
的名称也随之变换。
Pane(窗格)
tmux 下可以有多个会话,会话下又可以有多个窗口,那么同样,窗口下还可以有多个窗格, 一个窗口可以切分成多个窗格,主要的切分方法有两种,垂直切分和水平切分。
7.3. tmux的基本操作
前置操作(Prefix-Command
),所有下面介绍的快捷键,都必须以前置操作开始。tmux默认的前置操作是CTRL+b
。
会话相关
- 新建会话(create):
tmux new-session -s <会话名称>
ortmux new -s <会话名称>
- 分离会话(detach):
prefix d
,退出tmux但是不关闭掉进程,方便下次进入 - 连接会话(attach):
tmux attach -t <目标会话名>
ortmux a -t <目标会话名>
, 被分离的会话,还可以重新连接上 tmux ls
: 列出所有的会话prefix $
: 重命名当前会话
窗口相关
tmux new -n <窗口名>
: 创建会话的时候附上-n
参数,来给窗口制定一个名称- 新建窗口:
prefix c
- 上一个窗口(previous):
prefix p
- 下一个窗口(next):
prefix n
- 切换到上一个活动的窗口:
prefix space
- 使用窗口号切换:
prefix 窗口号
- 窗口列表:
prefix w
- 关闭一个窗口:
prefix &
- 更改窗口名称:
prefix ,
7.4. 窗格相关
- 查看所有窗格的编号:
prefix q
- 垂直切分(把窗口垂直切分成左右两等分):
prefix %
- 水平切分(把窗口水平切分成上下两等分):
prefix "
- 窗格切换:
prefix o
- 按制定方向切换窗格:
prefix 方向键
- 更改窗格布局:
prefix 空格
, 可以在这五个默认的窗格布局之中轮流切换:- 水平平分(even-horizontal)
- 垂直平分(even-vertical)
- 主窗格最大化,其他窗格水平平分(main-horizontal)
- 主窗格最大化,其他窗格垂直平分(main-vertical)
- 平铺,窗格均等分(tiled)
7.5. 参考资料
Window下cmd命令
1. mklink
mklink 和 ln 的功能几乎一样。就是用来创建符号链接的,这个命令并不知名,使用的人也不多。 mklink 用法:- mklink 只能在命令提示符 “CMD” 中使用。
文件链接
文件夹链接mklink C:\1 D:\a\1.txt mklink C:\1.txt D:\a\1.txt
mklink /d C:\1 D:\a
- mklink /d 与 mklink /j 的异同
从 mklink 的帮助中可以看到,前者是创建目录链接,而后者是创建目录联接。
D:\>mklink /d a C:\a 为 a <<===>> C:\a 创建的符号链接 D:\>mklink /j b C:\a 为 b <<===>> C:\a 创建的联接
- mklink 只能在命令提示符 “CMD” 中使用。
文件链接