熟练使用命令行是一种常常被忽视的技能。但实际上,熟练使用命令行是一个程序员的必备技能。以前端程序员为例,启动项目,停止项目,构建项目都需要命令行。同时,熟练掌握命令行还能提高程序员的生产力。做有些事,用命令行比用图形工具快。如:在
/GitHub/note
下创建文件夹
test
,用命令行只需要输入
cd /GitHub/note && mkdir test
,用图像界面需要点击两次鼠标到
/GitHub/note
下,右击
新建文件夹
再键入内容。
命令行支持上千条命令,本文只选了常用的6组命令和技巧:提升输入命令速度技巧,文件夹与文件操作命令,管道命令,网络命令,字符串操作命令,系统操作命令。
注意:本文介绍的命令记针对的是 Mac OS 系统。
第1组 提升输入命令速度技巧
补全命令
按 tab 键可以补全命令和文件路径。如果按 tab 啥都没发生,表示有超过一个命令或路径满足当前的输入内容,连按两下 tab 查看满足条件的所有命令。
搜索命令记录
输入 ctrl-r 搜索命令记录。
输入上箭头键,显示最近一条执行的命令。按多次上箭头键,看更久的命令。下箭头与上箭头的功能相反。
查看使用文档
用
man
命令来查看某个命令的使用文档。如:
man ls # 查看ls命令文档
man -k ls # 搜索的ls相关的命令
复制
推荐使用在线工具explainshell来看命令的文档。
设置别名
用
alias
来查看和设置别名。通过设置别名,可以很长或难记的命令,变成自定义的别名。例如:
grep
可以加参数
--color=auto
实现搜索结果中高亮显示搜索字符串的功能。但每次使用
grep
都得要自行加上
--color=auto
又显的很麻烦,可以通过下面的命令来设置别名:
alias grep='grep --color=auto'
复制
然后,执行下面的命令使别名生效。
source ~/.bashrc
复制
直接执行
alias
可以查看目前设置的所有的的别名。
快捷键
命令行默认用的是 Emacs 的快捷键。光标移动,删除内容都可以用 Emacs 的快捷键。如:ctrl-a 可以将光标移至行首,ctrl-e 可以将光标移至行尾,ctrl-k 可以删除光标至行尾的所有内容,ctrl-u 可以删除行内光标所在位置之前的内容。
执行下面的命令,可以设置成 vi 风格的快捷键。
set -o vi
复制
改回来
set -o emacs
复制
清屏
可以用命令
clear
来清屏。
第2组,最常用的命令: 文件目录与文件操作命令
文件目录操作
创建
用
mkdir
创建目录。
mkdir 文件夹名
mkdir -p a/b/c # 创建多级目录
复制
进入目录
用
cd
命令来进入目录。很多命令必须进入指定目录才能执行。比如,需要进入
package.json
所在的目录,执行
npm
相关的命令。
cd 目录名称 # 进入指定目录中
cd .. # 进入上级目录
cd / # 进入根路径
cd ~ # 进入工作目录
cd - # 进入上次访问的目录
cd 在Finder中,将目标目录托拽到命令行中
复制
注意:如果目录名称中包含 空格,引号,
[
,
]
,
*
,
|
等特殊字符时,路径需要用
""
把路径包起来。
在 Finder 中打开当前路径
open .
复制
查看当前路径
用
pwd
命令来查看当前路径。
pwd
复制
查看当前路径下的文件
用
ls
命令来查看当前路径下的文件。
ls
ls -a # 显示隐藏文件
ls -l # 查看详细资料,如权限,创建人等
tree # 以树形结构显示目录结构
复制
删除目录
用
rm
命令来删除目录。
rm 文件夹名
rm -r 文件夹名 # 删除该文件夹及包含的文件
复制
移动目录或文件
用
mv
命令来移动目录或文件。
mv 原路径 新路径
复制
文件操作
创建文件
用
touch
命令创建文件。
# 创建
touch 文件名
复制
查看文件
有很多命令可以查看文件。如:
cat 文件名 # 查看文件内容。不支持修改
vi 文件名 # 用 vi 打开。支持直接修改
less 文件名
head 文件名 # 查看文件的开头一行
tail 文件名 # 查看文件的最后一行
复制
通过文件名搜索文件
用
find
命令来通过文件名搜索文件。 具体用法:
find . -name 文件名 # 文件名支持正则
复制
修改文件权限
用
chomd
命令来修改文件的权限。具体用法:
chomd 文件权限 文件路径
复制
查看文件类型
用
file
命令来查看文件类型。如果一个文件缺失了扩展名,那么这个命令可能会非常有用。具体用法:
file 文件路径
复制
如果是图片文件,还会
file
命令的执行结果还会显示图片的尺寸、颜色数等信息。
第3组 管道命令:展示命令行的真正强大之处
管道命令是一种通信机制,它表现出来的形式是将前面命令的输出直接作为下一个命令的输入。
重定向管道
用
|
连接2个命令,可以将
|
左边的命令的运行结果做为输入输出。如:
cat README.md | say # 把 README.md 读出来
history | grep 'git status' -c # 统计指定命令执行了多少次
复制
重定向输出
用
>
或
>>
将命令的执行结果输出到文件。
>
和
>>
的区别是:
>
会覆盖了输出文件而
>>
是在文件末添加。如
tree > output.txt
cat a.txt >> b.txt # 将 a.txt 中的内容追加到 b.txt
复制
第4组 字符串操作命令
通配符
常见的通配符包括:
-
: 匹配任何长度的任何字符。*
-
: 匹配任何单个字符。?
-
: 匹配[]
范围内的字符。[]
搜索字符串
用
grep
命令来搜索字符串。 如:
grep 搜索字符串 文件
grep 搜索字符串 文件 --color=auto #高亮搜索结果
grep 搜索字符串 -n #字符串出现的次数
复制
第5组 系统操作命令
结束当前命令行的执行
yong ctrl-c
杀死进程
kill 进程id
复制
用管理员权限运行命令
sudo 命令
复制
切换帐号
su 帐号
复制
第6组 网络操作
查看ip
ifconfig
复制
看某个ip能不能访问的通
ping ip
复制
端口占用情况
sudo lsof -i :端口号
复制
几个装逼的命令
文字转语音
用
say
命令来将文字转语音。
say 文字内容
复制
在眼睛累的使用,可以把某个文件的内容读处理。命令:
cat README.md | say
复制
显示日历
下面的命令可以显示 上个月,本月,下个月的日历。
cal -3
复制
推荐阅读&参考文档
- 命令行的艺术
- Explainshell 命令的文档。