常用命令与脚本编程

常用命令

权限管理

useradd

用于创建账户。

useradd username

常用参数:

  • -r:创建系统账户。
  • -d:指定主目录。
    • -m:创建主目录。
  • -s:指定 Shell。
  • -g:指定登录组。
  • -G:指定附加组。
  • -u:指定账户编号。
  • -e YYYY-MM-DD:指定过期日期。
  • -f N:指定密码过期 N 日后禁用账户。
    • 0:立即禁用。
    • -1:不禁用。
  • -c:添加备注信息。

userdel

用于删除账户。

userdel username

常用参数:

  • -r:删除主目录。

usermod

用于修改账户信息。

usermod options username

常用参数:

  • -L:账户锁定。
  • -U:账户解除锁定。

passwd

用于修改账户密码。

passwd username

chsh

用于修改账户 Shell。

chsh options username

常用参数:

  • -s:指定 Shell。

chage

用于修改账户过期日期。

chage username

chfn

用于修改账户备注信息。

chfn username

groupadd

用于创建组。

groupadd groupname

常用参数:

  • -r:创建系统组。
  • -g:指定组编号。

groupdel

用于删除组。

groupdel groupname

chmod

用于修改文件权限。

chmod mode filename

chown

用于修改文件所属账户。

chown username filename

chgrp

用于修改文件所属组。

chgrp groupname filename

进程管理

ps

用于静态显示进程信息。

ps

常用参数:

  • UNIX 风格
    • -e:显示全部进程。
    • -f:完整列表格式。
    • -l:长列表格式。
  • BSD 风格
    • a:显示全部进程,仅关联任意终端的进程。
    • x:显示全部进程,包括未分配终端的进程。
    • u:面向用户格式。

信息列:

  • F:系统标记。
  • S:进程状态。
    • R:运行。
    • S:休眠。
    • T:停止。
    • Z:僵死。
  • UID:用户编号。
  • PID:进程编号。
  • PPID:父进程编号。
  • PRI:优先级。
  • NI:谦让度。
  • STIME:进程启动时间。
  • TIME:CPU 累计运行时间。
  • CMD:程序名称。

top

用于动态显示进程信息。

top

信息列:

  • PID:进程编号。
  • PR:优先级。
  • NI:谦让度。
  • VIRT:进程占用的虚拟内存总量。
  • RES:进程占用的物理内存总量。
  • SHR:进程占用的共享内存总量。
  • S:进程状态。
    • R:运行。
    • S:休眠。
    • T:停止。
    • Z:僵死。
  • %CPU:进程使用的 CPU 时间比例。
  • %MEM:进程使用的物理内存比例。
  • TIME+:CPU 累计运行时间。
  • COMMAND:程序名称。

kill

用于结束进程(基于进程编号)。

kill pid

killall

用于结束进程(基于程序名称)。

killall cmd

coproc

用于创建协程。

:::bash coproc jobname { command1; command2; ...; }

jobs

用于显示后台作业信息。

jobs

bg

用于切换挂起作业至后台运行。

bg %id

fg

用于切换后台作业至前台运行。

fg %id

磁盘管理

mount

用于挂载设备。

mount device dirname

mount命令不提供参数则显示已挂载的设备。

常用参数:

  • -t:指定文件系统类型。
    • iso9660:CD-ROM。
  • -o:添加特定选项,以“,”分隔。
    • ro:以只读形式挂载。
    • rw:以读写形式挂载。
    • loop:挂载文件。

umount

用于卸载设备。

umount device
umount dirname

df

用于显示磁盘使用情况。

df

常用参数:

  • -h:以人类可读格式显示文件大小。

du

用于显示磁盘占用情况。

du filename
du dirname

常用参数:

  • -h:以人类可读格式显示文件大小。

文件系统管理

fdisk

用于分区管理。

fdisk device

mkfs

用于创建文件系统。

mkfs device

fsck

用于检查修复文件系统。

fsck device

文件处理

cd

用于切换目录。

cd destination

目录名的两种表示方式:

  • 绝对文件路径:以根目录开始。
  • 相对文件路径:基于当前工作目录。
    • .:当前目录。
    • ..:当前目录的父目录。

cd命令不提供目录名则切换到用户主目录。

pwd

用于显示当前工作目录。

pwd

ls

用于显示指定目录下的文件和目录。

ls destination

ls命令不提供目录名则默认为当前工作目录。

