Linux命令

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:用于指定要更改的时间戳类型,可以是以下之一:

  • atime:只更改访问时间。
  • mtime:只更改修改时间。
  • ctime:只更改文件状态更改时间(ctime)。
  • now:将时间戳设置为当前日期时间。
  • 指定日期时间:使用格式如 "YYYY-MM-DD HH:MM:SS" 的日期时间字符串。
  • 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:删除目录,而不是删除目录中的内容。需要与 -r 一起使用。   --force:与 -f 类似,强制删除文件,不会提示用户确认。

  • 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:显示不可打印字符(制表符、换行符等)。
  • moreless:逐页查看文件内容

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:从指定行号开始查看文件。
  • nanovim:文本编辑器

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 之前的会话。
  • headtail:显示文件的开头或结尾部分

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:与 -F 一起使用,持续尝试打开文件,即使它最初无法打开。-v, --verbose:始终显示文件名作为输出的一部分,即使只跟踪一个文件。

  • 文件权限和用户管理命令:

  • chmod:修改文件权限

数字的值可以是 0 到 7,分别表示不同的权限组合。

  • 4或r 表示读权限。
  • 2或w 表示写权限。
  • 1或x 表示执行(或搜索对目录)权限。

文件权限有三个数值位分别为:文件所有者(user)、文件所属组(group)和其他用户(other)的权限。

"+":添加权限。例如,chmod +x filename 将添加执行权限。
"-":移除权限。例如,chmod -w filename 将移除写权限。
"=":设置权限。例如,chmod =rwx filename 将设置文件的权限为读、写、执行。

-R:递归地更改文件和目录的权限。例如,chmod -R 755 directory 会递归地将目录及其内容的权限设置为读写执行。

chmod -R 755 directory 是一个递归地将目录及其内容的权限设置为 755 的命令。这个命令将目录 "directory" 及其所有子目录和文件的权限设置为以下方式:

  • 所有者(Owner)具有读(4)、写(2)和执行(1)权限,因此权限为 7。
  • 所属组(Group)具有读和执行权限,因此权限为 5。
  • 其他用户(Others)具有读和执行权限,因此权限为 5。
  • chown:修改文件所有者
-c, --changes:仅在更改了文件或目录的所有者和/或所属组时才显示详细的输出。
-f, --quiet, --silent:不显示错误消息。
-h, --no-dereference:不要跟随符号链接的目标,而是更改符号链接本身的所有者/所属组。
-R, --recursive:递归地更改目录及其内容的所有者和/或所属组。
--dereference:跟随符号链接的目标,而不是更改符号链接本身的所有者/所属组。
--from=原所有者:原所属组:仅更改指定原所有者和/或原所属组的文件或目录的所有者和/或所属组。
--reference=参考文件或目录:使用参考文件或目录的所有者和/或所属组来设置目标文件或目录的所有者和/或所属组。
  • useradduserdel:添加或删除用户

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:跳板主机,连接通过指定的跳板主机。

  • wgetcurl:下载文件或内容
-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:在提取文件时显示总字节数和文件数。

  • zipunzip:压缩和解压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命令一起使用,例如lscpmvrmfind等,以便进行文件和目录的匹配和操作。通配符是非常有用的工具,可帮助您更有效地管理和操作文件系统中的内容。

计算符:

  • +:加法运算符,用于相加两个数。
  • -:减法运算符,用于相减两个数。
  • *:乘法运算符,用于相乘两个数。注:在计算时要转译,\*,因为在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语句比较了变量ab的值,如果a大于b,则会执行第一个echo语句;否则,将会执行第二个echo语句。

elif的一般语法结构如下:

if [ condition1 ]
then
    # 在条件1为真时执行的命令或代码块
elif [ condition2 ]
then
    # 在条件2为真时执行的命令或代码块
else
    # 在所有条件都不满足时执行的命令或代码块
fi

 elif [ condition2 ]:这是第二个条件,如果条件1为假且条件2为真,则执行与之关联的命令或代码块。

下面是一个示例,演示如何在Shell脚本中使用ifelifelse来根据多个条件执行不同的操作:

#!/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允许您在多个条件之间进行选择,使得代码更加灵活和可读。这对于需要在不同情况下采取不同行动的脚本非常有用。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值