tldr的安装与应用
安排python3
yum install -y python3 python3-pip
更新pip
python3 -m pip install -ihttps://pypi.tuna.tsinghua.edu.cn/simple--upgrade pip
永久设置pip源
pip3 config set global.index-urlhttps://pypi.tuna.tsinghua.edu.cn/simple
安装tldr
pip3 install tldr
生成本地帮助的缓存
tldr -u
tldr的使用
文件与目录操作
[root@z ~]# tldr ls
ls
列出目录中的内容。 更多信息:https://www.gnu.org/software/coreutils/manual/html_node/ls-invocation.html.
列出目录中的文件,每个档案占一行: ls -1
列出包含隐藏材料的所有文件: ls [-a|--all]
列出所有文件,倘若是目录,则在目录名后面加上「/」: ls [-F|--classify]
列出包含隐藏文件的所有文件信息,包括权限,所有者,大小和修改日期: ls [-la|--all -l]
列出所有文件信息,大小用人类可读的单位表示(KiB, MiB, GiB): ls [-lh|-l --human-readable]
列出所有文件信息,按大小降序排序: ls -lSR|-lS --recursive
列出所有文件信息,按修改日期从旧到新排序: ls [-ltr|-lt --reverse]
只列出目录: ls [-d|--directory] */
[root@z ~]# tldr cd
cd
更改当前工作目录。 更多信息:https://manned.org/cd.
转到指定目录: cd 路径/到/目录
转到当前目录的父目录: cd ..
转到当前用户的主(home)目录: cd
转到指定用户的主(home)目录: cd ~用户名
转到刚才选择的目录: cd -
转到根目录: cd /
[root@z ~]# tldr rm
rm
删除文件或目录。 更多信息:https://www.gnu.org/software/coreutils/manual/html_node/rm-invocation.html.
从任意位置删除文件: rm 路径/到/文档 路径/到/另一个/档案 ...
交互式地删除多个文件,每次删除前都会有提示: rm -i 文件(们)
以粗略模式删除文件,为每个被删除的文件打印一条信息: rm -v 路径/到/目录/*
递归删除一个目录及其所有子目录: rm -r 路径/到/目录
[root@z ~]# tldr cp
cp
复制档案和目录。 更多信息:https://www.gnu.org/software/coreutils/manual/html_node/cp-invocation.html.
复制一个文件到另外一个地方: cp 文件的原始路径 文件的目标路径
复制一个文档到另外一个目录, 保持文件名不变: cp 记录的原始路径 目标目录路径
目标目录存在,目录被复制到目标目标内部): cp [-r|--recursive] 目录的原始路径 目标目录路径就是递归的复制一个目录内的内容到另外一个地方(要
以详细模式递归的复制一个目录 (当文件被复制的时候显示): cp [-vr|--verbose --recursive] 资料的原始路径 目标目录路径
以交互模式复制文本文件到另外一个地方(在覆盖之前提示用户): cp [-i|--interactive] *.txt 目标目录路径
跟踪软连接复制: cp [-L|--dereference] 链接 目标目录路径
启用原始资料的全路径,在复制的时候目录不存在则离开创建: cp --parents 材料的原始路径 文件的目标路径
[root@z ~]# tldr mv
mv
移动或重命名文件或目录。 更多信息:https://www.gnu.org/software/coreutils/manual/html_node/mv-invocation.html.
重命名文件或目录,当目标不是一个已存在的目录时: mv 路径/到/源 路径/到/目标
将资料或目录移动到已存在的目录中: mv 路径/到/源 路径/到/已存在的目录
将多个材料移动到已存在的目录中,并保持文件名不变: mv 路径/到/源1 路径/到/源2 ... 路径/到/已存在的目录
覆盖现有文档前无需确认: mv [-f|--force] 路径/到/源 路径/到/目标
无论是否有资料权限,覆盖现有文件前均需确认: mv [-i|--interactive] 路径/到/源 路径/到/目标
不覆盖现有的目标档案: mv [-n|--no-clobber] 路径/到/源 路径/到/目标
在详细模式下移动文件,移动后显示文件的信息: mv [-v|--verbose] 路径/到/源 路径/到/目标
指定目标目录,以便采用外部工具来收集可移动的文件: find /var/log -type f -name '*.log' -print0 | xargs -0 mv --target-directory 路径/到/目标目录
[root@z ~]# tldr mkdir
mkdir
创建目录并设置其权限。 更多信息:https://www.gnu.org/software/coreutils/manual/html_node/mkdir-invocation.html.
创建特定目录: mkdir 路径/到/目录1 路径/到/目录2 ...
根据需要创建特定目录及其父目录: mkdir [-p|--parents] 路径/到/目录1 路径/到/目录2 ...
创建具有特定权限的目录: mkdir [-m|--mode] rwxrw-r-- 路径/到/目录1 路径/到/目录2 ...
[root@z ~]# tldr rmdir
rmdir
删除一个目录。 更多信息:https://www.gnu.org/software/coreutils/manual/html_node/rmdir-invocation.html.
删除空目录,使用
rm -r
删除非空目录: rmdir 路径/到/目录删除目标及其父目录(对嵌套的目录有用): rmdir -p 路径/到/目录
[root@z ~]# tldr tar
tar
归档实用程序。 通常与压缩方法结合使用,例如 gzip
或 bzip2
. 更多信息:https://www.gnu.org/software/tar.
创建存档并将其写入文件: tar cf 目标文件.tar 路径/到/文件1 路径/到/文件2 ...
创建一个 gzip 压缩文件并将其写入文件: tar czf 目标文件.tar.gz 路径/到/文件1 路径/到/材料2 ...
应用相对路径从目录创建一个 gzip 压缩文件: tar czf 目标文件.tar.gz --directory=路径/到/目录 .
详细地将(压缩的)存档文件提取到当前目录中: tar xvf 源文件.tar[.gz|.bz2|.xz]
将(压缩的)存档文件解压缩到目标目录中: tar xf 源文件.tar[.gz|.bz2|.xz] --directory=目标目录
创建压缩存档并将其写入文件,采用文件扩展名自动确定压缩程序: tar caf 目标文件.tar.xz 路径/到/材料1 路径/到/资料2 ...
详细列出 tar 资料的内容: tar tvf 源文件.tar
从存档文件中提取与模式匹配的文件: tar xf 源文件.tar --wildcards "*.html"
[root@z ~]# tldr zip
zip
将文件打包并压缩(存档)为 zip 档案。 更多信息:https://manned.org/zip.
递归地打包和压缩文件和目录: zip -r 压缩文件.zip 路径/到/文件 路径/到/目录1 路径/到/目录2
添加到压缩档案中并排除不需要的文件: zip -r 压缩文件.zip 路径/到/目录 -x 路径/到/不需要的记录
使用最高压缩级别 9 压缩目录和内容: zip -r -9 压缩文件.zip 路径/到/目录
创建一个加密压缩档案(将会提示输入密码): zip -e -r 压缩文件.zip 路径/到/目录
将记录添加到现有的 zip 文件: zip 压缩文件.zip 路径/到/文件
从现有 zip 文件中删除文件: zip -d 压缩文件.zip "foo/*.tmp"
将指定目录及其内容打包并拆分为多个 zip 文件(例如:若干个 3 GB 的 zip 包): zip -r -s 3g 压缩文件.zip 路径/到/目录
列出指定压缩档案中的文件(不提取资料): zip -sf 压缩文件.zip
[root@z ~]# tldr unzip
unzip
从 Zip 压缩包中提取文件或目录。 参见:zip
. 更多信息:https://manned.org/unzip.
将指定压缩包中的所有材料和目录提取到当前目录下: unzip 路径/到/压缩文件1.zip 路径/到/压缩文件2.zip ...
将压缩包中的所有文件和目录提取到指定目录下: unzip 路径/到/压缩文件1.zip 路径/到/压缩文件2.zip ... -d 路径/到/输出目录
将压缩包中的文件和目录提取到
stdout
(标准输出)中: unzip -c 路径/到/压缩文件1.zip 路径/到/压缩文件2.zip ...提取文件内容及文件名到
stdout
(标准输出)中: unzip -O gbk 路径/到/压缩文件1.zip 路径/到/压缩文件2.zip ...在不进行解压缩的情况下,列出指定压缩包中的内容: unzip -l 路径/到/压缩文件.zip
从指定压缩包中提取特定文件: unzip -j 路径/到/压缩文件.zip 路径/到/材料1 路径/到/文件2 ...
材料查看与编辑
[root@z ~]# tldr cat
cat
打印和连接文件。 更多信息:https://www.gnu.org/software/coreutils/manual/html_node/cat-invocation.html.
将文件内容打印到
stdout
: cat 路径/到/文件将多个文件连接到一个输出文件: cat 路径/到/文件1 路径/到/文件2 ... > 路径/到/输出文件
将多个文件附加到输出材料: cat 路径/到/记录1 路径/到/文件2 ... >> 路径/到/输出文件
将
stdin
写入文件: cat - > 路径/到/文件表明带有行号的所有行: cat [-n|--number] 路径/到/档案
显示不可打印字符和空白字符(如果非 ASCII,则带有
M-
前缀): cat [-vte|--show-nonprinting -t -e] 路径/到/文件
[root@z ~]# tldr more
more
以交互方式显示文件,允许滚动和搜索。 另请参阅:less
。 更多信息:https://manned.org/more.
打开文件: more 路径/到/材料
表现特定行: more +行号 路径/到/文件
转到下一页: <空格键>
搜索字符串(按
<n>
转到下一个匹配项): </>关键字<Enter>退出: <q>
显示有关交互式命令的帮助: <h>
[root@z ~]# tldr less
less
打开一个档案进行交互式阅读,允许滚动和搜索。 更多信息:https://greenwoodsoftware.com/less/.
打开一个文件: less 路径/到/文件
向下/向上翻页: <Space>|<b>
转到记录末尾/开头: <G>|<g>
向前搜索字符串(按
<n>
/<N>
转到下一个/上一个匹配项): </>关键字向后搜索字符串(按
<n>
/<N>
转到下一个/上一个匹配项): <?>关键字跟踪当前打开的文档的输出: <F>
在编辑器中打开当前文件: <v>
退出: <q>
[root@z ~]# tldr vim
vim
Vi IMproved,一个程序员的文本编辑器,提供为不同类型的文档修改设计的多种模式。 按 i
进入插入模式。Esc
返回正常模式,正常模式允许使用 Vim 命令。 更多信息:https://www.vim.org.
打开文档: vim 文件
打开文件的指定行数: vim +行数 文件
查看 Vim 的使用说明: <:>help<Enter>
保存并退出: <Esc><Z><Z>|<Esc><:>x<Enter>|<Esc><:>wq<Enter>
撤销上一个操作: <Esc><u>
用特征(pattern)在文件中搜寻,按下
<n>
/<N>
切换至上 / 下一个结果: </>特征<Enter>对整个文件运用正则表达式进行替换: <:>%s/正则表达式/替换字/g<Enter>
显示行号: <:>set nu<Enter>
[root@z ~]# tldr head
head
输出文件的开头部分的内容。 更多信息:https://www.gnu.org/software/coreutils/manual/html_node/head-invocation.html.
输出文件的前几行: head [-n|--lines] 数目 路径/到/材料
输出文件的前几个字节: head [-c|--bytes] 数目 路径/到/文件
输出文件除最后几行之外的所有内容: head [-n|--lines] -数目 路径/到/文件
输出记录除结果几个字节之外的所有内容: head [-c|--bytes] -数目 路径/到/资料
[root@z ~]# tldr tail
tail
显示文件的最后一部分。 另请参阅:head
。 更多信息:https://www.gnu.org/software/coreutils/manual/html_node/tail-invocation.html.
显示文件中最后 n 行: tail [-n|--lines] n 路径/到/文件
从特定行号开始打印文件后续内容: tail [-n|--lines] +行号 路径/到/文件
从给定文件末尾打印特定字节数量的内容: tail [-n|--lines] 字节数 路径/到/文件
打印给定文件的最后几行并保持读取直到
<Ctrl c>
: tail [-f|--follow] 路径/到/文件保持读取文件直到
<Ctrl c>
,即使文件无法访问: tail [-F|--retry --follow] 路径/到/文件显示文件中最后 n 行并每 t 秒刷新一次: tail [-n|--lines] n [-s|--sleep-interval] t [-f|--follow] 路径/到/文件
[root@z ~]# tldr touch
touch
创建文件并设置访问/修改时间。 更多信息:https://manned.org/touch.
创建指定的文件: touch 路径/到/文件1 路径/到/文件2 ...
将文档的访问(a)或修改时间(m)设置为当前时间,如果文件不存在则不创建(-c): touch [-c|--no-create] -a|m 路径/到/文件1 路径/到/文件2 ...
将文件时间(-t)设置为指定值,如果文件不存在则不创建(-c): touch [-c|--no-create] -t YYYYMMDDHHMM.SS 路径/到/文件1 路径/到/文件2 ...
将档案时间设置为另一文件(-r,即档案3)的时间,如果文件不存在则不创建(-c): touch [-c|--no-create] [-r|--reference] 路径/到/记录3 路径/到/档案1 路径/到/材料2 ...
[root@z ~]# tldr find
find
在指定目录树下递归查找文件或目录。 更多信息:https://manned.org/find.
经过扩展名查找文件: find 指定目录 -name '*.ext'
查找匹配多个路径或名称模式的文件: find 指定目录 -path '/path//.ext' -or -name 'pattern*'
查找匹配指定名称的目录,不区分大小写: find 指定目录 -type d -iname 'lib'
查找匹配指定模式的文档,排除特定路径: find 指定目录 -name '.py' -not -path '/site-packages/*'
查找符合指定大小范围的文件,将递归深度限制为 "1": find 指定目录 -maxdepth 1 -size +500k -size -10M
对每个文件运行命令(在命令中使用
{}
代表当前文件): find 指定目录 -name '*.ext' -exec wc -l {} \;查找最近 7 天修改的文件: find 指定目录 -daystart -mtime -7
查找空(0 字节)的文件并删除: find 指定目录 -type f -empty -delete
系统信息
[root@z ~]# tldr uname
uname
输出关于当前机器和运行在该机器上的操作系统的详细信息。 注意:如需了解操作系统的其他信息,请尝试使用 lsb_release
命令。 更多信息:https://www.gnu.org/software/coreutils/manual/html_node/uname-invocation.html.
打印硬件相关信息:机器和处理器: uname -mp
打印软件相关信息:操作系统、发行号和版本: uname -srv
打印系统的名称(主机名): uname -n
打印所有可用的系统信息(硬件、软件、名称): uname -a
[root@z ~]# tldr df
df
显示文件系统磁盘空间采用情况的概览。 更多信息:https://www.gnu.org/software/coreutils/manual/html_node/df-invocation.html.
显示磁盘使用情况: df
以可读的形式显示磁盘运用情况: df [-h|--human-readable]
显示给定文件或目录的磁盘使用情况: df 路径/到/文件或目录
包括空闲 inode 数量的统计信息: df [-i|--inodes]
显示文件系统但排除指定的类型: df [-x|--exclude-type] squashfs [-x|--exclude-type] tmpfs
显示文件系统类型: df [-T|--print-type]
[root@z ~]# tldr du
du
磁盘使用率:估计和汇总文件和目录空间使用率。 更多信息:https://www.gnu.org/software/coreutils/manual/html_node/du-invocation.html.
以给定单位(B/KiB/MiB)列出目录和所有子目录的大小: du -b|k|m 路径/到/目录
以可读形式列出目录和任何子目录的大小(即自动转换为的合适的单位): du [-h|--human-readable] 路径/到/目录
以可读单位显示目录大小: du [-sh|--summarize --human-readable] 路径/到/目录
列出目录以及其中所有记录和目录的可读大小: du [-ah|--all --human-readable] 路径/到/目录
列出目录和任何子目录的可读大小,最多可达 N 级: du [-h|--human-readable] [-d|--max-depth] N 路径/到/目录
列出当前目录中所有
.jpg
文件的可读大小,并在最后显示累计总数: du [-ch|--total --human-readable] ./*.jpg列出超过特定大小的所有文件和目录(包括隐藏的文件和目录)(对于查询实际占用空间很有用): du [-ah|--all --human-readable] [-t|--threshold] 1G|1024M|1048576K ..* *
[root@z ~]# tldr top
top
显示运行进程的动态实时信息。 更多信息:https://keith.github.io/xcode-man-pages/top.1.html.
执行 top 命令,界面中提供所有选项: top
按内部内存大小排序进程(默认顺序 - 进程 ID): top -o mem
首先按 CPU 启动顺序排序进程,然后按运行时间排序: top -o cpu -O time
只显示给定用户拥有的进程: top -user 用户名
获取有关交互式命令的帮助(我测试并没看到这个机制): <?>
[root@z ~]# tldr htop
htop
显示正在运行的进程的动态实时信息。top
的增强版。 更多信息:https://htop.dev/.
启动
htop
: htop启动
htop
, 显示指定用户拥有的进程: htop [-u|--user] 用户名以树形视图显示进程的层级关系,展示父子进程之间的关系: htop [-t|--tree]
使用指定的
sort_item
对进程排序(使用htop --sort help
获取可用选项): htop [-s|--sort] sort_item以指定的更新间隔启动
htop
, 以十分之一秒为单位(即 50 = 5 秒): htop [-d|--delay] 50运行
htop
时查看交互式命令: <?>切换到不同的标签: <Tab>
显现帮助: htop [-h|--help]
[root@z ~]# tldr free
free
显现系统中的空闲和已用内存量. 更多信息:https://manned.org/free.
显示系统内存: free
以字节/KB/MB/GB为单位显示内存: free -b|k|m|g
以人类可读单位显示内存: free [-h|--human]
每2秒刷新一次输出: free [-s|--seconds] 2
[root@z ~]# tldr vmstat
vmstat
报告有关进程、内存、分页、块IO、陷阱、磁盘和CPU活动的信息。 更多信息:https://manned.org/vmstat.
显示虚拟内存统计信息: vmstat
每2秒钟显示5次报告: vmstat 2 5
[root@z ~]# tldr dmidecode
dmidecode
以人类可读的格式显示 DMI(也称为 SMBIOS)表内容。 需要 root 权限。 更多信息:https://manned.org/dmidecode.
显示所有 DMI 表内容: sudo dmidecode
显现 BIOS 版本: sudo dmidecode -s bios-version
显示系统的序列号: sudo dmidecode -s system-serial-number
显示 BIOS 信息: sudo dmidecode -t bios
显示 CPU 信息: sudo dmidecode -t processor
呈现内存信息: sudo dmidecode -t memory
呈现系统信息: sudo dmidecode -t system
磁盘管理
[root@z ~]# tldr lsblk
lsblk
列出硬盘设备信息。 更多信息:https://manned.org/lsblk.
以树状格式列出所有存储设备: lsblk
同时列出空设备: lsblk [-a|--all]
以字节为单位而不是以人类可读的格式打印 SIZE 列: lsblk [-b|--bytes]
输出文件系统信息: lsblk [-f|--fs]
输出块设备的拓扑结构: lsblk [-t|--topology]
排除由逗号分隔的主要设备编号列表指定的设备: lsblk [-e|--exclude] 1,7,...
采用逗号分隔的列列表显示自定义摘要: lsblk [-o|--output] NAME,SERIAL,MODEL,TRAN,TYPE,SIZE,FSTYPE,MOUNTPOINT,...
[root@z ~]# tldr fdisk
fdisk
管理硬盘上的分区表和分区。 另请参见: partprobe
. 更多信息: https://manned.org/fdisk.
列出分区: sudo fdisk -l
启动分区操纵器: sudo fdisk /dev/sdx
对磁盘进行分区后,创建一个分区: <n>
对磁盘进行分区后,选择要删除的分区: <d>
对磁盘进行分区后,查看分区表: <p>
对磁盘进行分区后,写下所做的更改: <w>
对磁盘进行分区后,放弃所做的更改: <q>
对磁盘进行分区后,打开帮忙菜单: <m>
[root@z ~]# tldr partprobe
partprobe
通知操作系统内核分区表的变化。 更多信息:https://manned.org/partprobe.
通知操作系统内核分区表的更改: sudo partprobe
通知内核分区表的变化,并呈现设备及其分区的摘要: sudo partprobe --summary
展示设备及其分区的摘要,但不通知内核: sudo partprobe --summary --dry-run
[root@z ~]# tldr pvcreate
pvcreate
初始化磁盘或分区以用作物理卷。 另请参见: lvm
. More information: https://manned.org/pvcreate.
初始化“/dev/sda1”卷以供LVM应用: pvcreate /dev/sda1
在没有任何确认提示的情况下强制创建: pvcreate --force /dev/sda1
[root@z ~]# tldr vgcreate
vgcreate
创建结合多个大容量存储设备的卷组。 另请参见: lvm
. 更多信息: https://manned.org/vgcreate.
使用“/dev/sda1”设备创建一个名为vg1的新卷组: vgcreate vg1 /dev/sda1
采用多个设备创建一个名为vg1的新卷组: vgcreate vg1 /dev/sda1 /dev/sdb1 /dev/sdc1
[root@z ~]# tldr mount
mount
在一个目录中访问整个文件系统。 更多信息:https://manned.org/mount.8.
显示所有挂载的文件系统: mount
将设备装载到目录: mount [-t|--types] filesystem_type path/to/device_file path/to/target_directory
倘若特定目录不存在,则创建一个目录,并将设备装载到该目录中: mount [-m|--mkdir] path/to/device_file path/to/target_directory
为特定用户将设备装载到目录: mount [-o|--options] uid=user_id,gid=group_id path/to/device_file path/to/target_directory
将CD-ROM设备(文件类型为ISO9660)挂载到
/cdrom
(只读): mount [-t|--types] iso9660 [-o|--options] ro /dev/cdrom /cdrom挂载“/etc/fstab”中定义的所有文件系统: mount [-a|--all]
挂载
/etc/fstab
中描述的特定文件系统(例如/ dev/sda 1/my _ drive ext 2 defaults 0 2
): mount /my_drive将一个目录挂载到另一个目录: mount [-B|--bind] path/to/old_dir path/to/new_dir
[root@z ~]# tldr umount
umount
将文件系统与其挂载点解除链接,使其不再可访问。 当文件系统正在运用时,无法卸载。 更多信息:https://man.openbsd.org/umount.
卸载文件系统,通过传递挂载源的路径: umount 路径/到/设备文件
卸载文件系统,通过传递挂载目标的路径: umount 路径/到/挂载目录
卸载所有已挂载的文件系统(
proc
文件系统除外): umount -a
权限管理
[root@z ~]# tldr chmod
chmod
修改文件或目录的访问权限。 更多信息:https://www.gnu.org/software/coreutils/manual/html_node/chmod-invocation.html.
授予所有者[u]执行[x]资料的权限: chmod u+x 文件
授予所有者[u]读[r]和写[w]文件或目录的权限: chmod u+rw 资料或目录
移除用户组[g]的文件执行[x]权限: chmod g-x 文件
授予所有用户[a]读[r]以及执行[x]资料的权限: chmod a+rx 材料
授予其他用户[o](不在所有者用户组)和用户组[g]同样的权限: chmod o=g 资料
移除其他用户[o]的所有权限: chmod o= 文件
递归授予用户组[g]和其他用户[o]目录下所有文件和子目录的写[w]权限: chmod [-R|--recursive] g+w,o+w 目录
递归授予所有用户[a]目录下文件的读[r]权限和子目录的执行[X]权限: chmod [-R|--recursive] a+rX 目录
[root@z ~]# tldr chown
chown
修改用户和用户组对文件或目录的所有权。 更多信息:https://www.gnu.org/software/coreutils/manual/html_node/chown-invocation.html.
修改文件或目录的所有者: chown 用户 路径/到/文件或目录
修改文件或目录的所有者及所属组: chown 用户:用户组 路径/到/文档或目录
将所有者用户和用户组都更改为
user
: chown user: 路径/到/文件或目录递归修改目录及其子目录和材料的所有者: chown [-R|--recursive] 用户 路径/到/目录
修改符号链接的所有者: chown [-h|--no-dereference] 用户 路径/到/符号链接
修改文件或目录的所有者与参考文件相同: chown --reference 路径/到/参考材料 路径/到/文件或目录
[root@z ~]# tldr chgrp
chgrp
更改文档和目录的组所有权。 更多信息:https://www.gnu.org/software/coreutils/manual/html_node/chgrp-invocation.html.
更改文档/目录的所有者组: chgrp group path/to/file_or_directory
递归更改目录及其内容的所有者组: chgrp [-R|--recursive] group path/to/directory
更改符号链接的所有者组: chgrp [-h|--no-dereference] group path/to/symlink
更改文件/目录的所有者组以匹配引用文件: chgrp --reference path/to/reference_file path/to/file_or_directory
用户管理
[root@z ~]# tldr useradd
useradd
创建新用户。 另请参见:users
、userdel
、usermod
。 更多信息: https://manned.org/useradd.
创建新用户: sudo useradd username
使用指定的用户ID创建新用户: sudo useradd [-u|--uid] id username
使用指定的shell创建新用户: sudo useradd [-s|--shell] path/to/shell username
创建一个属于其他组的新用户(注意没有空格): sudo useradd [-G|--groups] group1,group2,... username
利用默认主目录创建新用户: sudo useradd [-m|--create-home] username
创建一个新用户,其主目录由模板目录记录填充: sudo useradd [-k|--skel] path/to/template_directory [-m|--create-home] username
创建不包含主目录的新平台用户: sudo useradd [-r|--system] username
[root@z ~]# tldr usermod
usermod
修改用户帐户。 另请参见: users
, useradd
, userdel
. 更多信息: https://manned.org/usermod.
更改用户名: sudo usermod [-l|--login] new_username username
更改用户ID: sudo usermod [-u|--uid] id username
更改用户shell: sudo usermod [-s|--shell] path/to/shell username
将用户添加到补充组(注意没有空格): sudo usermod [-a|--append] [-G|--groups] group1,group2,... username
更改用户主目录: sudo usermod [-m|--move-home] [-d|--home] path/to/new_home username
[root@z ~]# tldr userdel
userdel
移除用户帐户或从组中移除用户。 另请参见: users
, useradd
, usermod
. 更多信息: https://manned.org/userdel.
删除用户: sudo userdel username
删除其他根目录中的用户: sudo userdel [-R|--root] path/to/other/root username
删除用户以及主目录和邮件假脱机: sudo userdel [-r|--remove] username
进程管理
[root@z ~]# tldr ps
ps
提供正在运行的进程的信息。 更多信息:https://manned.org/ps.
列出所有正在运行的进程: ps aux
列出所有正在运行的进程,包括完整的命令字符串: ps auxww
查找与字符串匹配的进程: ps aux | grep 字符串
以 extra full 格式列出当前用户的所有进程: ps [-u|--user] $(id [-u|--user]) -F
以树形方式列出当前用户的所有进程: ps [-u|--user] $(id [-u|--user]) f
获取一个进程的父进程 ID: ps [-o|--format] ppid= [-p|--pid] 进程 ID
按内存使用量对进程进行排序: ps [k|--sort] size
[root@z ~]# tldr kill
kill
向进程发送信号,通常用于停止进程。 除了 SIGKILL 和 SIGSTOP,所有信号都可以被进程拦截,以便进行正常退出。 更多信息:https://manned.org/kill.1posix.
使用默认的 SIGTERM(终止)信号来结束一个程序: kill 进程ID
列出可用的信号名称(使用时无需加
SIG
前缀): kill -l应用 SIGHUP(挂起)信号终止一个应用。许多守护进程接收到此信号后会重新加载而不是终止: kill -1|HUP 进程ID
使用 SIGINT(中断)信号终止一个程序。通常由用户按下
<Ctrl c>
发起: kill -2|INT 进程ID向操作系统发送信号,立即终止一个软件(软件无机会捕获信号): kill -9|KILL 进程ID
向操作系统发送信号,暂停一个程序,直到收到 SIGCONT(继续)信号: kill -17|STOP 进程ID
向所有具有指定 GID(组ID)的进程发送
SIGUSR1
信号: kill -SIGUSR1 -组ID
[root@z ~]# tldr lsof
lsof
列出打开的文件和相应的进程。 注意:列出其他人打开的资料要求 root 权限(或 sudo)。 更多信息:https://manned.org/lsof.
查找打开了给定文件的进程: lsof 路径/到/文件
查找打开了本地互联网端口的进程: lsof -i :端口
仅输出进程 ID (PID): lsof -t 路径/到/文件
列出给定用户打开的文件: lsof -u 用户名
列出给定命令或进程打开的文件: lsof -c 进程或命令的名称
列出特定进程打开的文件(给定其 PID): lsof -p PID
列出目录中打开的文件: lsof +D 路径/到/目录
查找正在监听本地 IPv6 TCP 端口的进程,不转换网络或端口号: lsof -i6TCP:端口 -sTCP:LISTEN -n -P
网络操作
[root@z ~]# tldr ping
ping
向网络主机发送 ICMP (ECHO_REQUEST) 数据包。 更多信息:https://manned.org/ping.
Ping 主机: ping 主机地址
仅 Ping 主机特定次数: ping -c 次数 主机地址
Ping 主机,指定请求之间的间隔(以秒为单位)(默认为 1 秒): ping -i 间隔秒数 主机地址
Ping 主机而不尝试查找地址的符号名称: ping -n 主机地址
Ping 主机并在收到数据包时响铃(假如您的终端协助): ping -a 主机地址
如果没有收到响应,也显示一条消息: ping -O 主机地址
Ping 主机,指定 ping 次数、每个数据包的响应超时 (
-W
)和整个 ping 运行的总时间限制 (-w
) : ping -c 次数 -W 响应超时秒数 -w 总的等待超时秒数 主机地址
[root@z ~]# tldr ifconfig
ifconfig
网络接口配置工具。 更多信息:https://net-tools.sourceforge.io/man/ifconfig.8.html.
查看某个网络接口的网络设置: ifconfig 接口名称
显示所有接口的详细信息,包括已禁用的接口: ifconfig -a
禁用一个接口: ifconfig 接口名称 down
启用一个接口: ifconfig 接口名称 up
为一个接口分配 IP 地址: ifconfig 接口名称 IP地址
[root@z ~]# tldr ip
ip
显示/操作路由、设备、策略路由和隧道。 一些子命令(例如 address
)有自己的使用文档。 更多信息:https://www.manned.org/ip.8.
列出带有详细信息的接口: ip [a|address]
列出带有简要网络层信息的接口: ip [-br a|-brief address]
列出带有简要链路层信息的接口: ip [-br l|-brief link]
呈现路由表: ip [r|route]
呈现邻居(ARP 表): ip [n|neighbour]
使接口启动/关闭: sudo ip [l|link] [s|set] interface up|down
向接口添加/删除 IP 地址: sudo ip [a|address] add|delete ip/mask dev interface
添加默认路由: sudo ip [r|route] [a|add] default via ip dev interface
[root@z ~]# tldr route
route
手动操控路由表。 需要 root 权限。 更多信息:https://keith.github.io/xcode-man-pages/route.8.html.
借助网关向目标添加路由: sudo route add "路由 ip 地址" "网关地址"
通过网关向 子网 / 24 添加路由: sudo route add "子网 ip/24" "网关地址"
在测试模式下运行(不做任何操作,只打印): sudo route -t add "路由 ip 地址/24" "网关地址"
删除所有路由: sudo route flush
删除特定路由: sudo route delete "路由 ip 地址/24"
查找并表明目标的路由(主机名或 IP 地址): sudo route get "目标"
[root@z ~]# tldr netstat
netstat
显示与网络相关的信息,如打开的连接、打开的套接字端口等。 更多信息:https://manned.org/netstat.
列出所有端口: netstat -a
列出所有被侦听端口: netstat -l
列出侦听的 TCP 端口: netstat -t
显示监听给定协议监听的 PID 和脚本名: netstat -p 协议
打印路由表: netstat -nr
[root@z ~]# tldr wget
wget
从网络上下载文件。 协助 HTTP, HTTPS, 和 FTP. 更多信息:https://www.gnu.org/software/wget.
将该 URL 的内容下载到材料中(在这个例子中文件名为 "foo"): wgethttps://example.com/foo
将该 URL 的内容下载到记录中(在这个例子中文件名为 "bar"): wget [-O|--output-document] barhttps://example.com/foo
以每三秒一个请求的速度下载一个网页和其所有资源(脚本,样式表,图片等等): wget [-p|--page-requisites] [-k|--convert-links] [-w|--wait] 3https://example.com/somepage.html
从一个目录中下载所有列出的文件和其所有子文件夹(不下载内嵌网页): wget [-m|--mirror] [-np|--no-parent]https://example.com/somepath/
限制下载速度和重试次数: wget --limit-rate 300k [-t|--tries] 100https://example.com/somepath/
使用主要授权来从 HTTP/FTP 服务器中下载文件: wget --user username --password passwordhttps://example.com
继续一个未完成的下载任务: wget [-c|--continue]https://example.com
将指定记录中所有列出的 URL 下载到一个目录中: wget [-P|--directory-prefix] path/to/directory [-i|--input-file] URLs.txt
[root@z ~]# tldr curl
curl
向 / 从一个服务器传输数据。 承受大多数协议,包括 HTTP, FTP, 和 POP3. 更多信息:https://curl.se/docs/manpage.html.
将指定 URL 的内容下载到文件: curlhttp://example.com[-o|--output] 文件名
将文件从 URL 保存到由 URL 指示的文件名中: curl [-O|--remote-name]http://example.com/filename
下载文件,跟随 重定向,并且自动 续传(恢复)前序文件传输: curl [-f|--fail] [-O|--remote-name] [-L|--location] [-C|--continue-at] -http://example.com/filename
发送表单编码数据(
application/x-www-form-urlencoded
的 POST 请求): curl [-d|--data] 'name=bob' http://example.com/form发送带有额外请求头,使用自定义请求方法的请求: curl [-H|--header] 'X-My-Header: 123' [-X|--request] PUThttp://example.com
发送 JSON 格式的数据,并附加正确的
Content-Type
请求头: curl [-d|--data] '{"name":"bob"}' [-H|--header] 'Content-Type: application/json' http://example.com/users/1234使用用户名和密码,授权访问服务器: curl [-u|--user] 用户名http://example.com
为指定资源使用客户端证书和密钥,并且跳过证书验证: curl [-E|--cert] client.pem --key key.pem [-k|--insecure]https://example.com
[root@z ~]# tldr ethtool
ethtool
显示和修改网络接口控制器(NIC)参数。 更多信息:https://manned.org/ethtool.
显示接口的当前设置: ethtool eth0
呈现接口的驱动程序信息: ethtool --driver eth0
显示接口支持的所有效果: ethtool --show-features eth0
显示接口的网络采用统计数据: ethtool --statistics eth0
接口上的一个或多个指示灯闪烁10秒钟: ethtool --identify eth0 10
为给定接口设置链路速度、双工模式和参数自动协商: ethtool -s eth0 speed 10|100|1000 duplex half|full autoneg on|off
其他常用命令
[root@z ~]# tldr systemctl
systemctl
控制 systemd 体系和服务管理器。 更多信息:https://www.freedesktop.org/software/systemd/man/systemctl.html.
显示所有正在运行的服务: systemctl status
列出失败的单元: systemctl --failed
启动/停止/重启/重新加载/表明服务的状态: systemctl start|stop|restart|reload|status 单元
启用/禁用开机时启动的单元: systemctl enable/disable 单元
重新加载 systemd,扫描新的或更改的单元: systemctl daemon-reload
检查单元是否激活/启用/失败: systemctl is-active|is-enabled|is-failed 单元
按运行/失败状态过滤列出所有服务/套接字/自动挂载单元: systemctl list-units [-t|--type] service|socket|automount --state failed|running
显示单元文件的内容和绝对路径: systemctl cat 单元
[root@z ~]# tldr sed
sed
以脚本方式编辑文本。 参见:awk
, ed
. 更多信息:https://www.gnu.org/software/sed/manual/sed.html.
将所有输入行中出现的
apple
(基本正则语法)替换为mango
(基本正则语法),并将结果打印到stdout
: 命令 | sed 's/apple/mango/g'将所有输入行中出现的
apple
(扩展正则语法)替换为APPLE
(扩展正则语法),并将结果打印到stdout
: 命令 | sed [-E|--regexp-extended] 's/(apple)/\U\1/g'用
mango
(基本正则语法)替换特定文件中出现的所有apple
(基本正则语法),并覆盖原文件: sed [-i|--in-place] 's/apple/mango/g' 路径/到/文件执行特定的脚本,并将结果打印到
stdout
: 命令 | sed -f|--file 路径/到/脚本.sed打印第一行到
stdout
: 命令 | sed [-n|--quiet] '1p'删除文件第一行: sed [-i|--in-place] 1d 路径/到/文档
插入新行到记录的第一行: sed [-i|--in-place] '1i\your new line text' 路径/到/记录
[root@z ~]# tldr awk
awk
一种用于文件处理的通用编程语言。 更多信息:https://github.com/onetrueawk/awk.
以空格为分隔符,打印文件每行第五列(也称作字段): awk '{print $5}' 文件名
以空格为分隔符,打印文件包含“foo” 的所有行的第二列: awk '/foo/ {print $2}' 文件名
空格作为分隔符,打印文件每行的最后一列: awk -F ',' '{print $NF}' 文件名就是以逗号而不
计算记录的第一列数值之和并打印: awk '{s+=$1} END {print s}' 文件名
从第一行开始,每三行打印一行: awk 'NR%3==1' 文件名
根据条件不同,打印不同内容: awk '{if ($1 == "foo") print "Exact match foo"; else if ($1 ~ "bar") print "Partial match bar"; else print "Baz"}' 文件名
打印第 10 列等于指定值的所有行: awk '($10 == 指定值)'
打印第 10 列介于最小值和最大值之间的所有行: awk '($10 >= 最小值 && $10 <= 最大值)'
[root@z ~]# tldr wc
wc
计数行、单词或字节。 更多信息:https://www.gnu.org/software/coreutils/manual/html_node/wc-invocation.html.
计数文档中的行数: wc [-l|--lines] 文件
计数文件中的单词数: wc [-w|--words] 文件
计数文件中的字符(字节): wc [-c|--bytes] 材料
计数文件中的字符数(考虑所有多字节的字符): wc [-m|--chars] 文件
使用标准输入,按顺序计数行、单词和字符(字节): find . | wc
[root@z ~]# tldr cut
cut
从标准输入或记录中剪切字段。 更多信息:https://www.gnu.org/software/coreutils/manual/html_node/cut-invocation.html.
打印每行的特定字符/或属性范围: 命令 | cut -characters|fields 1|1,10|1-10|1-|-10
打印每行由指定分隔符分割的属性范围: 命令 | cut --delimiter "分隔符" --fields 1|1,10|1-10|1-|-10
打印文件每行的字符范围: cut --characters 1|1,10|1-10|1-|-10 路径/到/文档
打印以
NUL
结尾的行的特定字段(例如find . -print0
)而不是换行符: 命令 | cut --zero-terminated --fields 1
[root@z ~]# tldr grep
grep
使用正则表达式查找文件中的模式。 更多信息:https://www.gnu.org/software/grep/manual/grep.html.
在文件中查找模式: grep "模式字符串" 路径/到/文件
在材料中精确地查找字符串(禁用正则表达式): grep [-F|--fixed-strings] "字符串" 路径/到/文件
在指定目录下的所有文件中递归地查找模式,显示匹配的行号并忽略二进制文件: grep [-r|--recursive] [-n|--line-number] --binary-files without-match "模式字符串" 路径/到/目录
使用大小写不敏感的扩展正则表达式(支持
?
、+
、{}
、()
, 和|
): grep [-E|--extended-regexp] [-i|--ignore-case] "模式字符串" 路径/到/文件在每个匹配前后、之前或之后打印 3 行上下文: grep --context|before-context|after-context 3 "模式字符串" 路径/到/文件
以带有颜色的方式,打印每个匹配的文件名和行号: grep [-H|--with-filename] [-n|--line-number] --color=always "模式字符串" 路径/到/文件
只打印文件中与模式匹配的行: grep [-o|--only-matching] "模式字符串" 路径/到/文件
从
stdin
(标准输入)中查找与模式不匹配的行: cat 路径/到/文件 | grep [-v|--invert-match] "模式字符串"
[root@z ~]# tldr egrep
egrep
使用扩展正则表达式在文件中查找模式(支持?
、+
、{}
、()
和|
)。 更多信息: https://manned.org/egrep.
在文件中搜索模式: egrep "search_pattern" path/to/file
在多个文件中搜索模式: egrep "search_pattern" path/to/file1 path/to/file2 ...
在“stdin”中搜索模式: cat path/to/file | egrep search_pattern
打印每个匹配项的文件名和行号: egrep --with-filename --line-number "search_pattern" path/to/file
在目录中的所有文件中递归搜索模式,忽略二进制文件: egrep --recursive --binary-files=without-match "search_pattern" path/to/directory
搜索与模式不匹配的行: egrep --invert-match "search_pattern" path/to/file
[root@z ~]# tldr sort
sort
对文本文件的行进行排序。 更多信息:https://www.gnu.org/software/coreutils/manual/html_node/sort-invocation.html.
以升序对资料进行排序: sort 路径/到/文件
以降序对文件进行排序: sort [-r|--reverse] 路径/到/文件
以不区分大小写的方式对记录进行排序: sort -f|--ignore-case 路径/到/记录
用数字而不是字母顺序对文件进行排序: sort [-n|--numeric-sort] 路径/到/文档
按每行的第 3 个字段对
/etc/passwd
进行数字排序,使用 “:” 作为字段分隔符: sort [-t|--field-separator] : [-k|--key] 3n /etc/passwd对一个文件进行排序,只保留唯一的行: sort [-u|--unique] 路径/到/文件
对一个文件进行排序,将输出结果打印到指定的输出文件中(可以用来对一个文件进行原地排序): sort [-o|--output] 路径/到/文件 路径/到/文件
对带有指数的数字进行排序: sort [-g|--general-numeric-sort] 路径/到/文件
[root@z ~]# tldr uniq
uniq
输出输入或文件中的唯一行。 因为它只检测相邻的重复行,所以需要先对它们进行排序。 更多信息:https://www.gnu.org/software/coreutils/manual/html_node/uniq-invocation.html.
仅显示每行一次: sort 路径/到/文档 | uniq
仅显示唯一的行: sort 路径/到
/档案 | uniq [-u|--unique]
仅显示重复的行: sort 路径/到/文件 | uniq [-d|--repeated]
显示每行的出现次数及其内容: sort 路径/到/材料 | uniq [-c|--count]
显示每行的出现次数,并按出现次数从高到低排序: sort 路径/到/文件 | uniq [-c|--count] | sort [-nr|--numeric-sort --reverse]
[root@oldboy ~]# tldr tr
tr
翻译字符:基于单个字符和字符集运行替换。 更多信息:https://www.gnu.org/software/coreutils/manual/html_node/tr-invocation.html.
替换文件中出现的所有字符,并打印结果: tr find_character replace_character < path/to/file
替换另一个命令输出中出现的所有字符: echo text | tr find_character replace_character
将第一组中的每个字符映射到第二组中相应的字符: tr 'abcd' 'jkmn' < path/to/file
从输入中删除指定字符集的所有匹配项: tr [-d|--delete] 'input_characters' < path/to/file
将一系列相同的字符压缩为单个字符: tr [-s|--squeeze-repeats] 'input_characters' < path/to/file
将记录内容转换成大写字母: tr "[:lower:]" "[:upper:]" < path/to/file
从文件中去掉不可打印的字符: tr [-cd|--complement --delete] "[:print:]" < path/to/file
[root@z ~]# tldr bc
bc
任意精度的计算器语言。 请参阅:dc
,qalc
。 更多信息:https://manned.org/bc.
启动交互式会话: bc
启动交互式会话并启用标准数学库: bc --interactive --mathlib
计算表达式: echo '5 / 3' | bc
执行脚本: bc 路径/到/脚本.bc
使用指定的小数位数计算一个表达式: echo 'scale = 10; 5 / 3' | bc
使用
mathlib
计算正弦/余弦/反正切/自然对数/指数函数: echo 's|c|a|l|e(1)' | bc --mathlib执行一个内联的阶乘脚本: echo "define factorial(n) { if (n <= 1) return 1; return n*factorial(n-1); }; factorial(10)" | bc
[root@z ~]# tldr init
init
Linux运行级管理器。 如果使用systemd,则需要启用SYSVINIT编译时选项。 更多信息:https://manned.org/man/init.8.
将系统设置为运行图形环境: sudo init 5
设置系统运行多用户终端: sudo init 3
关闭系统: init 0
重新启动架构: init 6
将系统设置为仅允许root用户在终端上运行,并且不允许联网: sudo init 1