常用命令与脚本编程
常用命令
权限管理
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
用于跳出当前循环。