Linux 的部分命令对于个人来说在工作中很少接触到,同时 MacOS 对于一些命令的附加参数也与 Linux 大相径庭。所以特地在此记录一下自己总是忘记具体用法的一些命令。
sort
对文件进行排序。
选项 | 说明 |
---|---|
-k |
指定要分隔的列。 您可以指定多个列 |
-n |
要求进行数字排序。 |
-o file |
将排序结果保存到指定的文件中。 |
-t |
指定分隔符,要求相应文件的内容必须是以规则分隔的列内容,否则无法正确排序。 |
-r |
将结果的顺序颠倒。 与 -n 选项一起使用,按从大到小的顺序进行排序。 |
-u |
排序后删除重复项。 相当于 sort file | uniq 。 |
apropos whatis
与 man
的功能类似,都适用于查看相关命令的选项。
unalias
用于解除别名命令,与 alias
相反
type
用于显示指定命令的类型
$ type cd
cd is a shell builtin
xattr
查看文件的额外属性。
例如在 MacOS 中,从互联网上下载的 App 大多数都会被标记上 com.apple.quarantine
的属性,用于隔离非安全的软件。此时需要删掉这个属性,让 App 正常运行:sudo xattr -rd com.apple.quarantine /Applications/xxxx.app
选项 | 说明 |
---|---|
-r |
递归操作 |
-d |
删除属性 |
xargs
将标准输入(stdin)转换为命令行参数。它可以将输入数据传递给其他命令。
$ <command1> | xargs <command2>
例如使用 find
命令与 xargs
结合,将所有日志文件删除:
find . -name "*.log" | xargs rm
# 当然,这里还是要说明一下,`find` 方法自带 `-exec` 参数也可以实现同样的功能:
# find . -name "*.log" -exec rm {} \;
选项 | 说明 |
---|---|
-n |
指定每次执行命令时传递的参数数量 |
-d |
使用指定的定界符分隔输入(默认为空格或换行)。 |
$ cat urls.txt | xargs -n 1 curl -O # 将文件下载指定文件里面的所有 url 下载
$ echo "file1.txt|file2.txt|file3.txt" | xargs -d '|' rm # 以 `|` 作为分隔删除这些名称的文件
pstree
以树状样式显示进程
选项 | 说明 |
---|---|
-p |
显示进程的 PID |
-n |
按 PID 对输出进行排序 |
-h |
亮显示正在运行的进程 |
-u |
显示 uid 转换 |
lsof
用于列出当前系统中打开的文件,平常个人使用最多的还是查看端口号的占用:
$ lsof -i :22
实际上,losf
的功能十分强大,由于在 Unix 和 Linux 系统中,几乎所有东西(包括网络套接字和设备)都被视为文件,因此 lsof
可以用来监视各种系统资源。
选项 | 说明 |
---|---|
-p |
显示某个进程打开的文件 |
-u |
显示某个用户打开的文件 |
-i |
显示某个网络协议的连接 tcp 或者是某个网络端口的连接 :22 或者是某个 IP 的连接 @127.0.0.1 |
+D |
显示某个文件夹下打开的文件 |
To Be Continued
以后随用随补充