跳转至

18.2.常用命令

系统管理

shutdown - 关机、重启

shutdown - 关闭或重启。
shutdown [OPTIONS...] [TIME] [WALL...]

Shut down the system.

  -H --halt      停机
  -P --poweroff  关机
  -r --reboot    重启
  -h             等效于--poweroff, 会被--halt覆盖
  -k             不停机/关机/重启, 只发送警告
     --no-wall   在停止/关机/重新启动之前不发送警告消息
  -c             取消关机任务
shutdown [options] when [message]
shutdown -h now
shutdown -h 21:30
shutdown -h +10
shutdown -h +10 "will reboot"
shutdown -r
shutdown -c

命令帮助

man - 查看在线帮助

man - manual - 查看命令的在线帮助。
man wc

whatis - 命令简述

whatis - 查询一个命令的简短描述(单行描述)。

whatis 命令在用 catman -w 命令创建的数据库中查找 command 参数指定的命令、系统调用、库函数或特殊文件名。whatis命令显示手册部分的页眉行。whatis命令等同于使用 man -f 命令。

whatis wc

apropos - 查找命令

apropos - 在whatis数据库中查找字符串。

使用man -k命令,可以得到和apropos命令相同的结果(实际上是相同的命令)。

-r, -- regex    # 将每个keyword作为正则表达式解释, 默认行为
-w, --wildcard  # 将每个keyword作为shell样式的通配符解释
-e, --exact     # 精确匹配
-a, --and       # 所有keyword是“并”的关系
-s section,     # 只查找指定的手册section
   --section section
apropos pip

文件管理

ls - 列出文件

ls - list - 列出文件,可以使用通配符。

其他参数

-F, --classify              # 每个条目后面附加一个指示符,用来说明文件的类型。
                            # 全部指示符有 */=>@|
                            # /目录,*可执行文件,@符号链接,|FIFO文件,=套接字
                            # 没有指示符表示普通文件

--file-type                 # 同上,但不附加 '*'
-p, --indicator-style=slash # 将 / 指示符附加到目录
--indicator-style=WORD      # 指示符风格: none (default), slash (-p), 
                            # file-type (--file-type), classify (-F)
-R, --recursive             # 递归列出
-a, --all                   # 列出全部文件,包括以'.'开头的隐藏文件
-A, --almost-all            # 同上,但不列出 . 和 ..
-B, --ignore-backups        # 不列出以 ~ 结尾的隐藏文件
-d, --directory             # 列出目录本身,而不是列出其内容

--hide=PATTERN              # 不列出与shell PATTERN匹配的隐式条目,
                            # 会被-a或-A参数覆盖
-I, --ignore=PATTERN        # 不列出与shell PATTERN匹配的隐式条目,
                            # 不会被-a或-A参数覆盖

格式参数

# 排列格式
-C, --format=vertical      # 多列纵向排列
-x, --format=across,       # 多列横向排列 
    --format=horizontal
-l, --format=long,         # 单列输出,并显示详细信息
    --format=verbose
-1, --format=single-column # 单列输出,如果不是输出到终端,此选项就是默认选项
-m, --format=commas        # 水平输出,以逗号分割 
-o                         # 长格式单列输出,等价于"--format-long --no-group"
-w, --width=COLS           # 将输出宽度设置为COLS个字符,0表示没有限制

# 字面值格式
-b, --escape               # 使用C风格的转义序列表示非可打印字符
-Q, --quote-name           # 条目名称使用双引号
--quoting-style=WORD       # 使用WORD将条目名字括起来
                           # WORD 的有效值为:
                           # literal,locale,shell,shell-always, 
                           # shell-escape, shell-escape-always, c, escape
-q, --hide-control-chars   # 不可打印字符用问号代替
--show-control-chars       # 原样显示不可打印字符,
                           # 默认值,除非程序为"ls",并输出到终端
-N, --literal              # 打印文件的原始名称,不特别处理控制符

# 时间格式
--full-time                # 类似 -l --time-style=full-iso
--time-style=STYLE         # 和-l一起使用,设置时间格式
                           # STYLE: full-iso,long-iso,iso,locale,+FORMAT
                           # FORMAT的解释方式类似于'date';
                           # 如果FORMAT是 FORMAT1 <newline> FORMAT2,
                           # 则FORMAT1适用于非最新文件,FORMAT2适用于最新文件;
                           # 如果STYLE带有'posix-'前缀,
                           # 则STYLE仅在POSIX语言环境外生效