常用参数:

  • -a:显示隐藏文件。
  • -l:长列表格式。
    • -h:以人类可读格式显示文件大小。
  • -F:特殊显示。
    • 目录之后加上/
    • 可执行文件之后加上*

touch

用于创建空文件。

touch filename

ln

用于创建文件链接。

ln origin destination

常用参数:

  • -s:创建软链接。

cp

用于复制文件和目录。

cp source destination

常用参数:

  • -i:询问是否覆盖已有文件。
  • -f:强制覆盖已有文件。
  • -l:复制文件链接。
  • -r:递归目录复制。
  • -p:保留权限属性。

mv

用于移动文件和目录。

mv source destination

rm

用于删除文件。

rm destination

常用参数:

  • -i:询问是否删除文件。
  • -f:强制删除文件。
  • -r:递归目录删除。

tar

用于归档文件。

tar options filename [objname1 objname2 ...]

常用参数:

  • -f:指定归档文件。
    • -c:创建归档文件。
    • -x:提取归档文件。
    • -t:查看归档文件。
    • -r:附加文件。
    • -u:更新文件。
  • -p:保留权限属性。
  • -z:输出重定向,由gzip命令处理。
  • -j:输出重定向,由bzip2命令处理。

mkdir

用于创建目录。

mkdir dirname

常用参数:

  • -p:创建缺失的父目录。

rmdir

用于删除目录。

rmdir dirname

rmdir命令只能删除空目录。

file

用于查看目标类型。

file destination

find

用于查找目标。

find pathname expression

常用参数:

  • -name pattern:文件名符合pattern表达式。
  • -ctime N:创建时间是N * 24小时之前。
  • -mtime N:修改时间是N * 24小时之前。
  • -ctime N:访问时间是N * 24小时之前。
  • -type X:指定文件类型。
    • d:目录。
    • r:常规文件。
    • l:符号链接。

数据处理

cat

用于查看文件内容(全部输出)。

cat filename

常用参数:

  • -b:显示行号(不标记空行)。
  • -n:显示行号(标记空行)。

more

用于查看文件内容(分页输出)。

more filename

less

用于查看文件内容(分页输出)。

less filename

head

用于查看文件内容的开头部分。

head filename

常用参数:

  • -n N:指定输出 N 行。

tail

用于查看文件内容的结尾部分。

tail filename

常用参数:

  • -n N:指定输出 N 行。
  • -f:输出附加数据。

sort

用于排序文件内容。

sort filename

sort命令默认基于字符排序。

常用参数:

  • -n:基于数字排序。
  • -r:反序排序。
  • -t:指定分隔符。
  • -k:指定位置。

grep

用于检索文件内容。

grep pattern filename

gzip

用于文件内容的压缩和解压缩。

gzip filename

常用参数:

  • -d:解压缩。

bzip2

用于文件内容的压缩和解压缩。

bzip2 filename

常用参数:

  • -d:解压缩。

脚本编程

逻辑测试

test

用于检查某个条件是否成立。

test condition

字符串测试:

参数 说明
= 相等则为真
!= 不相等则为真
-z 字符串长度为零则为真
-n 字符串长度不为零则为真

数值测试:

参数 说明
-eq 等于则为真
-ne 不等于则为真
-gt 大于则为真
-ge 大于等于则为真
-lt 小于则为真
-le 小于等于则为真

文件测试:

参数 说明
-e 如果文件存在则为真
-s 如果文件存在且非空则为真
-r 如果文件存在且可读则为真
-w 如果文件存在且可写则为真
-x 如果文件存在且可执行则为真
-d 如果文件存在且为目录则为真
-f 如果文件存在且为普通文件则为真
-b 如果文件存在且为块特殊文件则为真
-c 如果文件存在且为字符型特殊文件则为真

AND

逻辑“与”。

[ condition1 ] && [ condition2 ]

OR

逻辑“或”。

[ condition1 ] || [ condition2 ]

条件语句

IF

语句1:

if doSomeTests; then
    ...
fi

语句2:

if doSomeTests; then
    ...
else
    ...
fi

语句3:

if doSomeTests; then
    ...
elif doMoreTests
    ...
else
    ...
fi

CASE

语句:

case $Variables in
pattern1)
    ...
    ;;
pattern2)
    ...
    ;;
*)
    ...
    ;;
esac

循环语句

FOR

语句:

for var in lists
do
    ...
done

WHILE

语句:

while condition
do
    ...
done

UNTIL

语句:

until condition
do
    ...
done

流程控制

break

用于跳出所有循环。

continue

用于跳出当前循环。