CLI笔记本

有了 CLI,还要什么 GUI

拷贝一个文件

readme.txt 拷贝到 documents 目录下

$ cp readme.txt documents/

创建文件副本

$ cp readme.txt readme.bak.txt

更高级的写法:

$ cp readme{,.bak}.txt

拷贝一个目录

myMusic 整个目录拷贝到 myMedia 目录下面

$ cp -a myMusic myMedia/
# 或者你也可以写成
$ cp -a myMusic/ myMedia/myMusic/

创建目录副本

$ cp -a myMusic/ myMedia/
# 如果 `myMedia` 文件夹不存在的话
$ cp -a myMusic myMedia/

移动一个文件

$ mv readme.txt documents/

一定 要在移动文件时在目标目录的最后加上斜杠/

重命名文件

$ mv readme.txt README.md

移动一个目录

$ mv myMedia myMusic/
# 或者也可以写成
$ mv myMedia/ myMusic/myMedia

重命名目录

$ mv myMedia/ myMusic/

合并目录文件

$ rsync -a /images/ /images2/   # 注: 当心!!同名的文件会被覆盖掉!

创建新文件

$ touch 'new file'    # 如果文件已经存在,会更新它的权限和修改日期
# 或者也可以用
$ > 'new file'        # 注: 如果文件已经存在,会清空里面内容

创建新目录

$ mkdir 'untitled folder'
# 或者可以用下面这样的写法新建一连串文件夹
$ mkdir -p 'path/may/not/exist/untitled\ folder'

显示文件或目录大小

$ du -sh node_modules/

显示文件或目录其他信息

$ stat -x readme.md   # macOS 系统
$ stat readme.md      # Linux 系统

用默认程序打开文件

$ xdg-open file   # Linux 系统
$ open file       # MacOS 系统

压缩整个目录

$ zip -r archive_name.zip folder_to_compress

解压目录的压缩包

$ unzip archive_name.zip

速览压缩包中文件

$ zipinfo archive_name.zip
# 或者也可以用
$ unzip -l archive_name.zip

删除一个文件

$ rm my_useless_file

非常重要:rm 指令会把 my_useless_file 永久删除,和把它移到回收站后再点 清空回收站 一样的效果!

删除一个目录

$ rm -r my_useless_folder

显示目录中文件

$ ls my_folder        # 简简单单
$ ls -la my_folder    # -l: 以列表格式显示. -a: 显示包括隐藏文件的所有文件. -la 结合以上两个选项.
$ ls -alrth my_folder # -r: 倒序显示. -t: 按修改时间排序. -h: 以易读的格式显示大小.

显示目录下所有文件和子目录的文件树

$ tree                                                        # Linux 系统
$ find . -print ' sed -e 's;[^/]*/;'____;g;s;____'; ';g'      # MacOS 系统
# 注: 安装 homebrew (https://brew.sh) 后能让你在 MacOS 上也能用(部分) Linux 的功能(比如 tree). 安装方法见下
# brew install tree

找出陈旧文件

找出所有最近一次修改在 5 天之前的文件

$ find my_folder -mtime +5

显示日历

显示一个文本风格的日历

$ cal

显示特定月份和年份的日历

$ cal 11 2018

计算未来日期

查看今天的日期

$ date +%m/%d/%Y

$ date -d "+7 days"    # Linux 系统
$ date -j -v+7d        # MacOS 系统

使用计算器

$ bc

强制退出应用程序

$ killall program_name

查看服务器响应

curl -i umair.surge.sh
# curl 指令的 -i (--include) 选项会在让它输出中包含 HTTP 的响应头.

查看文件内容

$ cat apps/settings.py
# 如果文件太大,一页显示不下的话,你可以使用一个"翻页软件" (less) 来一次查看一页内容
$ less apps/settings.py

检索文本内容

$ grep -i "Query" file.txt

说明:grep能在文件中检索特定内容

  • -i:大小写敏感
  • -A/-B/-C <N>:顺带显示前后文,-A表示后面 N 行,-B表示前面 N 行,-C表示前后各 N 行
  • -E:使用正则表达式来匹配
  • -v:反选(输出不匹配的行)
  • -l:只输出能匹配到内容的文件名
  • -F:不要将检索内容视为正则表达式
  • -r:递归匹配目录下所有文件的内容
  • -o:只输出匹配上了的部分(而不是整行)
  • -a:也对二进制文件进行检索,而不是忽略它们!

你也可以用别的一些指令来替代grep,比如ackagripgrep(更适合检索代码文本)

查看磁盘大小

$ df -h

查看计算机性能

$ top

技巧小贴士

给 macOS 用户准备的,但是bash命令行环境应该也会有别的

$ !!                            # 再一次执行上一条指令
$ 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

热键

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       自动补全文件/目录的名称
作者

Wiley

发布于

2022-07-02

更新于

2024-05-26

许可协议