表签


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,找到 rootyoumeek 各自开头的那一行,比如 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. 资料

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 updatebrew 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
  • QQ
  • 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 是安装的。
    • oh-my-zsh 安装
  • 插件推荐:
    • 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,找到下图的地方,怎么安装,原作者注释写得很清楚了,如果你没特别的喜欢那就选择随机吧。
    • oh-my-zsh 安装
  • 配置好新主题需要重新连接 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. 参考资料

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 <会话名称> or tmux new -s <会话名称>
  • 分离会话(detach): prefix d,退出tmux但是不关闭掉进程,方便下次进入
  • 连接会话(attach): tmux attach -t <目标会话名> or tmux 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命令


  • mklink 和 ln 的功能几乎一样。就是用来创建符号链接的,这个命令并不知名,使用的人也不多。 mklink 用法: 图1
    1. mklink 只能在命令提示符 “CMD” 中使用。 文件链接
      mklink C:\1  D:\a\1.txt
      mklink C:\1.txt  D:\a\1.txt
      
      文件夹链接
      mklink /d C:\1  D:\a
      
    2. mklink /d 与 mklink /j 的异同 从 mklink 的帮助中可以看到,前者是创建目录链接,而后者是创建目录联接
      D:\>mklink /d a C:\a
      为 a <<===>> C:\a 创建的符号链接
      D:\>mklink /j b C:\a
      为 b <<===>> C:\a 创建的联接
      
      图2

results matching ""

    No results matching ""