image.png
记录一些 mac 端终端相关。

快速打开

command + 空格打开聚焦搜索🔍,输入终端回车即可打开终端。
image.png

终端快捷键

  • Command + K 清屏
  • Command + T 新建标签
  • Command +W 关闭当前标签页
  • Command + S 保存终端输出
  • Command + D 垂直分隔当前标签页
  • Command + Shift + D 水平分隔当前标签页
  • Command + shift + {或} 向左/向右切换标签
  • Ctrl + a跳到行首
  • Ctrl + e跳到行尾
  • Ctrl + d删除一个字符,相当于通常的Delete键(命令行若无所有字符,则相当于exit;处理多行标准输入时也表示eof)
  • Ctrl + h 退格删除一个字符,相当于通常的Backspace键
  • Ctrl + u 删除光标之前到行首的字符
  • Ctrl + k 删除光标之前到行尾的字符
  • Ctrl + c取消当前行输入的命令,相当于Ctrl + Break
  • Ctrl + a 光标移动到行首(Ahead of line),相当于通常的Home键
  • Ctrl + e 光标移动到行尾(End of line)
  • Ctrl + f 光标向前(Forward)移动一个字符位置
  • Ctrl + b 光标往回(Backward)移动一个字符位置
  • Ctrl + l清屏,相当于执行clear命令
  • Ctrl + p 调出命令历史中的前一条(Previous)命令,相当于通常的上箭头
  • Ctrl + n调出命令历史中的下一条(Next)命令,相当于通常的上箭头
  • Ctrl + r 显示:号提示,根据用户输入查找相关历史命令(reverse-i-search)

    次常用快捷键:

  • Alt + f 光标向前(Forward)移动到下一个单词
  • Alt + b 光标往回(Backward)移动到前一个单词
  • Ctrl + w 删除从光标位置前到当前所处单词(Word)的开头
  • Alt + d 删除从光标位置到当前所处单词的末尾
  • Ctrl + y 粘贴最后一次被删除的单词

man 命令

man是一个命令使用指南,在命令行中输入 man 命令名即可获取。

  • 例:想知道 ls这个命令怎么使用,输入man ls 即可进入使用指南页面。

指南往往很长,可以使用▲(上箭头)或▼(下箭头)来上下移动,使用空格来翻页,输入 / 和关键字来按照关键字搜索,按 Q 来退出使用指南页面。
输入 man -k和关键字来对整个使用指南数据库进行搜索。

命令行、文件和路径

注意:终端工具是大小写敏感的,并且对于文件名,必须包括扩展名。

两种路径

绝对路径 和 相对路径

  • 绝对路径:完整描述一个文件的位置,总是以斜杠 / 开头。
    • 例如 /Users/michelle/Public/Drop Box。
  • 相对路径:是指相对于当前的目录,可以通过 pwd 查看当前目录。

    切换到其他路径和目录

    如果想切换到其他目录,需要用到三个命令:pwd、ls 和 cd。

  • pwd :显示当前目录的绝对路径。

  • ls :列出当前目录的内容。
  • cd :切换当前目录到指定的目录。如果不指定,则会返回 home folder。

    处理特殊字符

    如果目录中有特殊字符(空格,括号,引号,[],!,$,&,*,;,|,\),必须使用特殊的语法来表示这些字符。

  • 空格前添加反斜杠 \ :cd Punlic/Drop\ Box/。

  • 也可以用引号的方法:cd “Public/Drop Box”。
  • 也可以把文件从 Finder 拖到 Terminal 窗口来创建绝对路径,特殊字符在拖动后都会自动变成系统可识别的表示方法。

Tab 自动补全,是最能给你节省时间的特性之一,利用它的自动完成文件、目录名称功能还可以防止输入错误。

查看隐藏文件

  • ls 命令会隐藏文件名以 . 开头的文件,利用 -a选项可以显示。
  • 例如:$ ls -la,这里添加了 -l 选项,目的是控制输出格式。
  • 如果你注意输出内容的话,会发现还包括 . 和 .. 两项,它们分别表示当前文件夹和父文件夹(如图)。如果你不想显示这两项,只需要把 -a 改成 -A 即可。

image.png
Terminal ls -la命令

用终端命令管理文件

检视文件
许多基础命令用来定位、检视文件和文件夹,包括 cat, less, which, file 以及 find。

cat

