1. 查看历史命令
history [option]
2. 查看文件信息(list)
ls [option] [dir/file]
帮助文档:man ls
常用参数
参数 | 解释 |
---|---|
-l | 显示详细信息 |
-a | 显示所有文件 |
-A | 同 -a ,但不列出 “.” (当前目录) 及 “…” (父目录) |
-R | 递归显示子目录的信息 |
-h | 便于阅读 |
-r | 将文件以相反次序显示(原定依英文字母次序) |
-t | 将文件依建立时间之先后次序列出 |
-F | 在列出的文件名称后加一符号;例如可执行档则加 “*”, 目录则加 “/” |
-lrt | 按照时间进行排序,最新修改的在最下方 |
2.1 通配符
符号 | 解释 |
---|---|
* | 任意多个字符 |
? | 任意一个字符 |
2.2 类UNIX系统目录结构
目录 | 作用 |
---|---|
/ | 根目录 |
/bin | 系统可执行程序存放目录 |
/boot | 内核和启动程序的相关文件 |
/lib | 库目录,主要存放系统最基本的动态共享库 |
/media | 挂载设备媒体,U盘,光驱等 |
/mnt | 该目录是为了让用户挂载别的系统文件 |
/usr(unix system resources) | 庞大和复杂的目录,很多应用会安装到此目录 (/usr/local:用户自己安装软件的目录) |
/sbin | 超级管理员的执行程序root |
/proc | 这个目录是系统内存的映射,会保留进程运行的一些信息 |
/etc | 系统软件的启动和配置目录(/etc/passwd:用户存放文件 man 5 passwd查看文件格式) |
/dev | 设备文件所在目录 |
/home | 用户目录 |
Linux系统中一切皆文件
3. 目录相关操作
3.1 更改目录(change directory)
cd [dir]
常用操作
命令 | 解释 |
---|---|
cd | 切换到家目录 |
cd ./ | 切换到当前目录 |
cd ~ | 切换到家目录,~表示家目录 |
cd - | 回到上一次所在目录 |
cd $HOME | 切换到家目录 |
3.2 显示当前路径
pwd
3.3 创建目录
mkdir [option] directory
参数 | 解释 |
---|---|
-p | 递归创建目录 |
3.4 删除目录
rmdir [option] directory
删除空目录
参数 | 解释 |
---|---|
-p | 递归删除目录(rmdir a/b/c 依次删除c,b,a三个目录) |
3.5 查看命令所在位置
which [option] command
4. 文件相关操作
4.1 创建文件
touch [option] filename
如果文件不存在就创建文件,如果存在则更改访问时间
参数 | 解释 |
---|---|
-a | 改变档案的读取时间记录 |
-m | 改变档案的修改时间记录 |
-c | 假如目的档案不存在,不会建立新的档案。与 --no-create 的效果一样 |
-f | 不使用,是为了与其他 unix 系统的相容性而保留 |
-r | 使用参考档的时间记录,与 --file 的效果一样 |
-d | 设定时间与日期,可以使用各种不同的格式 |
-t | 设定档案的时间记录,格式与 date 指令相同 |
–no-create | 不会建立新档案 |
–help | 列出指令格式 |
–version | 列出版本讯息 |
4.2 删除文件或目录
rm [option] filename
参数 | 解释 |
---|---|
-i | 删除前逐一询问确认 |
-f | 强制删除 |
-r | 递归删除子目录 |
-rf * | 删除当前目录所有目录和文件 |
4.3 拷贝文件(copy)
cp [option] srcpath destpath
参数 | 解释 |
---|---|
-a | 此选项通常在复制目录时使用,它保留链接、文件属性,并复制目录下的所有内容。其作用等于dpR参数组合 |
-d | 复制时保留链接。这里所说的链接相当于 Windows 系统中的快捷方式 |
-f | 覆盖已经存在的目标文件而不给出提示 |
-i | 与 -f 选项相反,在覆盖目标文件之前给出提示,要求用户确认是否覆盖,回答 y 时目标文件将被覆盖 |
-p | 除复制文件的内容外,还把修改时间和访问权限也复制到新文件中 |
-r | 若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件 |
-l | 不复制文件,只是生成链接文件 |
4.4 移动文件或目录(move)
mv srcpath destpath
参数 | 解释 |
---|---|
-b | 当目标文件或目录存在时,在执行覆盖前,会为其创建一个备份 |
-i | 如果指定移动的源目录或文件与目标的目录或文件同名,则会先询问是否覆盖旧文件 |
-f | 如果指定移动的源目录或文件与目标的目录或文件同名,不会询问,直接覆盖旧文件 |
-n | 不要覆盖任何已存在的文件或目录 |
-u | 当源文件比目标文件新或者目标文件不存在时,才执行移动操作 |
常用于更改文件名
4.5 显示文件信息
cat [option] filename
参数 | 解释 |
---|---|
-n/–number | 由 1 开始对所有输出的行数编号 |
-b/–number-nonblank | 和 -n 相似,只不过对于空白行不编号 |
-s/–squeeze-blank | 当遇到有连续两行以上的空白行,就代换为一行的空白行 |
-v/–show-nonprinting | 使用 ^ 和 M- 符号,除了 LFD 和 TAB 之外 |
-E/–show-ends | 在每行结束处显示 $ |
-T/–show-tabs | 将 TAB 字符显示为 ^I |
-A/–show-all | 等价于 -vET |
-e | 等价于"-vE"选项 |
-t | 等价于"-vT"选项 |
直接显示文件信息到屏幕
more [option] filename
参数 | 解释 |
---|---|
-n/–number | 显示行号 |
-b/–number-nonblank | 和 -n 相似,只不过对于空白行不编号 |
-s/–squeeze-blank | 当遇到有连续两行以上的空白行,就代换为一行的空白行 |
-v/–show-nonprinting | 使用 ^ 和 M- 符号,除了 LFD 和 TAB 之外 |
-E/–show-ends | 在每行结束处显示 $ |
-T/–show-tabs | 将 TAB 字符显示为 ^I |
-A/–show-all | 等价于 -vET |
-e | 等价于"-vE"选项 |
-t | 等价于"-vT"选项 |
分页显示文件信息,回车逐行滚动,空格翻页
less [option] filename
参数 | 解释 |
---|---|
-b <缓冲区大小> | 设置缓冲区的大小 |
-e | 当文件显示结束后,自动离开 |
-f | 强迫打开特殊文件,例如外围设备代号、目录和二进制文件 |
-g | 只标志最后搜索的关键词 |
-i | 忽略搜索时的大小写 |
-m | 显示类似more命令的百分比 |
-N | 显示每行的行号 |
-o <文件名> | 将less 输出的内容在指定文件中保存起来 |
-Q | 不使用警告音 |
-s | 显示连续空行为一行 |
-S | 行过长时间将超出部分舍弃 |
-x <数字> | 将"tab"键显示为规定的数字空格 |
快捷键 | 功能 |
---|---|
/字符串 | 向下搜索"字符串"的功能 |
?字符串 | 向上搜索"字符串"的功能 |
n | 重复前一个搜索(与 / 或 ? 有关) |
N | 反向重复前一个搜索(与 / 或 ? 有关) |
b | 向上翻一页 |
d | 向后翻半页 |
h | 显示帮助界面 |
q | 退出less 命令 |
u | 向前滚动半页 |
y | 向前滚动一行 |
空格键 | 滚动一页 |
回车键 | 滚动一行 |
[pagedown] | 向下翻动一页 |
[pageup] | 向上翻动一页 |
分页显示文件信息,回车或上下键可以反复查看文件内容
head [option] filename
显示文件前十行信息
参数 | 解释 |
---|---|
-q | 隐藏文件名 |
-v | 显示文件名 |
-c <数目> | 显示的字节数 |
-n <行数> | 显示的行数 |
tail [option] filename
显示文件后十行信息
参数 | 解释 |
---|---|
-f | 循环读取 |
-q | 不显示处理信息 |
-v | 显示详细的处理信息 |
-c <数目> | 显示的字节数 |
-n <行数> | 显示文件的尾部 n 行内容 |
–pid=PID | 与-f合用,表示在进程ID,PID死掉之后结束 |
-q/–quiet/–silent | 从不输出给出文件名的首部 |
-s/–sleep-interval=S | 与-f合用,表示在每次反复的间隔休眠S秒 |
5. 统计信息
5.1 统计文件内容信息(word count)
wc [option] filename
参数 | 解释 |
---|---|
-l | 显示行数 |
-w | 显示单词数 |
-c | 显示字节数 |
5.2 显示指定的目录或文件所占用的磁盘空间(disk usage)
du [option] directory
参数 | 解释 |
---|---|
-a/-all | 显示所有文件和目录的大小 |
-b/-bytes | 显示目录或文件大小时,以byte为单位 |
-c/–total | 除了显示目录和文件的大小外,同时也显示所有目录或文件的总和 |
-D/–dereference-args | 显示指定符号连接的源文件大小 |
-h/–human-readable | 提高信息的可读性 |
-H/–si | 与-h参数相同,但是K,M,G是以1000为换算单位 |
-k/–kilobytes | 以1024 bytes为单位 |
-l/–count-links | 重复计算硬件连接的文件 |
-L<符号连接>/–dereference<符号连接> | 显示选项中所指定符号连接的源文件大小 |
-m/–megabytes | 以1MB为单位 |
-s/–summarize | 仅显示总计 |
-S/–separate-dirs | 显示个别目录的大小时,并不含其子目录的大小 |
-x/–one-file-xystem | 以一开始处理时的文件系统为准,若遇上其它不同的文件系统目录则略过 |
-X<文件>/–exclude-from=<文件> | 在<文件>指定目录或文件 |
–exclude=<目录或文件> | 略过指定的目录或文件 |
–max-depth=<目录层数> | 超过指定层数的目录后,予以忽略 |
5.3 显示磁盘空间信息
df [option] dir/file
参数 | 解释 |
---|---|
-h | 便于阅读 |
6. 文件属性和用户组
6.1 文件权限和用户属性
6.2 显示当前用户
whoami
6.3 建立连接
ln [option] target link_name
参数 | 解释 |
---|---|
-s | 创建软链接,类似快捷方式(目录可以创建软链接,不可以创建硬链接) |
-f | 强制执行 |
-b | 删除,覆盖以前建立的链接 |
-d | 允许超级用户制作目录的硬链接 |
-f | 强制执行 |
-i | 交互模式,文件存在则提示用户是否覆盖 |
-n | 把符号链接视为一般目录 |
-v | 显示详细的处理过程 |
6.4 删除连接
可以使用rm
unlink link_name
也可以使用unlink
删除文件
6.5 更改文件权限
chmod [option] file
参数 | 解释 |
---|---|
u | 表示该文件的拥有者 |
g | 表示与该文件的拥有者属于同一个群体(group)者 |
o | 表示其他以外的人 |
a | 表示这三者皆是 |
+ | 表示增加权限 |
- | 表示取消权限 |
= | 表示唯一设定权限 |
r | 表示可读取 |
w | 表示可写入 |
x | 表示可执行 |
X | 表示只有当该文件是个子目录或者该文件已经被设定过为可执行 |
-c | 若该文件权限确实已经更改,才显示其更改动作 |
-f | 若该文件权限无法被更改也不要显示错误讯息 |
-v | 显示权限变更的详细资料 |
-R | 对目前目录下的所有文件与子目录进行相同的权限变更(即以递归的方式逐个变更) |
6.6 更改所属组
chown 需要超级用户 root 的权限才能执行此命令,非超级用户如需要设置关联组可能需要使用chgrp 命令
chown [-cfhvR] [--help] [--version] user[:group] file...
参数 | 解释 |
---|---|
user | 新的文件拥有者的使用者 ID |
group | 新的文件拥有者的使用者组(group) |
-c | 显示更改的部分的信息 |
-f | 忽略错误信息 |
-h | 修复符号链接 |
-v | 显示详细的处理信息 |
-R | 处理指定目录以及其子目录下的所有文件 |
–help | 显示辅助说明 |
–version | 显示版本 |
chgrp [-cfhRv][--help][--version][所属群组][文件或目录...]
或
chgrp [-cfhRv][--help][--reference=<参考文件或目录>][--version][文件或目录...]
参数 | 说明 |
---|---|
-c/–changes | 效果类似"-v"参数,但仅回报更改的部分 |
-f/–quiet 或 --silent | 不显示错误信息 |
-h/–no-dereference | 只对符号连接的文件作修改,而不改动其他任何相关文件 |
-R/–recursive | 递归处理,将指定目录下的所有文件及子目录一并处理 |
-v/–verbose | 显示指令执行过程 |
–help | 在线帮助 |
–reference=<参考文件或目录> | 把指定文件或目录的所属群组全部设成和参考文件或目录的所属群组相同 |
–version | 显示版本信息 |
7. 查找和检索
7.1 查找文件
find path [option] filename
参数 | 说明 |
---|---|
-name | 按照名字查找 |
-size | 按照大小查找(+:大于;-:等于) |
-type | 按照类型查找 |
-maxdepth | 最大递归层次 |
文件类型参数说明
参数 | 说明 |
---|---|
d | 目录 |
c | 字型装置文件 |
b | 区块装置文件 |
p | 管道文件 |
f | 一般文件 |
l | 符号连结 |
s | socket |
例:
# 将当前目录及其子目录下所有文件后缀为 .c 的文件列出来:
find . -name "*.c"
# 将当前目录及其子目录中的所有文件列出:
find . -type f
# 将当前目录及其子目录下所有最近 20 天内更新过的文件列出:
find . -ctime -20
#查找 /var/log 目录中更改时间在 7 日以前的普通文件,并在删除之前询问它们:
find /var/log -type f -mtime +7 -ok rm {} \;
# 查找当前目录中文件属主具有读、写权限,并且文件所属组的用户和其他用户具有读权限的文件:
find . -type f -perm 644 -exec ls -l {} \;
# 查找系统中所有文件长度为 0 的普通文件,并列出它们的完整路径:
find / -type f -size 0 -exec ls -l {} \;
7.2 过滤器
xargs
可以将管道或标准输入(stdin)数据转换成命令行参数,也能够从文件的输出中读取数据。
xargs
也可以将单行或多行文本输入转换为其他格式,例如多行变单行,单行变多行。
xargs
默认的命令是 echo,这意味着通过管道传递给 xargs
的输入将会包含换行和空白,不过通过 xargs
的处理,换行和空白将被空格取代。
xargs
是一个强有力的命令,它能够捕获一个命令的输出,然后传递给另外一个命令。
之所以能用到这个命令,关键是由于很多命令不支持|管道来传递参数,而日常工作中有有这个必要,所以就有了 xargs
命令,例如:
find /sbin -perm +700 |ls -l #这个命令是错误的
find /sbin -perm +700 |xargs ls -l #这样才是正确的
xargs 一般是和管道一起使用
命令格式:
somecommand |xargs -item command
参数 | 说明 |
---|---|
-a file | 从文件中读入作为 stdin |
-e flag | 注意有的时候可能会是-E,flag必须是一个以空格分隔的标志,当xargs分析到含有flag这个标志的时候就停止 |
-p | 当每次执行一个argument的时候询问一次用户 |
-n num | 后面加次数,表示命令在执行的时候一次用的argument的个数,默认是用所有的 |
-t | 表示先打印命令,然后再执行 |
-i/-I | 这得看linux支持了,将xargs的每项名称,一般是一行一行赋值给 {},可以用 {} 代替 |
-r no-run-if-empty | 当xargs的输入为空的时候则停止xargs,不用再去执行了 |
-s num | 命令行的最大字符数,指的是 xargs 后面那个命令的最大命令行字符数 |
-L num | 从标准输入一次读取 num 行送给 command 命令 |
-l | 同 -L |
-d delim | 分隔符,默认的xargs分隔符是回车,argument的分隔符是空格,这里修改的是xargs的分隔符 |
-x | exit的意思,主要是配合-s使用 |
-P | 修改最大的进程数,默认是1,为0时候为as many as it can |
实例:
xargs 用作替换工具,读取输入数据重新格式化后输出。
定义一个测试文件,内有多行文本数据:
cat test.txt
a b c d e f g
h i j k l m n
o p q
r s t
u v w x y z
# 多行输入单行输出:
cat test.txt | xargs
a b c d e f g h i j k l m n o p q r s t u v w x y z
# -n 选项多行输出:
cat test.txt | xargs -n3
a b c
d e f
g h i
j k l
m n o
p q r
s t u
v w x
y z
# -d 选项可以自定义一个定界符:
echo "nameXnameXnameXname" | xargs -dX
name name name name
# 结合 -n 选项使用:
echo "nameXnameXnameXname" | xargs -dX -n2
name name
name name
# xargs 的一个选项 -I,使用 -I 指定一个替换字符串 {},这个字符串在 xargs 扩展时会被替换掉
# 当 -I 与 xargs 结合使用,每一个参数命令都会被执行一次:
cat arg.txt | xargs -I {} ./sk.sh -p {} -l
-p aaa -l
-p bbb -l
-p ccc -l
# 复制所有图片文件到 /data/images 目录下:
ls *.jpg | xargs -n1 -I {} cp {} /data/images
# xargs 结合 find 使用
#用 rm 删除太多的文件时候,可能得到一个错误信息:/bin/rm Argument list too long.
# 用 xargs 去避免这个问题:
find . -type f -name "*.log" -print0 | xargs -0 rm -f
# xargs -0 将 \0 作为定界符。
# 统计一个源代码目录中所有 php 文件的行数:
find . -type f -name "*.php" -print0 | xargs -0 wc -l
# 查找所有的 jpg 文件,并且压缩它们:
find . -type f -name "*.jpg" -print | xargs tar -czvf images.tar.gz
# xargs 其他应用
# 假如你有一个文件包含了很多你希望下载的 URL,你能够使用 xargs下载所有链接:
cat url-list.txt | xargs wget -c
7.3 文件检索
语法:
grep [option] patterns file...
参数 | 说明 |
---|---|
-a/–text | 不要忽略二进制的数据 |
-A<显示行数>/–after-context=<显示行数> | 除了显示符合范本样式的那一列之外,并显示该行之后的内容 |
-b/–byte-offset | 在显示符合样式的那一行之前,标示出该行第一个字符的编号 |
-B<显示行数>/–before-context=<显示行数> | 除了显示符合样式的那一行之外,并显示该行之前的内容 |
-c/–count | 计算符合样式的列数 |
-C<显示行数> 或 --context=<显示行数>或-<显示行数> | 除了显示符合样式的那一行之外,并显示该行之前后的内容 |
-d <动作> 或 --directories=<动作> | 当指定要查找的是目录而非文件时,必须使用这项参数,否则grep指令将回报信息并停止动作 |
-e<范本样式> 或 --regexp=<范本样式> | 指定字符串做为查找文件内容的样式 |
-E 或 --extended-regexp | 将样式为延伸的正则表达式来使用 |
-f<规则文件> 或 --file=<规则文件> | 指定规则文件,其内容含有一个或多个规则样式,让grep查找符合规则条件的文件内容,格式为每行一个规则样式 |
-F 或 --fixed-regexp | 将样式视为固定字符串的列表 |
-G 或 --basic-regexp | 将样式视为普通的表示法来使用 |
-h 或 --no-filename | 在显示符合样式的那一行之前,不标示该行所属的文件名称 |
-H 或 --with-filename | 在显示符合样式的那一行之前,表示该行所属的文件名称 |
-i 或 --ignore-case | 忽略字符大小写的差别 |
-l 或 --file-with-matches | 列出文件内容符合指定的样式的文件名称 |
-L 或 --files-without-match | 列出文件内容不符合指定的样式的文件名称 |
-n 或 --line-number | 在显示符合样式的那一行之前,标示出该行的列数编号 |
-o 或 --only-matching | 只显示匹配PATTERN 部分 |
-q 或 --quiet或–silent | 不显示任何信息 |
-r 或 --recursive | 此参数的效果和指定"-d recurse"参数相同 |
-s 或 --no-messages | 不显示错误信息 |
-v 或 --invert-match | 显示不包含匹配文本的所有行 |
-V 或 --version | 显示版本信息 |
-w 或 --word-regexp | 只显示全字符合的列 |
-x --line-regexp | 只显示全列符合的列 |
-y | 此参数的效果和指定"-i"参数相同 |
8. 压缩包管理
8.1 zip格式
压缩格式:
zip [option] destfile_name srcfile_name...
参数 | 说明 |
---|---|
-r | 递归处理,将指定目录下的所有文件和子目录一并处理 |
-m | 将文件压缩并加入压缩文件后,删除原始文件 |
-q | 不显示指令执行过程 |
实例:
# 将 /home/html/ 这个目录下所有文件和文件夹打包为当前目录下的 html.zip:
zip -q -r html.zip /home/html
# 如果在我们在 /home/html 目录下,可以执行以下命令:
zip -q -r html.zip *
# 从压缩文件 cp.zip 中删除文件 a.c
zip -dv cp.zip a.c
解压格式:
unzip [option] file_name
参数 | 说明 |
---|---|
-c | 将解压缩的结果显示到屏幕上,并对字符做适当的转换 |
-l | 显示压缩文件内所包含的文件 |
-p | 与-c参数类似,会将解压缩的结果显示到屏幕上,但不会执行任何的转换 |
-t | 检查压缩文件是否正确 |
-u | 与-f参数类似,但是除了更新现有的文件外,也会将压缩文件中的其他文件解压缩到目录中 |
-v | 执行是时显示详细的信息 |
-n | 解压缩时不要覆盖原有的文件。 |
-o | 不必先询问用户,unzip执行后覆盖原有文件 |
-P<密码> | 使用zip的密码选项 |
-q | 执行时不显示任何信息 |
-d<目录> | 指定文件解压缩后所要存储的目录 |
-x<文件> | 指定不要处理.zip压缩文件中的哪些文件 |
-Z | unzip -Z等于执行zipinfo指令 |
实例:
# 查看压缩文件中包含的文件:
unzip -l abc.zip
Archive: abc.zip
Length Date Time Name
-------- ---- ---- ----
94618 05-21-10 20:44 a11.jpg
202001 05-21-10 20:44 a22.jpg
16 05-22-10 15:01 11.txt
46468 05-23-10 10:30 w456.JPG
140085 03-14-10 21:49 my.asp
-------- -------
483188 5 files
# -v 参数用于查看压缩文件目录信息,但是不解压该文件。
unzip -v abc.zip
Archive: abc.zip
Length Method Size Ratio Date Time CRC-32 Name
-------- ------ ------- ----- ---- ---- ------ ----
94618 Defl:N 93353 1% 05-21-10 20:44 9e661437 a11.jpg
202001 Defl:N 201833 0% 05-21-10 20:44 1da462eb a22.jpg
16 Stored 16 0% 05-22-10 15:01 ae8a9910 ? +-|¥+-? (11).txt
46468 Defl:N 39997 14% 05-23-10 10:30 962861f2 w456.JPG
140085 Defl:N 36765 74% 03-14-10 21:49 836fcc3f my.asp
-------- ------- --- -------
483188 371964 23% 5 files
8.2 gz格式
压缩格式:
gzip [ -acdfhklLnNrtvV19 ] [-S suffix] [ name ... ]
解压格式:
gunzip [ -acfhklLnNrtvV ] [-S suffix] [ name ... ]
gzip和gunzip用于解压缩文件,不常使用,一般使用tar进行解压缩
8.3 tar格式
格式:
tar [option] destfile_name srcfile_name...
参数 | 说明 |
---|---|
-c | 压缩文件 |
-x | 解压文件 |
-v | 显示信息 |
-f | 指定压缩包名 |
-t | 列出备份文件的内容 |
-z | 处理gzip格式文件 |
-j | 处理gzip2格式文件 |
实例:
# 压缩文件 非打包
# 压缩 a.c文件为test.tar.gz
tar -czvf test.tar.gz a.c
# 列出压缩文件内容
tar -tzvf test.tar.gz
-rw-r--r-- root/root 0 2010-05-24 16:51:59 a.c
# 解压文件
tar -xzvf test.tar.gz
a.c
# 压缩为.tar.bzip2格式
tar -jcvf test.tar.gzip2 a.c
# 解压.tar.bzip2格式
tar -jxvf test.tar.gzip2
8.4 rar格式
语法格式:
rar <command> [-<switch 1> -<switch N>] archive [files...]
参数 | 说明 |
---|---|
a | 压缩 |
-r | 递归子目录 |
-x<文件目录> | 解压 |
9.用户管理
9.1 添加用户
9.1.1 adduser添加用户
在 Slackware 中,adduser 指令是个 script 程序,利用交谈的方式取得输入的用户帐号资料,然后再交由真正建立帐号的 useradd 指令建立新用户,如此可方便管理员建立用户帐号。在 Red Hat Linux 中,adduser 指令则是 useradd指令的符号连接,两者实际上是同一个指令。
语法格式:
adduser [option] username
参数 | 说明 |
---|---|
-c<备注> | 加上备注文字。备注文字会保存在passwd的备注栏位中 |
-d home_dir | 设定使用者的家目录为 home_dir ,预设值为预设的 home 后面加上使用者帐号 loginid |
-D | 变更预设值 |
-e expire_date | 设定此帐号的使用期限(格式为 YYYY-MM-DD),预设值为永久有效 |
-f<缓冲天数> | 指定在密码过期后多少天即关闭该帐号 |
-g<群组> | 指定用户所属的群组 |
-G<群组> | 指定用户所属的附加群组 |
-m | 自动建立用户的登入目录 |
-M | 不要自动建立用户的登入目录 |
-n | 取消建立以用户名称为名的群组 |
-r | 建立系统帐号 |
-s | 指定用户登入后所使用的shell |
-u | 指定用户ID |
实例:
# 添加一个一般用户kk
adduser kk
# 添加用户kk,并指定用户所在的组为root用户组
adduser -g root kk
# 创建一个系统用户
adduser -r kk //创建一个系统用户kk
# 新添加用户kk,其home目录
adduser -d /home/myf kk为/home/myf
# 创建用户并指定shell为zsh
adduser -s /bin/zsh test
9.1.2 useradd
语法格式:
useradd [option] username
参数 | 说明 |
---|---|
-c<备注> | 加上备注文字。备注文字会保存在passwd的备注栏位中 |
-d home_dir | 设定使用者的家目录为 home_dir ,预设值为预设的 home 后面加上使用者帐号 loginid |
-D | 变更预设值 |
-e expire_date | 设定此帐号的使用期限(格式为 YYYY-MM-DD),预设值为永久有效 |
-f<缓冲天数> | 指定在密码过期后多少天即关闭该帐号 |
-g<群组> | 指定用户所属的群组 |
-G<群组> | 指定用户所属的附加群组 |
-m | 自动建立用户的登入目录 |
-M | 不要自动建立用户的登入目录 |
-n | 取消建立以用户名称为名的群组 |
-r | 建立系统帐号 |
-s | 指定用户登入后所使用的shell |
-u | 指定用户ID |
实例:
# 添加一个一般用户kk
useradd kk
# 添加用户kk,并指定用户所在的组为root用户组
useradd -g root kk
# 创建一个系统用户
useradd -r kk //创建一个系统用户kk
# 新添加用户kk,其home目录
useradd -d /home/myf kk为/home/myf
# 创建用户并指定shell为zsh
useradd -s /bin/zsh test
9.2 删除用户
9.2.1 userdel
userdel可删除用户帐号与相关的文件。若不加参数,则仅删除用户帐号,而不删除相关文件。
格式:
userdel [-r] username
参数 | 说明 |
---|---|
-r | 删除用户登入目录以及目录中所有文件 |
9.3 修改用户
9.3.1 usermod
格式:
usermod [option] username
参数 | 说明 |
---|---|
-c<备注> | 修改用户帐号的备注文字 |
-d<登入目录> | 修改用户登入时的目录 |
-e<有效期限> | 修改帐号的有效期限 |
-f<缓冲天数> | 修改在密码过期后多少天即关闭该帐号 |
-g<群组> | 修改用户所属的群组 |
-G<群组> | 修改用户所属的附加-群组 |
-l<帐号名称> | 修改用户帐号名称 |
-L | 锁定用户密码,使密码无效 |
-s | 修改用户登入后所使用的shell |
-u | 修改用户ID |
-U | 解除密码锁定 |
9.3 设置用户组
9.3.1 添加用户组
格式:
groupadd [-g gid [-o]] [-r] [-f] group
参数 | 说明 |
---|---|
-g | 指定新建工作组的 id |
-r | 创建系统工作组,系统工作组的组ID小于 500 |
-K | 覆盖配置文件 “/ect/login.defs” |
-o | 允许添加组 ID 号不唯一的工作组 |
-f,–force | 如果指定的组已经存在,此选项将失明了仅以成功状态退出。当与 -g一起使用,并且指定的GID_MIN已经存在时,选择另一个唯一的GID(即-g关闭) |
9.3.2 修改用户组
格式:
groupmod [-g <群组识别码> <-o>][-n <新群组名称>][群组名称]
参数 | 说明 |
---|---|
-g <群组识别码> | 设置欲使用的群组识别码 |
-o | 重复使用群组识别码 |
-n <新群组名称> | 设置欲使用的群组名称 |
9.3.3 删除用户组
倘若该群组中仍包括某些用户,则必须先删除这些用户后,方能删除群组。
格式:
groupdel [群组名称]
10. 命令重命名
若仅输入alias,则可列出目前所有的别名设置。alias的效力仅及于该次登入的操作。若要每次登入是即自动设好别名,可在.profile或.cshrc中设定指令的别名。
*格式:
alias[别名]=[指令名称]
若不加任何参数,则列出目前所有的别名设置。
11. 日期指令
语法:
date [-u] [-d datestr] [-s datestr] [--utc] [--universal] [--date=datestr] [--set=datestr] [--help] [--version] [+FORMAT] [MMDDhhmm[[CC]YY][.ss]]
选项参数:
参数 | 说明 |
---|---|
-d datestr | 显示 datestr 中所设定的时间 (非系统时间) |
–help | 显示辅助讯息 |
-s datestr | 将系统时间设为 datestr 中所设定的时间 |
-u | 显示目前的格林威治时间 |
–version | 显示版本编号 |
时间格式:
参数 | 说明 |
---|---|
% | 印出 % |
%n | 下一行 |
%t | 跳格 |
%H | 小时(00…23) |
%I | 小时(01…12) |
%k | 小时(0…23) |
%l | 小时(1…12) |
%M | 分钟(00…59) |
%p | 显示本地 AM 或 PM |
%r | 直接显示时间 (12 小时制,格式为 hh:mm:ss [AP]M) |
%s | 从 1970 年 1 月 1 日 00:00:00 UTC 到目前为止的秒数 |
%S | 秒(00…61) |
%T | 直接显示时间 (24 小时制) |
%X | 相当于 %H:%M:%S |
%Z | 显示时区 |
日期格式:
参数 | 说明 |
---|---|
%a | 星期几 (Sun…Sat) |
%A | 星期几 (Sunday…Saturday) |
%b | 月份 (Jan…Dec) |
%B | 月份 (January…December) |
%c | 直接显示日期与时间 |
%d | 日 (01…31) |
%D | 直接显示日期 (mm/dd/yy) |
%h | 同 %b |
%j | 一年中的第几天 (001…366) |
%m | 月份 (01…12) |
%U | 一年中的第几周 (00…53) (以 Sunday 为一周的第一天的情形) |
%w | 一周中的第几天 (0…6) |
%W | 一年中的第几周 (00…53) (以 Monday 为一周的第一天的情形) |
%x | 直接显示日期 (mm/dd/yy) |
%y | 年份的最后两位数字 (00.99) |
%Y | 完整年份 (0000…9999) |
若是不以加号作为开头,则表示要设定时间,而时间格式为 MMDDhhmm[[CC]YY][.ss],其中 MM 为月份,DD 为日,hh 为小时,mm 为分钟,CC 为年份前两位数字,YY 为年份后两位数字,ss 为秒数。
使用权限:所有使用者。
当您不希望出现无意义的 0 时(比如说 1999/03/07),则可以在标记中插入 - 符号,比如说 date ‘+%-H:%-M:%-S’ 会把时分秒中无意义的 0 给去掉,像是原本的 08:09:04 会变为 8:9:4。另外,只有取得权限者(比如说 root)才能设定系统时间。
当您以 root 身分更改了系统时间之后,请记得以 clock -w 来将系统时间写入 CMOS 中,这样下次重新开机时系统时间才会持续抱持最新的正确值。
实例:
# 显示当前时间
date
三 5月 12 14:08:12 CST 2010
date '+%c'
2010年05月12日 星期三 14时09分02秒
# 显示完整的时间
date '+%D'
05/12/10
# 显示数字日期,年份两位数表示
date '+%x'
2010年05月12日
# 显示日期,年份用四位数表示
date '+%T'
14:09:31
# 显示24小时的格式
date '+%X'
14时09分39秒
# 按自己的格式输出
date '+usr_time: $1:%M %P -hey'
usr_time: $1:16 下午 -hey
# 显示时间后跳行,再显示目前日期
date '+%T%n%D'
# 显示月份与日数
date '+%B %d'
# 显示日期与设定时0间(12:34:56)
date --date '12:34:56'
11.文件权限补码
umask可用来设定[权限掩码]。[权限掩码]是由3个八进制的数字所组成,将现有的存取权限减掉权限掩码后,即可产生建立文件时预设的权限。
语法:
umask [-S][权限掩码]
参数 | 说明 |
---|---|
-S | 以文字的方式来表示权限掩码 |
实例:
# 获取当前权限掩码
umask
0022
# 创建目录
mkdir test1
# 显示目录的详细信息
ls –d –l test1/
drwxr-xr-x 2 rootlocal rootlocal 4096 2011-9-19 21:46 test1/
# 注意:在上面的输出信息中,"drwxr-xr-x"="777-022=755"。
12. 结束进程
语法:
kill [options] <pid> [...]
参数 | 说明 |
---|---|
-l <信息编号> | 若不加<信息编号>选项,则 -l 参数会列出全部的信息名称 |
-s <信息名称或编号> | 指定要送出的信息 |
[程序] | [程序]可以是程序的PID或是PGID,也可以是工作编号 |
最常用的信号:
参数 | 说明 |
---|---|
1 (HUP) | 重新加载进程 |
9 (KILL) | 杀死一个进程 |
15 (TERM) | 正常停止一个进程 |
实例:
# 杀死进程
kill 12345
# 强制杀死进程
kill -KILL 123456
# 发送SIGHUP信号,可以使用一下信号
kill -HUP pid
# 彻底杀死进程
kill -9 123456
# 显示信号
kill -l
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP
6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1
11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM
16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ
26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR
31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3
38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8
43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7
58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2
63) SIGRTMAX-1 64) SIGRTMAX
# 杀死指定用户所有进程
# 方法一 过滤出hnlinux用户进程
kill -9 $(ps -ef | grep hnlinux)
# 方法二
kill -u hnlinux
13. 查看进程状态
语法:
ps [options] [--help]
参数 | 说明 |
---|---|
-a | 显示所有终端机下执行的程序,除了阶段作业领导者之外 |
a | 显示现行终端机下的所有程序,包括其他用户的程序 |
-A | 显示所有程序 |
-c | 显示CLS和PRI栏位 |
c | 列出程序时,显示每个程序真正的指令名称,而不包含路径,参数或常驻服务的标示 |
-C<指令名称> | 指定执行指令的名称,并列出该指令的程序的状况 |
-d | 显示所有程序,但不包括阶段作业领导者的程序 |
-e | 此参数的效果和指定"A"参数相同 |
e | 列出程序时,显示每个程序所使用的环境变量 |
-f | 显示UID,PPIP,C与STIME栏位 |
f | 用ASCII字符显示树状结构,表达程序间的相互关系 |
-g<群组名称> | 此参数的效果和指定"-G"参数相同,当亦能使用阶段作业领导者的名称来指定 |
g | 显示现行终端机下的所有程序,包括群组领导者的程序 |
-G<群组识别码> | 列出属于该群组的程序的状况,也可使用群组名称来指定 |
h | 不显示标题列 |
-H | 显示树状结构,表示程序间的相互关系 |
-j或j | 采用工作控制的格式显示程序状况 |
-l或l | 采用详细的格式来显示程序状况 |
L | 列出栏位的相关信息 |
-m或m | 显示所有的执行绪 |
n | 以数字来表示USER和WCHAN栏位 |
-N | 显示所有的程序,除了执行ps指令终端机下的程序之外 |
-p<程序识别码> | 指定程序识别码,并列出该程序的状况 |
p<程序识别码> | 此参数的效果和指定"-p"参数相同,只在列表格式方面稍有差异 |
r | 只列出现行终端机正在执行中的程序 |
-s<阶段作业> | 指定阶段作业的程序识别码,并列出隶属该阶段作业的程序的状况 |
s | 采用程序信号的格式显示程序状况 |
S | 列出程序时,包括已中断的子程序资料 |
-t<终端机编号> | 指定终端机编号,并列出属于该终端机的程序的状况 |
t<终端机编号> | 此参数的效果和指定"-t"参数相同,只在列表格式方面稍有差异 |
-T | 显示现行终端机下的所有程序 |
-u<用户识别码> | 此参数的效果和指定"-U"参数相同 |
u | 以用户为主的格式来显示程序状况 |
-U<用户识别码> | 列出属于该用户的程序的状况,也可使用用户名称来指定 |
U<用户名称> | 列出属于该用户的程序的状况 |
v | 采用虚拟内存的格式显示程序状况 |
-V或V | 显示版本信息 |
-w或w | 采用宽阔的格式来显示程序状况 |
x | 显示所有程序,不以终端机来区分 |
X | 采用旧式的Linux i386登陆格式显示程序状况 |
-y | 配合参数"-l"使用时,不显示F(flag)栏位,并以RSS栏位取代ADDR栏位 |
-<程序识别码> | 此参数的效果和指定"p"参数相同 |
–cols<每列字符数> | 设置每列的最大字符数 |
–forest | 此参数的效果和指定"f"参数相同 |
–headers | 重复显示标题列 |
–help | 在线帮助 |
–info | 显示排错信息 |
–lines<显示列数> | 设置显示画面的列数 |
–no-headers | 此参数的效果和指定"h"参数相同,只在列表格式方面稍有差异 |
-au | 显示较详细的资讯 |
-aux | 显示所有包含其他使用者的行程 |
au(x) 输出格式 :
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
14. 其他常用命令
命令 | 说明 |
---|---|
set -o vi | 设置终端可以使用vim快捷键 |