macOS 下的 Shell
工具推荐:iTerm2,因为比原生的终端好用1w倍,可以支持各种自定义主题,墙裂推荐~ iTerm官网
工具推荐:oh-my-zsh,zsh 解释器的配置管理工具,在 zsh 提供的强大的补全,良好的交互前提下,还提供了主题,插件等等管理功能。 oh-my-zsh、命令列表
macOS 的内核衍生自 FreeBSD,shell 命令也继承了 FreeBSD 的配置。相比之下 Linux Shell 更加灵活,为了用的更爽,我们可以安装 coreutils 来使用 Linux 风格的 Shell,参见博客:macOS 下使用 Linux Shell
常用命令
1.帮助
可以用 man 查看一个命令的文档,甚至可以用 man 查看 man 命令。还可以用 man 查看 zsh,csh 等等。
$ man man
a : find all matching entries
c : do not use cat file
d : print gobs of debugging information
D : as for -d, but also display the pages
f : same as whatis(1)
h : print this help message
k : same as apropos(1)
K : search for a string in all pages
t : use troff to format pages for printing
w : print location of man page(s) that would be displayed
(if no name given: print directories that would be searched)
W : as for -w, but display filenames only
$ man zsh
man 命令可以有很多参数功能很强大,甚至可以修改命令的配置,但是我们用的最多的就是查看命令的文档了。
还可以用 where 命令查看一个命令的文件路径和alias。
可以通过 where 看到 take 是一个函数,cd 是一个 build-in 命令。还可以 where where。
$ where ls
ls: aliased to ls --color=tty
/usr/local/opt/coreutils/libexec/gnubin/ls
/bin/ls
$ where take
take () {
mkdir -p $1
cd $1
}
$ where cd
cd: shell built-in command
/usr/bin/cd
当用 man 查看 where 时,会出现 build-in 的 command 列表,还有 alias,break 等等命令。
2.目录操作
-
查看目录 $ ls
oh-my-zsh 提供的快捷命令 $ l 用 where 可以看到它是 $ ls -lah 的别名。 -
查看当前路径 $ pwd
-
进入父级文件夹 $ cd ..
快捷命令 $ ..,
祖父级文件夹 $ ...,
甚至可以 $......,最多6个~ -
进入用户目录 $ cd ~
快捷命令 $ ~ -
进入根目录 $ cd /
快捷命令 $ / -
返回刚才的文件夹 $ cd -
快捷命令 $ - -
新建文件夹 $ mkdir
创建多级文件夹,如果中间路径的文件不存在会报错,可以加上 $ -p 选项,会自动创建不存在的文件夹。
$ mkdir test/test
mkdir: cannot create directory ‘test/test’: No such file or directory
$ mkdir test/test -p
快捷命令:$ take ,相当于 mkdir -p + cd,创建文件夹及其路径,并进入文件夹
- 删除文件夹:$ rm -rf test,强制递归删除文件夹及其内容。
3.文件操作
- 新建文件 $ touch test.txt
- 查看文件内容 $ cat test.txt,还可以接 grep 进行筛选。
- 重定向
$ ls > test.txt 重定向标准输出到文件,并覆盖原来的内容。
$ ls 2> test.txt 重定向标准错误到文件,并覆盖原来的内容,2代表标准错误。
$ ls >> test.txt 重定向标准输出到文件,并追加到原来的内容后。
$ ls 2>> test.txt 重定向标准错误到文件,并追加到原来的内容后。
$ ls < test.txt 重定向标准输入到文件,并覆盖原来的内容。 - 文件统计
wc 命令,返回文件的行数,词数,字符数。-l 选项,只返回行数。
还可以用 sort 排序内容,uniq 去重。$wc test.txt 7 7 59 test.txt $wc -l test.txt 7 test.txt $cat text.txt | sort | uniq | wc -l 7 test.txt
- 文件查找 $ find directory -name filename,查找 directory 目录下名为 filename 的文件。
可以用正则表达式匹配文件名 $find . -name 'test*'。
设定搜索深度 $find . -name test -maxdepth 1
4.git 命令
oh-my-zsh 提供了很多 git 命令的别名,让经常使用 git 命令提升了很多效率。
如下一些常用 git 操作,缩写后可以接一些选项,例如 $ gc -m'sth'。
git 的 alias 有很多,一时间不能全都记下来,可以用 alias 查看,grep 过滤。
$ alias | grep "git stash"
gsta='git stash save'
gstaa='git stash apply'
gstc='git stash clear'
gstd='git stash drop'
gstl='git stash list'
gstp='git stash pop'
gsts='git stash show --text'
4.快捷键
macOS 下的 iTerm2 基本快捷键与其他应用一致,以下是一些特殊快捷键。
command + R/K,清空屏幕
command + enter,进入/退出全屏
command + D,垂直分屏
command + shift + D,水平分屏
command + U,变换透明度
command + ; ,命令历史
control + A,移动光标到行尾
control + E,移动光标到行尾
control + W,删除光标前的内容
command + K,删除光标后的内容
control + U,删除整行
control + D,删除光标后的字符
5.其他
-
管道,提供命令的链接使用,前一个命令的输出是后一个命令的输入。用 | 表示。
查找ga命令的使用次数:$history | grep 'ga' | wc -
$zsh_stats 查看命令的使用统计。
$history | grep 'git add'
3671 git add test
4112 git add .
- $ps -A 查看所有进程,因为进程较多,一般与grep 连用。
网友评论