信息参数

-i, --inode           # 为每个条目列出 inode
-s, --size            # 在开头以块为单位打印每个文件的大小
--author              # 和-l共用,打印每个文件的所有者
-G, --no-group        # 和-l共用,不打印组名
-g                    # 类似-l,但不打印所有者
--block-size=SIZE     # 以 SIZE 为单位打印每个文件的大小,
                      # 例如'--block-size=M',则以 1024*1024 bytes 为单位
-k, --kilobytes       # 文件的大小以 1024-byte blocks 为单位
-h, --human-readable  # 和-l或-s一起使用,文件的大小以可读的方式输出
--si                  # 类似-h,但使用1000作为底数,而不是1024    
-n, --numeric-uid-gid # 类似-l, 但用数字表示UID和GID,而不是用户名和组名
-L, --dereference     # 显示符号链接引用的文件信息,而不是链接本身
-Z, --context         # 打印文件的 security context

排序参数

-U, --sort=none           # 不排序,按它们在磁盘上存储的顺序列出
                          # 因为不加排序,目录内容很多时,能显著地加快速度
-f                        # 不排序,启用"-aU",禁用"-ls --color"       
-r, --reverse             # 逆序排序
-t, --sort=time           # 按 mtime 排序

-c, --time=ctime, 
    --time=status         # 和-lt一起使用,按 ctime 排序,并显示 ctime
                          # 和-l一起使用,按文件名排序,显示 ctime
                          # 单独使用,按 ctime 纵向排序,时间最新的在最前面

-u                        # 和-lt共用: 显示并以access time排序
                          # 和-l共用: 显示access time,以文件名排序
                          # 否则以access time排序,最新的优先

-S, --sort=size           # 按文件大小排序,大文件靠前
-X, --sort=extension      # 按文件扩展名排序,没有扩展名的先列出
--sort=WORD               # 按 WORD 排序: none (-U), size (-S), 
                          # time (-t), version (-v), extension (-X)
--time=WORD               # 和-l共用,显示WORD时间,而不是modification时间
                          # WORD: atime or access or use (-u); 
                          #       ctime or status (-c); 
                          # 当与 --sort=time 共用时,WORD是用于排序的时间
--group-directories-first # 将目录排在文件前面

cd - 进入目录

cd - change working directory - 进入指定目录。

pwd - 打印当前目录

pwd - print working directory - 打印当前目录的绝对路径。

mkdir - 创建目录

mkdir - make directory - 创建目录,若目录已存在,默认报错。
-m, --mode=MODE # 设置文件权限(类似chmod),不会减去umask
-p, --parents   # 如果目录已存在不会报错;根据需要创建父目录
-v, --verbose   # 为创建的每个目录显示一条消息

rm - 删除文件或目录

rm - remove - 删除文件或目录。
-f, --force          # 忽略不存在的文件和参数,从不提示
-i                   # 在每次删除之前提示,默认行为
-1                   # 在删除三个以上的文件之前或递归删除时,提示1次
--interactive[=WHEN] # 根据WHEN进行提示: never, once (-I), or always (-i)
--one-file-system    # 递归删除时,跳过任何与指定文件系统不同的目录
--no-preserve-root   # 不保护'/'目录
--preserve-root      # 不删除'/' (默认)
-r, -R, -recursive   # 递归删除目录及其内容
-d, --dir            # 删除空目录

rmdir - 删除空目录

rmdir - remove directory - 删除空目录。
--ignore-fail-on-non-empty # 忽略目录非空导致的失败
-p, --parents              # 删除目录及其父目录

mv - 重命名 / 移动文件或目录

mv - 移动文件或目录;重命名。
--backup[=CONTROL]               # 备份每个现有目标文件
-b                               # 类似--backup,但不接受参数
-f, --force                      # 覆盖前不提示
-i, --interactive                # 覆盖前提示
-n, --no-clobber                 # 不覆盖现有文件
--strip-trailing-slashes         # 从每个SOURCE参数中删除所有尾随斜杠
-S, --suffix=SUFFIX              # 覆盖通常的备份后缀
-t, --target-directory=DIRECTORY # 将所有的SOURCE移至DIRECTORY
-T, --no-target-directory        # 将DEST视为普通文件
-u, --update                     # 仅在SOURCE比DEST更新时,或DEST不存在时移动