会按顺序读取文件并输出到 Terminal 窗口,语法为 cat 后接你需要查看的文件的路径。
cat 命令也可以用 >> 来增加文本文件的内容,

  • 例如命令 cat textOne.txt >> textTwo.txt,会把 textOne.txt 的内容添加到 textTwo.txt 的结尾。

    less

    适合用来查看长文本文件,因为它可以查找文本。语法为 less 后接文件路径,和 cat 一样。
    可以使用▲(上箭头)或▼(下箭头)来上下移动文本,使用 空格 来翻页,输入 / 和关键字来按照关键字搜索,按 Q 来退出使用指南页面。除此之外,按 V 键来使用 vi 文本编辑器。

    which

    会定位某个命令的文件路径。它会告诉你你执行某个具体命令的时候,在使用哪个文件。
    语法为 which 后接某个命令。
    如图:
    image.png
    终端 which 命令

    file

    会尝试根据文件的内容输出文件类型。如果一个文件缺失了扩展名,那么这个命令可能会非常有用。语法为 file 后接文件路径。
    如图,此例为一个 PNG 文件,还给出了它的尺寸、颜色数等信息。
    image.png
    终端 file命令

    find

    用来根据搜索关键词定位文件路径。 find 命令不使用 Spotlight 搜索服务,但是它允许你设置非常具体的搜索条件,以及通配符(稍后介绍)。
    语法为 find 后接搜索的起始路径,后接定义搜索的选项,后接搜索内容(包含在引号里)。

  • 例如:find Desktop -name “*.png”,意思是查询桌面上以 png 结尾的文件。

  • 注意 如果你要搜索根目录,使用 -x 选项来避免搜索 /Volumes 文件夹。 如果想使用 Soptlight 搜索服务,使用 mdfind 命令后接搜索关键词即可。

    使用通配符

  • 星号(*)——代表任何长度的任何字符。

    • 例如 *.tiff 代表所有格式为tiff的文件。
  • 问号(?)——代表任何单个字符。
    • 例如 b?ok 匹配 book 但是不匹配 brook。
  • 方括号([])——定义一定范围的字符。

    • 例如 [Dd]ocument 匹配 Document 以及 document;doc[1-9] 匹配doc1, doc2, …, doc9。

      使用递归命令

      递归命令可以允许命令不执行于一个特定文件,而是指定的路径下的所有文件。大多数命令包含一个 -r 或者 -R 选项,来设定你想递归地执行这个命令。
  • 例如,添加 -R 后 ls 命令的执行方式:ls -R Public,这会列出 Public 中的所有文件,若有文件夹,则会继续列出文件夹中的内容。

    编辑文件和文件夹

    用来编辑文件和文件夹,包括 mkdir, cp, mv, rm, rmdir 以及 vi。
    mkdir
    用来创建文件夹,

  • 语法为 mkdir 后接新文件夹的目录。

  • 可以用 -p 选项,来一起创建路径中不存在的文件夹。

cp
用来把文件从一处复制到另一处。

  • 语法为 cp 后接原始路径,再接目标路径。
  • 如果你想复制整个文件夹和所有内容,需要添加 -R 选项。
  • 如果指定的目标路径不含文件名,则 cp 命令会按原名复制。
  • 如果指定的目标路径包括文件名,则会复制为你指定的文件名。
  • 如果仅指定新文件名,则会在原处以新名称创建文件副本。
  • 注意,系统会自动替换同名文件而不出现提示。

mv
用来移动文件。

  • 语法为 mv 后接原路径,再接新路径。
  • mv 的指定路径规则与 cp 是一样的(如果仅指定新文件名,它就成了重命名命令)。

rm
永久删除文件。

  • 语法为 rm 后接文件路径。
  • 如果希望安全删除文件,可以使用 srm 命令。
  • rmdir 和 rm -R rmdir是 “remove directory” 的缩写,这个命令会永久删除文件夹。语法为 rmdir 后接希望删除目录的路径。然而,rmdir 命令无法删除含有任何其他文件的文件夹,所以大多数情形下 rmdir 命令是不适用的。不过,你可以利用 rm 添加 -R 选项来删除文件夹及包含的所有文件。

vi
用 vi 打开文本文件,只需要输入 vi 后接文件路径即可。和 less 命令类似,vi 命令会占用整个 Terminal 空间来显示文件内容。

  • 可以使用键盘上的箭头键单纯地浏览文件,想编辑时,按 A 或者 I 开始(进入编辑模式)。文字会插入到光标处。
  • 如果你想保存,需要先退出编辑模式,进入 command 模式,方法是按下 esc 键。
  • 回到 command 模式后,按住 shift 同时按两次 Z 来保存并退出。如果你不想保存,在 command 模式输入 :quit! 并按 return 直接退出。

用终端命令管理系统

使用su来切换用户
su
允许你在命令行中切换到另一个用户账户。

  • 语法为 su 后接用户的短名称。然后会要求你输入密码(但是输入的时候不会显示)。
  • 执行完毕后,命令的前缀会改变,表示你拥有其他用户的权利。
  • 可以利用 who -m 命令来验证当前登陆的身份。切换后,你会一直保持该用户身份,直至退出 Terminal 或者输入 exit 命令。

关于sudo的使用

  • sudo概述

用 sudo 执行一个命令会使用 root 账户权限。当然,使用之前需要 administrator 账户(管理员账户)的授权(输入密码)。

  1. $ cat secret.txt
  2. cat: secret.txt: Permission denied
  3. $ sudo cat secret.txt
  4. Password:
  5. This is the contents of the secret.txt text file that the user account renfei does not normally have access permissions to read. However, because he is an administrative user, she can use the sudo command to envoke root user access and read the contents of this file.

