这篇笔记记录一些不属于 GNU Coreutils 但是比较常用的 Linux CLI 软件的简单用法。
网络
curl
下载文件。
curl [-fsSLO46] [-o <file>] [-m <timeout>] <url>
-f
页面未找到(404
)时输出错误。-s
不显示进度和错误信息。-S
和-s
一起用,不显示进度但显示错误。-L
允许重定向。-o <file>
保存到指定文件而不是输出到终端。-O
按照 URL 保存到文件。-m <timeout>
超时时长。-4
/-6
: 将域名解析为 IPv4 还是 IPv6。
高级用法
cURL 除了可以用来下载文件,更是一个能发送各种 HTTP 请求的工具。
curl [-X<method>] [-H '<header>: <value>'] [-b '<cookie>=<value>'] [-c <file>] <url>
-X<method>
: HTTP 请求方法。<method>
:GET
,POST
,PUT
,DELETE
,HEAD
-H '<header>: <value>'
: 设置 HTTP 头。-b '<cookie>=<value>'
: 设置 cookie。-c <file>
: 将 cookie 储存在网景 cookie jar 类型文件<file>
中。
POST
当这些参数被设置时,cURL 会自动选择使用 POST
方法,并设置 Content-Type
。
curl [-F '<field>=<content>'] [-d '<field>=<content>'] [-b <body>] <url>
-F '<field>=<content>'
: 以multipart/form-data
格式发送POST
请求。<content>
中可以使用@<file>
来指定读取文件内容发送。-d '<field>=<content>'
: 以application/x-www-form-url-encoded
格式发送POST
请求。-b <body>
: 直接发送该内容。
wget
wget [-mq] [-o <file>] [-T <timeout>] <url>
-m
: 递归地爬取网站页面,可用于归档网站。-q
: 安静。-o <file>
: 保存到指定文件。默认按照 URL 保存文件,使用-o -
输出到终端。-T <timeout>
: 超时时长。
dig
DNS lookup utilty.
dig [@<NS>] <domain> [+short] [<type>]
@<NS>
: 查询的 DNS 服务器+short
: 仅输出记录内容<type>
:TXT
,NS
,A
,AAAA
,CNAME
,CAA
,AXFR
nmap
网络探测以及网络安全检测。
nmap [-p<start>-<end>] <cidr>
-p<start>-<end>
: 端口范围
proxychains
将代理用到任意程序上。用法:
proxychains <program> [args]
配置文件在 /etc/proxychains.conf
。
交互
tmux
tmux 是一个 shell host,使用 tmux 可以复用同一个 shell。正常情况下是 shell -> terminal,有了 tmux 后是 shell -> tmux -> terminal。
tmux detach
离开这个 shell(但没有终止)。tmux attach
继续那个 shell。
配置文件(rc)在 ~/.tmux.conf
。
由于 apt 升级过程中会出现很多 ncurse TUIs 需要手动作出选择,所以我喜欢在 tmux 中升级。这样万一 ssh 断开后出现一个 TUI,我还能 attach 上那个 session 继续操作。
包管理器
pacman
-S <package>
安装包-S
-s <package>
搜索包-i <package>
显示包信息-y
更新源-y
强制更新源
-u
更新所有包(更新系统)
-R <package>
移除包(不要使用)-R
-s <package>
移除包和它依赖而其他程序不依赖的包-c <package>
移除包和依赖它的包-n <package>
同时删除包中在文件系统上被修改的文件(e.g. 配置文件)我一般直接用
-Rsunc <package>
。
-Q [<package>]
查找已安装的包-Q
-l <package>
列出一个包的内容-o <file>
列出哪个包拥有这个文件-m
列出不是从源中安装的包(AUR 以及你下载的.pkg.tar.xz
包)-q
安静点
apt
install <package>
安装search <package>
搜索包list [<package>]
列出源中包,未指定则为所有包--installed
已安装的--upgradable
可更新的
show
显示包详细信息update
更新源upgrade [<package>]
更新包,如果未指定则更新所有包
dpkg
-L <package>
列出包内容-S <file>
搜索包含某文件的包