Command-Line Interface
本篇仅收集记录 常用的命令行,及在具体场景中的使用,并不对它们进行详细介绍。
拷贝
拷贝一个文件
将 file.txt
拷贝到 documents/
目录下
cp file.txt documents/
拷贝一个目录
把 music/
整个目录拷贝到 media/
目录下
cp -a music media/
# 或者写成
cp -a music/ media/music/
创建文件副本
从 file.txt
创建副本 file.bak.txt
cp file.txt file.bak.txt
# 或者写成
cp file{,.bak}.txt
创建目录副本
从 music/
创建副本
cp -a music/ media/
# 如果 media 目录不存在
cp -a music media/
移动
移动文件
将 file.txt
移动到 documents/
目录下
mv file.txt documents/
# 不要忽略 document 后面的 `/`,不然会被当成重命名文件
重命名文件
将 file.txt
重命名为 readme.md
mv file.txt readme.md
移动目录
将 目录 music/
移动到 media/
目录下
mv music media/
# 或者写成
mv music/ media/music
重命名目录
将 目录 music/
重命名为 media/
mv music/ media/
合并目录文件
将 images/
目录合并到 images2/
目录中
# -a 相当于 -rlptgoD , 表示归档,同名文件会被覆盖
rsync -a images/ images2/
创建
创建文件
创建 file.txt
touch file.txt # 如果文件存在,则更新它的权限和修改时间
# 或者使用
> file.txt # 如果文件存在,则会清空文件内容
创建目录
创建 music/
目录
mkdir music
# 创建一连串的文件夹
mkdir -p media/music/rock
查看信息
文件和目录大小
du -sh node_modules/
文件信息
stat -x file # MacOS
stat file # Linux
文件内容
查看文件内容
cat file.txt
# 如果文件太大,可以使用 `less` 来一次查看一页内容
less file.txt
目录文件
查看目录中的文件
ls folder
# -l: 以列表格式显示. -a: 显示包括隐藏文件的所有文件. -la 结合以上两个选项.
ls -la folder
# -r: 倒序显示. -t: 按修改时间排序. -h: 以易读的格式显示大小.
ls -alrth folder
显示目录下所有文件和子目录的文件树
tree folder # Linux
find . -print | sed -e 's;[^/]*/;|____;g;s;____|; |;g' # MacOS
# 也可以在 MacOS 上使用 `brew install tree` 安装 `tree` 命令行工具
打开文件
使用默认程序打开文件
xdg-open file # Linux
open file # MacOS
start file # Windows
在任意程序中打开文件
open -a appName file
删除
删除一个文件
删除 file.txt
rm file.txt
删除一个目录
删除 music/
目录
rm -r music
解压缩
压缩整个目录
将 目录 music/
压缩到 archive.zip
zip -r archive.zip music
解压文件
将 archive.zip
解压
unzip archive.zip
速览压缩文件
速览压缩包中的文件
zipinfo archive.zip
# 或者
unzip -l archive.zip
搜索
找出陈旧文件
找出所有最近一次修改在 5 天之前的文件
find folder -mtime +5
检索文件内容
grep -i "music" file.txt
grep
能在文件中检索特定内容,一些常见的配套命令行参数:
-i
:大小写敏感-A/-B/-C <N>
:顺带显示前后文,-A
表示后面 N 行,-B表示前面 N 行,-C
表示前后各 N 行-E
:使用正则表达式来匹配-v
:反选(输出不匹配的行)-l
:只输出能匹配到内容的文件名-F
:不要将检索内容视为正则表达式-r
:递归匹配目录下所有文件的内容-o
:只输出匹配上了的部分(而不是整行)-a
:也对二进制文件进行检索,而不是忽略它们!
强制退出程序
killall program_name
网络
服务器响应
curl -i https://pengzhanbo.cn
检查域名/地址连接
检查域名或者地址某端口是否能够连接
nc -vz pengzhanbo.cn 443
nc -vz 1.1.1.1 443
域名DNS配置
dig pengzhanbo.cn
域名所有人和注册信息
whois pengzhanbo.cn
热键
Ctrl + A
跳转到你当前编辑的命令行行首Ctrl + E
跳转到你当前编辑的命令行行尾Ctrl + L
清屏,和 clear 指令类似Ctrl + U
清除行中光标之前的内容(在行尾时即清除整行)Ctrl + H
和退格一样Ctrl + R
能让你搜索之前使用过的命令行记录Ctrl + C
强制停止当前的程序Ctrl + D
退出当前 shell (壳层/命令行界面)Ctrl + Z
将当下运行的程序挂起,使用 fg 来恢复运行Ctrl + W
删除光标前的一个词Ctrl + K
清除行中光标之后的内容Ctrl + T
交换光标前两个字符Esc + T
交换光标前两个词Alt + F
将光标移至行内下一个词处Alt + B
将光标移至行内上一个词处Tab
自动补全文件/目录的名称
MacOS
!! # 再一次执行上一条指令
sudo !! # 以管理员身份执行上一条指令
!<word> # 加上特定命令行前缀再执行上一条指令
!<word>:p # 显示上一条指令加上前缀,但不要执行
<space>command # 执行指令,但不要存到历史记录中
echo "ls -l" | at midnight # 在特定时间执行指令
caffeinate -u -t 3600 # 接下来一小时内阻止你的mac休眠
ls -lhs # 将目录中文件按大小排序显示
qlmanage -p <file> # 从命令行调用"速览"
top -o vsize # 查看是什么拖慢了你的mac