Linux操作系统提供了丰富的命令行工具和命令,用于执行各种任务。以下是一些常见的Linux命令的种类:
-
文件和目录操作命令:
-
ls
:列出目录内容
-l :以长格式列出文件和目录,包括详细信息如文件权限、所有者、大小、修改日期等。 |
-a :显示所有文件,包括隐藏文件(以. 开头的文件和目录)。 |
-h :以易读的方式显示文件大小,例如 KB、MB 等。 |
-r :反向排序,按字母顺序逆序列出文件和目录。 |
-t :按修改时间排序,最新修改的文件和目录排在前面。 |
-S :按文件大小排序,最大的文件排在前面。 |
-d :仅列出目录本身,而不显示目录中的文件和子目录。 |
-
cd
:更改当前工作目录
cd [目录]:切换到指定目录。例如,cd /home/user 将当前工作目录更改为 "/home/user"。 |
cd ~ 或 cd:切换到当前用户的主目录(家目录)。 |
cd -:切换到上一个工作目录。这对于在两个目录之间来回切换很有用。 |
cd ..:切换到当前目录的父目录。 cd ../..:上移两级目录。 cd /:切换到根目录。 |
cd ./目录 或 cd 目录:切换到当前目录下的子目录。这两种方式等效。 |
cd -P 目录:使用绝对路径切换到目标目录。 |
cd -L 目录:使用符号链接路径切换到目标目录。 |
-
pwd
:显示当前工作目录的路径
-L:强制 pwd 显示逻辑路径,而不是物理路径。通常,这两者在符号链接存在时会有差异。 |
-P:强制 pwd 显示物理路径,而不是逻辑路径。 |
-
touch
:创建空文件
-a:只更改访问时间(atime)而不更改修改时间(mtime) |
-c:如果文件不存在,不创建新文件,也不显示错误消息。 |
-d:使用指定的日期时间,而不是当前日期时间。例如,touch -d "2023-09-11 14:30:00" filename 。 |
-h:如果文件是符号链接,则不会跟踪符号链接,而是更新符号链接本身的时间戳。 |
-m:只更改修改时间(mtime)而不更改访问时间(atime)。 |
-r FILE:将文件的时间戳设置为与另一个文件相同。 |
--time=WORD:用于指定要更改的时间戳类型,可以是以下之一:
|
-
mkdir
:创建新目录
-m, --mode=MODE:设置新目录的权限模式。可以使用八进制数字来指定权限,例如,"mkdir -m 755 mydir" 将创建一个具有 rwxr-xr-x 权限的目录。 |
-p, --parents:递归创建目录,如果上级目录不存在,则会自动创建上级目录。例如,"mkdir -p /path/to/mydir" 将创建 "/path/to/mydir" 目录及其可能不存在的上级目录。 |
-
rm
:删除文件或目录
-f:强制删除文件,不会提示用户确认。 -i:删除文件之前会提示用户进行确认。 |
-r 或 -R:递归删除目录及其内容,即使目录非空也会删除。 |
--preserve-root:禁止删除根目录 ("/")。 |
--no-preserve-root:允许删除根目录 ("/")。需要谨慎使用,因为这会导致系统不可恢复地损坏。 |
--interactive=always:与 -i 类似,但始终提示用户进行确认。 |
--one-file-system:在递归删除目录时,只删除当前文件系统中的文件和目录,而不越界到其他挂载的文件系统。 |
--dir:删除目录,而不是删除目录中的内容。需要与 |
-
cp
:复制文件或目录
-a, --archive:以归档模式复制文件和目录,保留文件的所有元数据,包括权限、所有者、时间戳等。这通常用于备份目录。 |
-i, --interactive:在复制之前提示是否覆盖现有文件。 -r, -R, --recursive:递归复制目录及其内容。 |
-u, --update:仅复制源目录中比目标目录新或不存在于目标目录中的文件。 |
-l, --link:创建硬链接而不是复制文件。这将创建一个指向相同数据的链接,而不会占用额外的磁盘空间。 |
-s, --symbolic-link:创建符号链接而不是复制文件。符号链接是指向原始文件或目录的快捷方式 |
-b, --backup:在复制文件时,如果目标文件已经存在,则创建备份副本。 |
-f, --force:强制复制,即使目标文件已经存在也会覆盖它。 -n, --no-clobber:不覆盖已存在的目标文件。 |
-
mv
:移动或重命名文件或目录
-i:在移动或重命名文件之前进行交互式确认。如果目标文件已经存在,会询问是否覆盖。 |
-u:仅在源文件比目标文件新或目标文件不存在时才进行移动。 |
-v:详细模式,显示每个文件的移动操作 |
-
文件查看和编辑命令:
-
cat
:显示文件内容
-A:显示所有特殊字符(包括不可打印字符)和行结束符($、^、M-)。 |
-b:对非空行编号,空行不编号。 |
-e:在每行的末尾显示一个 "$" 符号,类似于 "-vE" 的组合。 |
-n:对所有行进行编号,包括空行。 |
-s:将多个空行压缩成一个空行。 |
-T:将制表符显示为 "^I"。 |
-v:显示不可打印字符(制表符、换行符等)。 |
-
more
和less
:逐页查看文件内容
more
-d:在每一页的底部显示更多提示,表示还有更多内容可查看。 |
-l:将 "more" 视为一个过滤器,将控制字符(如退格符)显示为 ^H 等特殊表示。 |
-c:清除屏幕后显示文件内容,类似于 clear 命令。 |
-num:指定每页显示的行数,例如,more -10 filename 将每页显示 10 行。 |
+num:从文件的第 num 行开始显示内容,例如,more +5 filename 将从文件的第 5 行开始显示。 |
-p:使用不同的提示字符(默认为 ":")来表示还有更多内容可查看。 |
-s:合并多个空白行为一个空白行。 |
less
-N:显示行号,将每一行的行号显示在屏幕的左边。 -i:忽略搜索时的大小写,使搜索不区分大小写。 |
-m:显示文件中的所有字符,包括制表符,使制表符可见。-n number:从指定行号开始查看文件。 |
-R:显示颜色代码,用于着色语法高亮显示。 -F:在只有一页内容的情况下,不显示"END"提示。 |
-X:不清除屏幕内容,而是滚动显示内容,适合查看类似日志的文件。 -b:不显示警告音。 |
-S:不分行显示长行,而是水平滚动以查看整行。 -q:退出 less 命令后,不显示警告提示。 |
-E:在文件末尾显示"$"符号,表示文件的结尾。 -P prompt:自定义搜索提示符,取代默认的 "/"。 |
-p pattern:指定搜索模式,从文件开头开始搜索指定的模式。-n number:从指定行号开始查看文件。 |
-
nano
和vim
:文本编辑器
nano
-A, --smarthome:允许智能 Home 键,它会在当前行的非空字符之前移动到行的开头,再按一次会移动到第一个非空字符。 |
-B, --backup:在保存文件时创建备份文件。 -C, --constantshow:始终显示光标的行和列位置。 |
-E, --tabstospaces:将制表符转换为空格。 -H, --historylog:启用历史记录文件的记录功能。 |
-i, --autoindent:自动缩进新行,与智能缩进选项结合使用。 -N, --noconvert:禁用自动换行。 |
-k, --cut:剪切当前行的光标位置之前的文本。 -q, --quiet:静默模式,禁用所有警告和提醒。 |
-S, --smooth:启用平滑滚动。-t, --preserve:保持原始时间戳。-T, --tempfile:指定临时文件目录。 |
-u, --undo:启用撤销功能。-v, --view:以只读模式打开文件,禁止编辑。-w, --nowrap:禁止自动换行。-x, --nohelp:不显示底部的帮助文本。-Y, --syntax:指定语法高亮的文件类型。-z, --suspend:挂起编辑器。--mouse:启用鼠标支持。--preserve:保留原始时间戳。 |
vim
-c, --command COMMAND:在启动时执行指定的 Vim 命令。-s, --script:进入批处理脚本模式。 |
-R, --readonly:以只读模式打开文件,禁止编辑。-w, --write FILE:将缓冲区写入指定的文件。 |
-q, --quickfix:进入快速修复模式,用于处理编译错误等。-o[N], --open[N]:将多个文件分割成 N 个窗口打开。 |
-e, --ex:进入 ex 模式(批处理模式),用于批处理编辑任务。-d, --diff:启动 Vim 以比较两个或多个文件的差异。 |
-D, --nofork:不使用后台进程运行 Vim。-E, --easy:进入易用模式,禁用一些复杂的功能。 |
-s, --script:进入批处理脚本模式。-n, --noeb:禁用错误消息铃声和屏幕闪烁。 |
-u, --user EXRC:使用指定的 .vimrc 文件。-U, --noplugin:启动时禁用所有插件。-i, --startuptime FILE:将启动时间信息写入指定文件。--cmd COMMAND:在启动时执行 Vim 命令。-r, --recovery:恢复 Vim 之前的会话。 |
-
head
和tail
:显示文件的开头或结尾部分
head
-n NUM, --lines=NUM:指定要显示的行数。例如,使用 -n 5 将显示前 5 行。 |
-c NUM, --bytes=NUM:指定要显示的字节数,而不是行数。例如,使用 -c 100 将显示前 100 个字节。 |
-q, --quiet, --silent:不显示文件名行,仅显示内容。-v, --verbose:显示文件名行,以及内容。 |
-z, --zero-terminated:使用零字符作为行分隔符,而不是默认的换行符。 |
-f, --follow=NAME:与 -F 选项一起使用,如果文件被重命名,则继续跟踪它。 |
-F, --follow=name:与 -f 选项一起使用,如果文件被重新创建,则继续跟踪它。 |
例如,要查看文件 "example.txt" 的前 20 行,可以使用以下命令:head -n 20 example.txt |
tail
-n, --lines=K:显示文件的最后 K 行内容。默认是显示最后 10 行。-c, --bytes=K:显示文件的最后 K 字节内容。 |
-f, --follow[={name|descriptor}]:实时跟踪文件的内容变化,持续显示新添加到文件的内容。如果指定了文件名,则跟踪该文件;如果指定了文件描述符,则跟踪该描述符指向的文件。 |
-F, --follow=name:与 -f 类似,但如果文件被旋转或删除,它会尝试重新打开文件。 |
-q, --quiet, --silent:不显示文件名作为输出的一部分。 |
--pid=PID:与 -f 一起使用,指定进程 ID(PID),当该进程终止时,停止 tail。 |
--max-unchanged-stats=N:与 -F 一起使用,指定连续 N 次轮询文件后,如果文件未更改,则退出。 |
--retry:与 |
-
文件权限和用户管理命令:
-
chmod
:修改文件权限
数字的值可以是 0 到 7,分别表示不同的权限组合。
文件权限有三个数值位分别为:文件所有者(user)、文件所属组(group)和其他用户(other)的权限。 |
"+":添加权限。例如,chmod +x filename 将添加执行权限。 |
"-":移除权限。例如,chmod -w filename 将移除写权限。 |
"=":设置权限。例如,chmod =rwx filename 将设置文件的权限为读、写、执行。 |
-R:递归地更改文件和目录的权限。例如,
|
-
chown
:修改文件所有者
-c, --changes:仅在更改了文件或目录的所有者和/或所属组时才显示详细的输出。 |
-f, --quiet, --silent:不显示错误消息。 |
-h, --no-dereference:不要跟随符号链接的目标,而是更改符号链接本身的所有者/所属组。 |
-R, --recursive:递归地更改目录及其内容的所有者和/或所属组。 |
--dereference:跟随符号链接的目标,而不是更改符号链接本身的所有者/所属组。 |
--from=原所有者:原所属组:仅更改指定原所有者和/或原所属组的文件或目录的所有者和/或所属组。 |
--reference=参考文件或目录:使用参考文件或目录的所有者和/或所属组来设置目标文件或目录的所有者和/或所属组。 |
-
useradd
和userdel
:添加或删除用户
useradd
-d, --home DIRECTORY:指定用户的家目录,即用户登录后默认所在的目录。 |
-e, --expiredate EXPIRE_DATE:设置用户账户的过期日期,日期格式为 YYYY-MM-DD。 |
-f, --inactive INACTIVE:设置用户账户处于无效状态的天数,过了这个期限用户账户将被禁用。 |
-g, --gid GROUP:指定用户的初始登录组。-G, --groups GROUPS:指定用户所属的其他附加组。 |
-M, --no-create-home:不创建用户的家目录。-m, --create-home:创建用户的家目录(默认行为)。-s, --shell SHELL:指定用户的登录 shell。-u, --uid UID:为用户分配一个特定的用户ID(UID)。-Z, --selinux-user SEUSER:指定用户的 SELinux 用户。 |
-N, --no-user-group:不为用户创建与用户名相同的初始登录组。-P, --password PASSWORD:设置用户的加密密码(不安全,建议使用 passwd 命令来设置密码)。 |
-r, --system:创建系统用户。系统用户通常用于运行服务和进程,并不允许直接登录。-k, --skel SKEL_DIR:指定一个骨架目录,用于初始化用户的家目录。-U, --user-group:创建一个与用户名相同的初始登录组。 |
-
passwd
:更改用户密码 -
系统信息和状态命令:
-
top
:显示系统进程信息
-d seconds:指定 top 命令的刷新频率,以秒为单位。例如,top -d 5 将每 5 秒刷新一次信息。 |
-n iterations:指定 top 命令将显示的迭代次数,然后退出。例如,top -n 10 将显示 10 次信息并退出。 |
-b:以批处理模式运行 top,将输出结果作为纯文本而不是交互式界面。 -i:显示闲置进程。 |
-c:显示进程的命令行参数,以便更容易识别进程。 |
-p PID1,PID2,...:仅显示指定进程的信息,使用逗号分隔多个进程 ID。 |
-u username:仅显示属于指定用户名的进程信息。-U username:仅显示属于指定用户名的进程信息,但同时显示其他进程。-s:累计模式,显示自启动以来的系统统计信息。 |
-S:安全模式,阻止执行部分命令(仅限特权用户)。-h:显示帮助信息,列出 top 命令的各个选项。-V:显示 top 命令的版本信息。 |
-
ps
:显示进程列表
-a:显示所有进程,包括其他用户的进程。-f:以完整格式显示进程信息,包括父进程 ID (PPID) 等。 |
-x:显示没有终端的进程。-e:显示所有进程,等效于 -A 选项。-u:以用户为基础显示进程信息。 |
-l:以长格式显示进程信息,包括更多的详细信息,如进程状态、启动时间等。 |
-p PID:显示指定 PID 的进程信息。-t:显示与终端相关的进程。-r:显示正在运行的进程。 |
-H:显示进程的层次结构,包括父子关系。-o FORMAT:自定义输出格式,可以指定要显示的字段。 |
-c CLASS:仅显示指定进程类别的进程。-N:选择不显示的字段。--sort:根据指定的字段进行排序。 |
--forest:以树状结构显示进程的层次关系。--pid:仅显示指定 PID 的进程及其子进程。--ppid:仅显示指定 PPID 的进程。--sid:仅显示指定会话 ID 的进程。 |
-
df
:显示磁盘空间使用情况
-a, --all:显示所有文件系统,包括系统保留的文件系统。 |
-B, --block-size=SIZE:以指定的块大小显示磁盘使用情况。 |
-h, --human-readable:以人类可读的方式显示磁盘空间大小(例如,1K、2M、3G)。 |
-H, --si:与 -h 一起使用,使用国际单位制(1000,而不是1024)来显示大小。 |
-i, --inodes:显示文件系统的 inode 使用情况而不是磁盘空间使用情况。 |
-k:以千字节为单位显示磁盘使用情况。-m, --portability:以POSIX兼容的方式显示磁盘使用情况。 |
-l, --local:仅显示本地文件系统,不包括 NFS 或其他远程文件系统。--total:显示所有文件系统的总计信息。-t, --type=TYPE:仅显示指定类型的文件系统。例如,使用 -t ext4 仅显示 ext4 文件系统。 |
-
du
:显示目录的磁盘使用情况
-a, --all:显示所有文件和目录的大小,而不仅仅是目录。-b, --bytes:以字节为单位显示大小。 |
-c, --total:在输出的最后一行显示总计大小。-k, --kilobytes:以千字节为单位显示大小。 |
-h, --human-readable:以人类可读的方式显示大小(例如,使用 K、M、G 等单位)。 |
-s, --summarize:仅显示每个命令行参数的总大小,而不显示子目录的详细信息。 |
-m, --megabytes:以兆字节为单位显示大小。-g, --gigabytes:以千兆字节为单位显示大小。 |
-L, --dereference:跟踪符号链接的目标文件的大小。--time:显示每个文件和目录的修改时间。 |
-x, --one-file-system:仅显示指定目录下的文件和子目录的大小,不进入其他文件系统。 |
-
uname
:显示系统信息
-a, --all:显示所有可用的信息。这是默认选项,如果不指定其他选项,则 "uname" 命令将显示所有信息。 |
-s, --kernel-name:仅显示内核名称。-v, --kernel-version:仅显示内核详细版本信息。 |
-n, --nodename:仅显示网络节点主机名。-m, --machine:显示计算机硬件架构。 |
-r, --kernel-release:仅显示内核版本。 |
-p, --processor:显示处理器类型。 |
-i, --hardware-platform:显示硬件平台。 |
-o, --operating-system:显示操作系统名称。 |
-
网络命令:
-
ifconfig
:显示和配置网络接口
-a, --all:显示所有网络接口,包括未激活的接口。 |
-v, --verbose:以详细的格式显示接口信息。 |
-s, --short:以简短的格式显示接口信息。 |
-i, --interface INTERFACE:指定要显示或配置的网络接口名称。 |
-n, --noresolve:禁止解析主机名。 |
-
ping
:测试主机之间的网络连接
-c count:指定发送和接收数据包的次数。例如,-c 5 将 ping 命令限制为发送和接收 5 个数据包,然后停止。 |
-i interval:设置发送数据包之间的时间间隔(秒)。默认情况下,间隔为 1 秒。 |
-s packetsize:设置发送数据包的大小(字节)。默认情况下,数据包大小为 56 字节(包括 ICMP 头)。-n:不要将 IP 地址解析为主机名。-U:使用 RFC 4821 可达性检测(RFD)模式进行 ping。 |
-t ttl:设置数据包的生存时间(TTL),即数据包在网络上允许传播的最大跃点数。默认情况下,TTL 为 64。-W timeout:设置等待每个响应的超时时间(秒)。-4:仅使用 IPv4 进行 ping。-6:仅使用 IPv6 进行 ping。 |
-q:以静默模式运行,只显示摘要信息而不显示每个数据包的详细信息。-v:详细显示每个接收到的数据包的信息。 |
-w deadline:设置 ping 命令的超时时间,即 ping 命令将等待的最长时间(秒)。-A:使用 Audible ping 模式,即发出声音以指示每个响应。 |
-b:使用广播地址发送 ping 请求。-I interface:指定要使用的网络接口,用于发送 ping 请求。 |
-
netstat
:显示网络状态
-a, --all:显示所有的套接字(包括监听套接字和已建立的连接)。-e, --extend:显示更多详细信息,如用户和节点。-i, --interfaces:显示网络接口的信息,包括输入、输出、错误等统计数据。 |
-c, --continuous:持续输出信息,不停地刷新屏幕,用于监视网络状态的实时变化。 |
-l, --listening:仅显示监听状态的套接字。-n, --numeric:以数字形式显示地址和端口,而不解析主机名和服务名。-p, --program:显示与套接字相关的进程信息,包括 PID 和进程名称。 |
-o, --timers:显示计时器信息,如 TCP 连接的超时时间。-r, --route:显示路由表信息。 |
-s, --statistics:显示各种网络统计信息,如 TCP、UDP、ICMP 等。-t, --tcp:仅显示 TCP 协议相关的信息。-u, --udp:仅显示 UDP 协议相关的信息。-w, --raw:显示 RAW 套接字的信息。 |
-x, --unix:显示 UNIX 套接字的信息。-F, --fib:显示 FIB(Forwarding Information Base)信息,用于路由选择。 |
-h, --help:显示帮助信息,列出所有选项和其说明。 |
-
ssh
:远程登录到其他计算机
-l username:指定要登录的用户名。-p port:指定远程 SSH 服务器的端口号(默认是 22)。 |
-i identity_file:指定要使用的身份文件(私钥文件)。-A:启用 SSH 代理转发。 |
-X:启用 X11 转发,允许在远程服务器上运行图形应用程序并将其显示在本地 X 服务器上。 |
-t:在远程服务器上分配一个伪终端。-T:不分配伪终端。-v:详细模式,显示详细的调试信息。 |
-q:静默模式,减少输出信息。-C:启用压缩。-N:不执行任何远程命令,仅建立 SSH 连接。 |
-f:在后台运行 SSH 客户端。-L [bind_address:]port:host:hostport:本地端口转发。-R [bind_address:]port:host:hostport:远程端口转发。-D port:动态端口转发,创建 SOCKS 代理。 |
-o option=value:设置 SSH 客户端配置选项。-F configfile:指定 SSH 客户端配置文件。 -b bind_address:指定本地地址绑定。-E log_file:指定错误日志文件。-J destination:跳板主机,连接通过指定的跳板主机。 |
-
wget
和curl
:下载文件或内容
-b, --background:将下载任务放到后台运行。-P, --directory-prefix=PREFIX:指定下载文件的保存目录。-O, --output-document=FILE:将下载的文件保存为指定的文件名。 |
-c, --continue:继续之前的下载,如果文件已经存在,则从上次下载的地方继续下载。 |
-q, --quiet:安静模式,不显示下载进度信息。-N, --timestamping:只下载比本地文件新的文件。 |
-nc, --no-clobber:不覆盖已经存在的文件,如果文件已存在,则不下载。 |
-i, --input-file=FILE:从指定的文件中读取下载链接。-r, --recursive:递归下载,下载链接中包含的所有文件和子目录。-l, --level=DEPTH:设置递归下载的最大深度。-np, --no-parent:不下载父目录中的文件。-U, --user-agent=AGENT:设置用户代理字符串,模拟不同的浏览器或客户端。 |
-A, --accept=LIST:只下载指定扩展名的文件。-R, --reject=LIST:不下载指定扩展名的文件。 |
--limit-rate=RATE:限制下载速度。--no-check-certificate:不检查服务器 SSL 证书的有效性。 --header=STRING:向请求添加自定义 HTTP 标头。--post-data=STRING:将 POST 请求数据发送给服务器。--spider:仅检查链接的有效性,不下载文件。--no-verbose:禁止详细输出,减少输出信息。--retry-connrefused:连接被拒绝时自动重试。--timeout=SECONDS:设置超时时间。 --tries=NUMBER:设置最大重试次数。--user=USER:设置 HTTP 基本认证的用户名。 --password=PASSWORD:设置 HTTP 基本认证的密码。 |
-
压缩和解压命令:
-
tar
:创建和解压归档文件
-c, --create:创建归档文件。-x, --extract, --get:提取归档文件的内容。 |
-f, --file:指定归档文件的名称。-v, --verbose:详细模式,显示执行的操作。 |
-t, --list:列出归档文件中的内容。-z, --gzip:使用 gzip 压缩归档文件。 |
-j, --bzip2:使用 bzip2 压缩归档文件。-Z, --compress:使用 compress 压缩归档文件。 |
-P, --absolute-names:以绝对路径存储文件和目录。-r, --append:将文件附加到归档文件的末尾。 |
-u, --update:仅将新于归档文件中的文件添加到归档中。-A, --catenate, --concatenate:将多个归档文件连接在一起。-d, --diff, --compare:比较归档文件和文件系统之间的差异。 |
-t, --files-from=FILE:从指定的文件中读取文件和目录列表,然后创建归档。-C, --directory=DIR:在提取文件时指定目标目录。--delete:从归档文件中删除指定的文件。 --exclude=PATTERN:在创建或提取归档文件时排除符合指定模式的文件。 --exclude-from=FILE:从指定文件中读取排除模式。 --anchored:排除模式将从文件名的开始匹配。 --wildcards:排除模式中允许使用通配符。 --null:以空字符作为文件名分隔符,用于处理特殊文件名。 --to-stdout:将归档文件的内容写入标准输出。 --totals:在提取文件时显示总字节数和文件数。 |
-
zip
和unzip
:压缩和解压ZIP文件
zip
-r, --recurse-paths:递归地添加目录中的文件和子目录。 |
-q, --quiet:静默模式,减少输出信息。-u, --update:仅更新已存在的 ZIP 文件中的文件。 |
-j, --junk-paths:不保存任何目录路径信息。 |
-d, --delete:从 ZIP 文件中删除指定文件。 |
-m, --move:将文件移动到 ZIP 文件,而不是复制。 |
-g, --grow:允许 ZIP 文件动态增长。 |
-9, --best:使用最佳压缩级别。 |
unzip
-l, --list:列出 ZIP 文件中的文件列表,但不解压缩。-d, --extract-to-dir:解压缩文件到指定目录。 |
-t, --test:测试 ZIP 文件的完整性。-c, --extract:解压缩文件,不保留目录结构。 |
-f, --freshen:仅解压缩那些在目标目录中不存在的文件。 |
-n, --never-overwrite:不覆盖已存在的文件。 |
-u, --update:仅解压缩目标目录中不存在的文件。 |
-v, --verbose:详细输出模式。 |
-q, --quiet:静默模式,减少输出信息。 |
-
软件包管理命令(依赖于Linux发行版):
-
apt
(Debian/Ubuntu):APT包管理器
update:更新可用软件包列表。purge PACKAGE:卸载指定软件包并删除其配置文件。 |
upgrade:升级已安装的软件包到最新版本。show PACKAGE:显示软件包的详细信息。 |
dist-upgrade:升级系统中的所有软件包,包括新的依赖关系。list:列出已安装的软件包。 |
install PACKAGE:安装指定软件包。autoremove:自动删除不再需要的依赖关系。 |
remove PACKAGE:卸载指定软件包。search PATTERN:搜索软件包名称或描述中包含指定模式的软件包。clean:删除下载的软件包文件。autoclean:删除已过期的软件包文件。check:检查软件包的完整性。edit-sources:编辑软件源列表。download PACKAGE:仅下载软件包,而不安装它。 注:这个选项不用加杠,“-”。 |
-
yum
(Red Hat/CentOS):YUM包管理器
-C, --cacheonly:只使用缓存,不检查远程仓库。-y, --assumeyes:在不需要用户确认的情况下安装/删除软件包。-c, --config=FILE:指定配置文件的位置。-d, --disablerepo=REPO:禁用指定的仓库。 |
-e, --errorlevel=LEVEL:设置错误报告级别(1 - 致命错误,2 - 错误,3 - 警告)。-h, --help:显示帮助信息。-v, --verbose:详细输出模式,显示更多信息。 |
-q, --quiet:安静模式,只显示错误和警告信息。-R, --enablerepo=REPO:启用指定的仓库。 |
-y, --assumeyes:在不需要用户确认的情况下执行操作。-t, --tolerant:容忍软件包事务中的错误。 |
-x, --exclude=PACKAGE:排除指定的软件包。--enablerepo=REPOID:启用指定仓库。 |
--noplugins:禁用插件。--version:显示 yum 的版本信息。--nogpgcheck:禁用 GPG 校验。 |
--noplugins:禁用所有插件。--security:仅列出安全相关的更新。--setopt=OPTION=VALUE:在配置文件中设置选项的值。--disableexcludes=[all|main|repoid]:禁用指定类型的软件包排除规则。 --downloadonly:仅下载软件包,不执行安装或升级操作。 |
-
dnf
(Fedora):DNF包管理器
-C, --cacheonly:只使用缓存的数据,不联机获取更新。-q, --quiet:安静模式,减少输出信息。 |
-c <config_file>, --config <config_file>:指定不同的配置文件。 |
-v, --verbose:详细模式,增加输出信息的详细程度。--skip-broken:跳过解析依赖关系失败的软件包。--installroot=ROOT:将软件包安装到指定的根目录中,用于创建 chroot 环境。 |
-y, --assumeyes:在提示时自动确认操作,无需手动确认。--nogpgcheck:禁用 GPG 检查。 |
--allowerasing:允许包在安装或升级过程中被删除。--repoid=REPOID:指定要操作的存储库的 ID。 |
--best:在依赖解析时选择最佳版本的软件包。--disablerepo=REPOID:禁用指定的存储库,阻止在其中查找软件包。--repofrompath=REPOID,PATH:指定存储库的路径。 |
--releasever=VERSION:指定要使用的版本。--setopt=OPTION=VALUE:设置特定选项的值,可以用于修改 DNF 的全局配置。--enablerepo=REPOID:启用指定的存储库,以便在其中查找软件包。 --downloadonly:仅下载软件包,而不执行安装操作。 --refresh:刷新存储库元数据。 --security:仅列出与安全性相关的更新。 --bugfix:仅列出与错误修复相关的更新。 --enhancement:仅列出与功能增强相关的更新。 --obsoletes:列出被软件包取代的其他软件包。 --search <keyword>:搜索软件包。 |
-
zypper
(openSUSE):Zypper包管理器
--help, -h:显示帮助信息,列出所有可用的命令和选项。--version, -V:显示 zypper 的版本信息。--quiet, -q:以静默模式运行,减少输出信息。 |
--root, -R:指定用于操作的不同 root 目录。--gpg-auto-import-keys:自动导入 GPG 密钥以验证软件包。--no-gpg-checks:禁用 GPG 校验。--plus-repo, -p:启用或禁用指定的附加软件仓库。 |
--repo, -r:启用或禁用指定的软件仓库。--disable-repositories, -d:禁用所有软件仓库。--enable-repositories, -e:启用所有软件仓库。--clean-deps:清除不再需要的依赖关系。--no-refresh:不要刷新软件仓库缓存。--update, -u:更新系统上的所有软件包。--search, -s:搜索可用的软件包。 |
--install, -i:安装指定的软件包。--remove, -r:卸载指定的软件包。--list-updates, -lu:列出可用的软件包更新。--list-patches:列出所有可用的补丁。 |
--refresh, -f:刷新软件仓库缓存。--services:显示系统上所有可用的系统服务。--pkg-size:显示软件包大小信息。--requires:显示软件包的依赖关系。 |
--patch-info, -pi:显示有关指定补丁的详细信息。--export, -x:将软件仓库配置导出到文件。--import, -i:从文件中导入软件仓库配置。 |
--non-interactive, -n:以非交互模式运行,不需要用户确认操作。--verbose, -v:增加详细的输出信息,用于调试。--quiet, -q:减少输出信息。 |
-
系统维护和监控命令:
-
cron
:定时执行任务
-l, --list:列出当前用户的定时任务列表。-r, --remove:删除指定的定时任务。 |
-e, --edit:编辑当前用户的定时任务列表。通常会使用 crontab -e 来编辑任务。 |
-u, --user:指定要操作的用户的用户名。用于以其他用户身份查看或编辑任务。 |
-c, --create:创建一个新的定时任务文件,通常与 -u 一起使用。-i, --install:安装一个新的定时任务列表。 |
-n, --noclear:在编辑定时任务列表时,不清除屏幕,保留终端上的输出。 |
-d, --debug[=debugopts]:启用调试模式,可选的 debugopts 参数用于指定调试级别和选项。 |
-s, --set-variable=VARNAME=VALUE:设置指定的环境变量,用于在定时任务中使用。 |
-
systemctl
:管理系统服务
start UNIT:启动指定的单元。stop UNIT:停止指定的单元。restart UNIT:重新启动指定的单元。 |
reload UNIT:重新加载指定的单元。enable UNIT:在启动时启用指定的单元。 |
disable UNIT:在启动时禁用指定的单元。get-default:获取默认的目标单元。 |
is-enabled UNIT:检查指定单元是否在启动时启用。daemon-reload:重新加载 systemd 系统管理守护进程的配置。set-default TARGET:设置默认的目标单元。 |
status UNIT:显示指定单元的状态和一些信息。preset UNIT...:将指定的单元预设为启用或禁用。 |
mask UNIT:禁用指定的单元,阻止它被启动。unmask UNIT:取消禁用指定的单元。 |
注:"unit" 是一个概念,通常用于描述 systemd 系统管理守护进程中的一个配置单元。 注:这个选项不用加杠,“-”。 |
-
journalctl
:查看系统日志
-a, --all:显示所有日志消息,包括被标记为删除的。-b, --boot=[ID|±offset]:查看指定引导的日志消息,可以使用引导ID或偏移量。-e, --pager-end:在查看日志时将光标定位到最后一行。 |
-f, --follow:实时跟踪日志文件,类似于 "tail -f" 命令。-k, --dmesg:查看内核日志 (dmesg),显示内核消息。-n, --lines=NUM:指定要显示的最大日志行数。-r, --reverse:反向输出日志。 |
-o, --output=FORMAT:指定输出格式,支持的格式包括 "short", "short-iso", "short-precise", "short-monotonic", "verbose", "export", "json", "json-pretty", "json-sse", "cat",等等。-q, --quiet:禁用输出标头信息,只显示日志内容。-u, --unit=UNIT:筛选显示指定 systemd 单元的日志消息。 |
--since=TIME:显示自指定时间后的日志消息。--until=TIME:显示自指定时间前的日志消息。--since=DATE:显示指定日期之后的日志消息。--until=DATE:显示指定日期之前的日志消息。 |
--list-boots:列出可用的引导ID。--list-alog:列出系统日志消息的分类.--disk-usage:显示日志存储磁盘使用情况。--file=FILE:查看指定的日志文件。 |
--vacuum-size=SIZE:执行日志数据库的大小维护,删除多余的日志消息,以减小数据库大小。 |
--vacuum-time=TIME:执行日志数据库的时间维护,删除早于指定时间的日志消息。 |
-
dmesg
:显示内核消息
-c, --clear:清除内核环形缓冲区,将其内容重置为当前状态。 |
-n, --console-level LEVEL:仅显示具有指定级别的消息。LEVEL 可以是数字(如 1)或一个级别名称(如 "err"、"warn"、"info")。 |
-s, --buffer-size SIZE:指定要显示的缓冲区大小,单位为字节。 |
-T, --ctime:显示消息的时间戳以人类可读的格式。 |
-l, --list-levels:列出可用的消息级别。 |
-L, --list-facilities:列出可用的消息设施。 |
-P, --nopager:禁用分页显示,将输出打印到终端而不使用分页器(如 "less")。 |
Shell脚本是一种用于自动化任务和编写一系列命令的脚本语言,通常在Linux和Unix系统中使用。以下是一些常见的Shell脚本命令的种类:
-
echo
:输出文本或变量内容
-n:不输出结尾的换行符。这允许您在输出的文本后面紧接着输出其他内容。 |
-e:启用转义字符的解释,例如 \n 将被解释为换行符。 |
-E:禁用转义字符的解释(默认情况下)。 |
-
read
:从标准输入读取用户输入
-a ARRAY:将输入行拆分为数组,每个元素都存储在 ARRAY 中。通常与 -r 选项一起使用,以避免对反斜杠字符进行转义。 |
-d DELIM:自定义分隔符,用于将输入行拆分为字段。默认情况下,read 使用换行符作为分隔符。DELIM 可以是任何字符。 |
-e:使用 Readline 库来处理输入,这允许您在输入行上使用编辑功能,如删除、移动光标等。这通常在交互式脚本中使用。 |
-n COUNT:读取 COUNT 个字符而不是整行。如果输入行的长度小于 COUNT,则 read 会在遇到换行符之前停止。 |
-p PROMPT:在读取输入之前显示自定义提示。这在需要用户输入信息的脚本中非常有用。 |
-r:禁用反斜杠字符的转义,使 read 不会解释反斜杠字符(\ )作为转义字符。 |
-s:静默模式,不会回显用户的输入。这通常用于输入密码或其他敏感信息。 |
-t TIMEOUT:设置读取超时时间(以秒为单位)。如果在指定的时间内没有输入行可用,read 命令将退出。 |
-u FD:从文件描述符 FD 中读取输入。默认情况下,read 从标准输入(文件描述符 0)中读取输入。 |
exit
:退出脚本-
流程控制命令:
-
if
:条件语句,用于根据条件执行不同的命令
if [ condition ]
then
# 在条件为真时执行的命令或代码块
else
# 在条件为假时执行的命令或代码块(可选)
fi
-
for
:循环语句,用于迭代处理一组值
fruits=("apple" "banana" "cherry" "date")
for fruit in "${fruits[@]}"
do
echo "I like $fruit"
done
-
while
:循环语句,用于在条件满足时重复执行命令
sum=0
num=1
while [ $num -le 5 ]
do
sum=$((sum + num))
num=$((num + 1))
done
echo "Sum of numbers from 1 to 5 is: $sum"
-
case
:多分支条件语句
case expression in
pattern1)
# 在满足 pattern1 条件时执行的操作
;;
pattern2)
# 在满足 pattern2 条件时执行的操作
;;
pattern3|pattern4)
# 在满足 pattern3 或 pattern4 条件时执行的操作
;;
*)
# 在所有条件都不满足时执行的默认操作
;;
esac
-
变量操作命令:
=
:赋值操作符$
:变量引用,用于访问变量的值export
:设置环境变量unset
:删除变量
-
函数和模块化编程命令:
function
:定义函数source
或.
:加载外部脚本文件return
:从函数中返回值
-
管道和重定向命令:
|
:管道操作符,用于将一个命令的输出传递给另一个命令>
和>>
:重定向输出到文件<
:从文件中读取输入
-
条件测试命令:
test
:测试条件表达式[
:测试条件表达式(与test
等效)[[
:更强大的条件测试
-
数组操作命令(部分Shell支持):
declare
:声明数组${array[@]}
:访问数组元素unset
:删除数组元素
Linux中有许多不同类型的通配符,它们用于在命令行中匹配文件和目录名。以下是一些常见的Linux通配符种类:
-
星号(*)通配符:
例如:
*
匹配零个或多个字符,可以用于匹配任何文件或目录名。*.txt
将匹配所有以".txt"结尾的文件。file*
将匹配以"file"开头的文件或目录。
-
问号(?)通配符:
例如:
?
匹配一个单独的字符,可以用于匹配一个字符的文件或目录名。file?.txt
将匹配类似于"file1.txt"或"fileA.txt"的文件,但不匹配"file12.txt"。
-
方括号([])通配符:
例如:
[ ]
用于指定一个字符集合,匹配方括号中的任何一个字符。[abc]
将匹配字符"a"、"b"或"c"中的任何一个。[0-9]
将匹配任何一个数字字符。
-
大括号({})扩展:
例如:
{ }
用于生成多个可能的匹配选项。file{1,2,3}.txt
将匹配"file1.txt"、"file2.txt"和"file3.txt"。
-
取反(!)通配符(在某些情况下也称为排除通配符):
例如:
!
用于排除匹配的项。*.txt
将匹配所有以".txt"结尾的文件,但!*.txt
将匹配所有不以".txt"结尾的文件。
这些通配符可以与各种Linux命令一起使用,例如ls
、cp
、mv
、rm
、find
等,以便进行文件和目录的匹配和操作。通配符是非常有用的工具,可帮助您更有效地管理和操作文件系统中的内容。
计算符:
+
:加法运算符,用于相加两个数。-
:减法运算符,用于相减两个数。*
:乘法运算符,用于相乘两个数。注:在计算时要转译,\*,因为在Linux中*也是代表所有的/
:除法运算符,用于相除两个数。%
:取模运算符,用于获取除法的余数
计算命令:
-
expr
命令:expr
命令用于执行基本的算术运算和字符串操作。它可以执行加法、减法、乘法、除法等操作。例如,要将两个整数相加,可以使用以下命令:
result=$(expr 5 + 3)
echo $result
-
bc
命令:bc
是一个高级的计算器工具,可以进行更复杂的数学运算,包括浮点数运算。您可以通过输入表达式来使用bc
,例如:
echo "5 + 3" | bc
- 也可以和计算符一起用:
num1=5
num2=3
result=$((num1 + num2))
echo $result
除了基本的数学运算,您还可以使用这些运算符执行比较运算,例如等于(==
)、不等于(!=
)、大于(>
)、小于(<
)、大于等于(>=
)和小于等于(<=
)。
- 例如,要检查两个数字是否相等,您可以使用以下形式
if [ $num1 -eq $num2 ]; then
echo "两个数字相等"
else
echo "两个数字不相等"
fi
这些计算命令和计算符允许您在Shell脚本中执行各种数学和比较操作,以便自动化任务和处理数据。
Linux中的比较符通常用于条件测试,例如在Shell脚本中进行条件判断。以下是常见的比较符:
-
等于(-eq): 用于检查两个值是否相等。例如:
if [ "$a" -eq "$b" ]
,如果变量a和b的值相等,则条件成立。 -
不等于(-ne): 用于检查两个值是否不相等。例如:
if [ "$a" -ne "$b" ]
,如果变量a和b的值不相等,则条件成立。 -
大于(-gt): 用于检查一个值是否大于另一个值。例如:
if [ "$a" -gt "$b" ]
,如果变量a的值大于变量b的值,则条件成立。 -
小于(-lt): 用于检查一个值是否小于另一个值。例如:
if [ "$a" -lt "$b" ]
,如果变量a的值小于变量b的值,则条件成立。 -
大于等于(-ge): 用于检查一个值是否大于或等于另一个值。例如:
if [ "$a" -ge "$b" ]
,如果变量a的值大于或等于变量b的值,则条件成立。 -
小于等于(-le): 用于检查一个值是否小于或等于另一个值。例如:
if [ "$a" -le "$b" ]
,如果变量a的值小于或等于变量b的值,则条件成立。
这些比较符通常与if
语句结合使用,用于在Shell脚本中执行条件测试。根据条件测试的结果,脚本可以执行不同的操作。例如:
if [ "$a" -gt "$b" ]; then
echo "变量a大于变量b"
else
echo "变量a小于或等于变量b"
fi
在这个例子中,如果变量a的值大于变量b的值,将会输出"变量a大于变量b",否则输出"变量a小于或等于变量b"。
在Linux中,if
语句是一种条件控制结构,用于根据条件的真假执行不同的命令或代码块。if
语句通常用于Shell脚本中,但也可以在其他编程语言中使用。
if
语句的一般结构如下:
if [ condition ]
then
# 在条件为真时执行的命令或代码块
else
# 在条件为假时执行的命令或代码块(可选)
fi
以下是if
语句中的各个部分的解释:
if
:这是if
语句的开始。[ condition ]
:这是条件,它会被评估为真(非零)或假(零)。条件通常是使用比较运算符(如-eq
、-ne
、-gt
等)进行比较的表达式。如果条件为真,则执行then
块中的命令。then
:这是在条件为真时执行的命令或代码块的开始。# 在条件为真时执行的命令或代码块
:这是在条件为真时执行的实际命令或代码块的部分。您可以在这里放置您希望在条件为真时执行的任何命令。else
(可选):这是在条件为假时执行的命令或代码块的开始。else
部分是可选的,如果您希望在条件为假时执行不同的命令或代码块,可以包含它。# 在条件为假时执行的命令或代码块(可选)
:这是在条件为假时执行的实际命令或代码块的部分。与else
一起使用,允许您在条件为假时执行其他操作。fi
:这是if
语句的结束。
以下是一个示例,说明如何在Shell脚本中使用if
语句来比较两个变量的值并执行相应的操作:
#!/bin/bash
a=5
b=10
if [ "$a" -gt "$b" ]
then
echo "变量a大于变量b"
else
echo "变量a小于或等于变量b"
fi
在这个例子中,if
语句比较了变量a
和b
的值,如果a
大于b
,则会执行第一个echo
语句;否则,将会执行第二个echo
语句。
elif
的一般语法结构如下:
if [ condition1 ]
then
# 在条件1为真时执行的命令或代码块
elif [ condition2 ]
then
# 在条件2为真时执行的命令或代码块
else
# 在所有条件都不满足时执行的命令或代码块
fi
elif [ condition2 ]
:这是第二个条件,如果条件1为假且条件2为真,则执行与之关联的命令或代码块。
下面是一个示例,演示如何在Shell脚本中使用if
、elif
和else
来根据多个条件执行不同的操作:
#!/bin/bash
num=15
if [ "$num" -eq 10 ]
then
echo "变量num的值等于10"
elif [ "$num" -eq 15 ]
then
echo "变量num的值等于15"
else
echo "变量num的值不等于10或15"
fi
在这个示例中,首先检查num
是否等于10,如果是,则输出"变量num的值等于10"。如果不是,则检查num
是否等于15,如果是,则输出"变量num的值等于15"。如果num
既不等于10也不等于15,那么将执行else
块中的代码,输出"变量num的值不等于10或15"。
elif
允许您在多个条件之间进行选择,使得代码更加灵活和可读。这对于需要在不同情况下采取不同行动的脚本非常有用。