logo
Published on

记录自己经常忘记的 Linux 命令

Authors

Linux 的部分命令对于个人来说在工作中很少接触到,同时 MacOS 对于一些命令的附加参数也与 Linux 大相径庭。所以特地在此记录一下自己总是忘记具体用法的一些命令。

sort

对文件进行排序。

选项说明
-k指定要分隔的列。 您可以指定多个列
-n要求进行数字排序。
-o file将排序结果保存到指定的文件中。
-t指定分隔符,要求相应文件的内容必须是以规则分隔的列内容,否则无法正确排序。
-r将结果的顺序颠倒。 与 -n 选项一起使用,按从大到小的顺序进行排序。
-u排序后删除重复项。 相当于 `sort file

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

以后随用随补充