提示:如果由于你忘了使用 sudo 而导致命令行返回一个错误,只需输入 sudo !! 就可以用 sudo 来执行上一条指令。

  • 使用 sudo 切换 Shell
  • 如果你是一个管理员用户,你需要执行很多条需要 root 权限的命令,你可以临时切换整个命令行 shell 来取得 root 级别的访问权限。方法就是先输入 sudo -s,回车后再键入你的密码。

    其他 终端技巧提示

  • 输入命令 open . 可以打开当前的位置。

  • 在 Terminal 的偏好里面可以设定它的外观和风格。
  • 中止一个正在执行的命令,可以使用组合键 control + C。
  • 在执行前编辑命令,只需要使用箭头和键盘上的其他字母。
  • 没有输入任何命令时,你可以用▲和▼来浏览历史命令。同样可以编辑和再次执行。
  • 你也可以使用history命令查看历史记录。
  • 你可以使用组合键 control + L 清屏。

对文件进行操作

下载文件

  1. sudo curl -O 文件路径

解压文件

  1. sudo tar -zxvf 文件名称

重命名文件夹

  1. sudo mv 源文件夹名称/ 修改后的名称

打开文件或文件夹

  1. open /文件路径

总结

目录操作


命令名 功能描述 使用举例
mkdir 创建一个目录 mkdir dirname
rmdir 删除一个目录 rmdir dirname
mvdir 移动或重命名一个目录 mvdir dir1 dir2
cd 改变当前目录 cd dirname
pwd 显示当前目录的路径名 pwd
ls 显示当前目录的内容 ls -la
dircmp 比较两个目录的内容 dircmp dir1 dir2

文件操作


命令名 功能描述 使用举例
cat 显示或连接文件 cat filename
pg 分页格式化显示文件内容 pg filename
more 分屏显示文件内容 more filename
od 显示非文本文件的内容 od -c filename
cp 复制文件或目录 cp file1 file2
rm 删除文件或目录 rm filename
mv 改变文件名或所在目录 mv file1 file2
ln 联接文件 ln -s file1 file2
find 使用匹配表达式查找文件 find . -name “*.c” -print
file 显示文件类型 file filename
open 使用默认的程序打开文件 open filename

选择操作


命令名 功能描述 使用举例
head 显示文件的最初几行 head -20 filename
tail 显示文件的最后几行 tail -15 filename
cut 显示文件每行中的某些域 cut -f1,7 -d: /etc/passwd
colrm 从标准输入中删除若干列 colrm 8 20 file2
paste 横向连接文件 paste file1 file2
diff 比较并显示两个文件的差异 diff file1 file2
sed 非交互方式流编辑器 sed “s/red/green/g” filename
grep 在文件中按模式查找 grep “^[a-zA-Z]” filename
awk 在文件中查找并处理模式 awk ‘{print $1 $1}’ filename
sort 排序或归并文件 sort -d -f -u file1
uniq 去掉文件中的重复行 uniq file1 file2
comm 显示两有序文件的公共和非公共行 comm file1 file2
wc 统计文件的字符数、词数和行数 wc filename
nl 给文件加上行号 nl file1 >file2

安全操作


命令名 功能描述 使用举例
passwd 修改用户密码 passwd
chmod 改变文件或目录的权限 chmod ug+x filename
umask 定义创建文件的权限掩码 umask 027
chown 改变文件或目录的属主 chown newowner filename
chgrp 改变文件或目录的所属组 chgrp staff filename
xlock 给终端上锁 xlock -remote

编程操作


命令名 功能描述 使用举例
make 维护可执行程序的最新版本 make
touch 更新文件的访问和修改时间 touch -m 05202400 filename
dbx 命令行界面调试工具 dbx a.out
xde 图形用户界面调试工具 xde a.out

进程操作


命令名 功能描述 使用举例
ps 显示进程当前状态 ps u
kill 终止进程 kill -9 30142
nice 改变待执行命令的优先级 nice cc -c *.c
renice 改变已运行进程的优先级 renice +20 32768

时间操作


命令名 功能描述 使用举例
date 显示系统的当前日期和时间 date
cal 显示日历 cal 8 1996
time 统计程序的执行时间 time a.out

网络与通信操作


命令名 功能描述 使用举例
telnet 远程登录 telnet hpc.sp.net.edu.cn
rlogin 远程登录 rlogin hostname -l username
rsh 在远程主机执行指定命令 rsh f01n03 date
ftp 在本地主机与远程主机之间传输文件 ftp ftp.sp.net.edu.cn
rcp 在本地主机与远程主机 之间复制文件 rcp file1 host1:file2
ping 给一个网络主机发送 回应请求 ping hpc.sp.net.edu.cn
mail 阅读和发送电子邮件 mail
write 给另一用户发送报文 write username pts/1
mesg 允许或拒绝接收报文 mesg n

Korn Shell 命令


命令名 功能描述 使用举例
history 列出最近执行过的 几条命令及编号 history
r 重复执行最近执行过的 某条命令 r -2
alias 给某个命令定义别名 alias del=rm -i
unalias 取消对某个别名的定义 unalias del