cp - 复制文件或目录。

cp:复制文件或目录。

-a, --archive         # 等效于-dR --preserve=all
--attributes-only     # 不复制文件数据,仅复制属性
--backup[=CONTROL]    # 对每个存在的目标文件进行备份
-b                    # 类似--backup,但不接受参数
--copy-contents       # copy contents of special files when recursive
-d                    # 等效于--no-dereference --preserve=links
-f, --force           # 如果已存在的目标文件不能打开,删除它并重试
                      # 当-n选项也被使用时,该选项将被忽略 
-i, --interactive     # 覆盖前提示,该选项会被-n覆盖
-H                    # follow command-line symbolic links in SOURCE
-l, --link            # 创建硬链接,而不是复制
-L, --dereference     # always follow symbolic links in SOURCE
-n, --no-clobber      # 不要覆盖已有的文件
-P, --no-dereference  # never follow symbolic links in SOURCE
-p                    # 等效于--preserve=mode,ownership,timestamps
--preserve[=ATTR_LIST]# 尽可能保留指定的属性(default:mode,ownership,timestamps)
                      # additional attributes: context, links, xattr,all
--no-preserve=ATTR_LIST # 不保留指定的属性
--parents             # 在目标目录下使用完整的源文件名
-R, -r, --recursive   # 递归复制目录
--reflink[=WHEN]      # control clone/CoW copies. See below
--remove-destination  # 复制前,直接移除已存在的目标文件,和--force冲突
--sparse=WHEN         # control creation of sparse files. See below
--strip-trailing-slashes  # 移除源文件的尾随斜杠
-s, --symbolic-link   # 创建符号链接,而不是复制
-S, --suffix=SUFFIX   # override the usual backup suffix
-t, --target-directory=DIRECTORY # 复制所有指定的SOURCE到DIRECTORY
-T, --no-target-directory # 将DEST视为普通文件
-u, --update          # 只有SOURCE文件比目标文件更新,或目标文件不存在时才复制

gzip - 压缩文件

zcat - 读取gzip文件

zcat:读取gzip文件,而无需先解压缩它们。

文件编辑

head - 查看文件头部

-c, --bytes=[-]NUM    # 打印每个文件的前NUM个字节
                      # 以'-'开头, 打印所有内容,除了最后一个NUM bytes
-n, --lines=[-]NUM    # 打印前NUM行,默认为前10行
                      # 以'-'开头, 打印所有内容,除了最后一个NUM lines
-q, --quiet, --silent # 不打印标题
-v, --verbose         # 总是打印标题
-z, --zero-terminated # 行终止符为NUL,而不是换行符

tail - 查看文件尾部

-c, --bytes=[+]NUM  # 输出最后NUM个字节;
                    # 或使用-c +NUM输出从NUM字节开始的内容
-f,                 # 显示文件新追加的内容,查看日志文件比较有用
--follow [={name|descriptor}]
-F                  # 与--follow=name --retry相同
-n, --lines=[+]NUM  # 输出最后NUM行,默认为最后10行;
                    # 或使用-n +NUM从NUM行开始输出
--max-unchanged-stats=N # 和--follow=name共用
                        # 重新打开在N次(默认5次)迭代后未更改大小的FILE,
                        # 以查看其是否已取消链接或重命名
                        #(这是循环日志文件的常见情况); 
                        # 使用inotify时,此选项很少有用
--pid=PID               # 和-f共用,在进程PID终止之后,停止打印
--retry                 # 如果无法访问文件,不断尝试
-s, --sleep-interval=N  # 和-f共用,睡眠大约N秒,默认值为1.0;
                        # 和inotify或--pid=P共用,每N秒检查进程PID至少一次
-z, --zero-terminated   # 行定界符为NUL,而不是换行符

cat - 显示文件内容

cat:在终端显示文件内容、将输入终端的文本保存进文件、将多个文本文件保存到一个文本文件。

  1. > :表示覆盖原内容
  2. >> :表示追加
-A, --show-all          # 等效于-vET
-b, --number-nonblank     # 给非空行编号
-e                      # 等效于-vE
-E, --show-ends         # 每行末尾显示$
-n, --number            # 给每行编号
-s, --squeeze-blank     # 多个连续的空行替换为一个空行
-t                      # equivalent to -vT
-T, --show-tabs         # 将TAB characters显示为^I
-v, --show-nonprinting  # 使用^和M-表示法, LFD和TAB除外

less - 浏览文件内容

less:分屏上下翻页浏览文件内容。用PageUp键向上翻页,用PageDown键向下翻页。按Q键退出less程序。

wc - 统计文件字数

wc:统计文件的字节数、字数、行数。

grep - 搜索文本

grep:在文件中搜索文本,可以使用正则表达式。

sort - 排序文本

sort:排序文本(文本可以来自终端输入、也可以来自文件)。

用户管理

who - 当前所有登陆用户的信息

-a, --all      # 等价于调用 '-b -d --login -p -r -t -T -u'
-b, --boot     # 上次系统启动的时间
-d, --dead     # 打印 dead 状态的进程
-H, --heading  # 打印列标题行
-l, --login    # 打印系统登录进程
--lookup       # 尝试通过 DNS 规范主机名
-m             # 仅显示和标准输入关联的主机名和用户
-p, --process  # 打印由 init 生成的活动进程
-q, --count    # 列出所有已登录用户的名称和数量
-r, --runlevel # 打印当前运行级别
-s, --short    # 仅打印名称、行和时间(默认)
-t, --time     # 打印上次系统时钟更改
-u, --users    # 列出登录的用户
-T, -w, --mesg, --message, --writable 
               # 将"+、-、?"中的一个作为用户的消息状态添加到用户名称后面
               #   '+'  允许写入信息
               #   '-'  禁止写入信息
               #   '?'  不能查找到终端设备

whoami - 打印与当前有效用户ID关联的用户名。

chmod - 更改权限

change the permissions mode of a file.

  • 通过符号组合的方式更改目标文件或目录的权限。
  • 通过八进制数的方式更改目标文件或目录的权限。
  • 通过参考文件的权限来更改目标文件或目录的权限。
权限 数字表示 文件 目录
r 4 - $2^2$ 可读取、复制文件 可列出目录的内容
w 2 - $2^1$ 可写入、修改文件 可在目录中创建、删除文件
x 1- $2^0$ 可执行文件 可进入目录
Symbol Meaning
u user
g group
o other
a all
r read
w write (and delete)
x execute (and access directory)
+ add permission
- take away permission
Usage: chmod [{ugoa}{+-=}{rwx}] [文件或目录] 
             [mode=421] [文件或目录]
-c, --changes      # 当文件的权限更改时输出操作信息
--no-preserve-root # 不保护根目录,默认选项
--preserve-root    # 不能在根目录下递归操作
-f, --silent,      # 抑制多数错误消息的输出
    --quiet 
-v, --verbose      # 无论文件是否更改了权限,一律输出操作信息
--reference=RFILE  # 使用参考文件或参考目录RFILE的权限来设置目标文件或目录的权限
-R, --recursive    # 递归更改权限

程序管理

ps sleep 10 & & 在后台运行作业并立即返回提示,允许您在等待该作业完成时运行其他程序。

bg - 后台执行

bg:将任务放到后台执行。

fg - 前台执行

fg:将后台任务放到前台终端执行。

jobs - 显示任务列表

jobs:显示任务列表及任务状态

kill - 终止程序

kill:删除执行中的程序或工作。

磁盘管理

df - 显示磁盘相关信息

df .
% 显示当前目录磁盘相关信息(文件系统、挂载点等等)

du - 显示每个子目录使用的千字节数

du:du 命令输出每个子目录使用的千字节数。如果磁盘空间不足,希望找出哪个目录中的文件最多,则此选项非常有用。

du -s *

file - 文件分类

file:根据命名文件包含的数据类型对其进行分类,例如 ascii(文本)、图片、压缩数据等。

file *
% 报告主目录中的所有文件

find - 查找文件

find:这将在目录中搜索具有给定名称、日期、大小或任何其他要指定的属性的文件和目录。这是一个简单的命令,但有许多选项,可以通过键入man find来阅读手册。

例如:要搜索扩展名为.txt的所有文件,从当前目录(.)开始,遍历所有子目录,然后将文件名打印到屏幕上:

find . -name "*.txt" -print

搜索当前目录中大于1兆的文件:

find . -size +1M -ls

参考网址

https://www.linuxcool.com/

http://www.ee.surrey.ac.uk/Teaching/Unix/

https://www.runoob.com/linux/linux-command-manual.html

http://c.biancheng.net/linux_tutorial/10/