核心工具集(一)
细节
Linux是大小写敏感的系统,所有的命令、路径、选项、参数、变量……都区分大小写。
使用TAB键补全命令,无论任何时候,多按几次TAB总会有所帮助。
Shell的功能键能够协助您更高效的编辑命令,请熟悉其键绑定、尽量使用它。
命令由命令名、分隔符、选项、操作对象组成
命令名
标识命令的功能,例如cp(copy)、mv(move)、rm(remove)……
有些命令包含一些子命令,您有认为它的命令名由两个单词构成,例如“apt”软件包管理系统:
1
2
apt-get install 安装一个软件
apt-get remove 删除一个软件
分隔符
通常为空格,多个连续的空格视为一个空格,下面两个命令相同:
1
2
cp a b
cp a b
有一些特殊符号也属于分隔符,例如管道|,重定向>,>>,<、后台运行&,序列执行&&、;。使用这些符号时,你不需要再使用空格作为分隔符
1
2
ls -al|less #两个命令效果相同
ls -al | less #更容易阅读
选项
精细调节命令的行为,以-引导,通常为选项的首字母。许多软件都可以使用-h选项来阅读使用说明。例如:
1
2
3
4
apt-get -h
apt-get --help①
apt-get -help②
apt-get -h -e -l -p③
①也可以使用选项的全名,一般以--引导
②多数命令中,使用-引导多个字符,将会被视为多个选项
③与上面的命令效果一样
少数命令的选项,不需要以-引导,或者使用-引导选项全名,例如:
1
2
3
ps aux
/etc/ini.d/gdm start
mplayer -loop xxx
递归
表示在子层次中重复相同操作。例如递归复制某目录,不但复制当前目录及其下的所有文件;而且对当前目录的子目录,也进行递归复制的操作。
格式约定
使用[]表示可选项,实际输入为方括号中的内容,例如
1
ls [-l]
实际输入为,ls -l
使用|表示“或”,以|分隔的项目不能同时使用,例如
1
tar [-z|j c|x vf] 归档文件 [源文件]
选项通常紧跟命令名,除非必要,在命令格式中,我们通常省略它们。
系统信息
uptime
联机信息-实际,显示如下:
1
11:27pm① up 9 days, 7:12②, 3 user③, load average: 0.07, 0.12, 0.14④
①当前系统时间
②系统运行时间
③当前在线用户数
④系统负荷:1分钟前、5分钟前、15分钟前
w
联机信息-已登录用户,显示如下
1
2
3
01:04:10 up 1.34, 2 users, load average: 0.25, 0.16, 0.11①
USER② TTY③ FROM④ LOGIN@⑤ IDLE⑥ JCPU PCPU⑦ WHAT⑧
user tty1 192.168.0.1 23:30 1.33 0.14s 0.12s -bash
①uptime信息②用户名③登录方式④来源地址⑤登录时间⑥发呆时间⑦资源占用⑧当前任务
who
联机信息,-r选项为运行级别
whoami
显示当前用户名
last
最近用户登录信息,-数字使用数字作为选项,控制显示条目
uname
系统信息
| 选项 | 含义 |
|---|---|
| -s | 内核名称(默认选项) |
| -a | 全部 |
| -p | CPU信息 |
| -n | 主机名 |
| -r | 内核发行信息(版本号) |
| -v | 内核版本信息 |
date
显示、设定系统时间
| 选项 | 格式 | 含义 |
|---|---|---|
| -u | 显示格林尼洛时间(UTC) | |
MMDDhhmm[[CC]YY][.ss] |
设定时间,需要管理员权限 | date 12292359 |
| MM | 月份 | |
| DD | 天数 | |
| hh | 小时 | |
| mm | 分钟 | |
| CC | 年份前两位 | |
| YY | 年份后两位 | |
| ss | 秒钟 | |
| 秒钟、年份为可选 | date 122923592006.59 | |
| +[%X] | 设定显示格式,默认输出格式: | date +%Y年%m月%d日%A%H:%M:%S%Z |
| 格式控制 | %n | 换行 |
| %t | 制表符 | |
| 小时 | %H | 00~23 |
| %I | 01~12 | |
| %k | 0~23 | |
| %l | 1~12 | |
| %p | AM|PM | |
| 分、秒 | %M | 分钟(00~59) |
| %S | 秒(00..61) | |
| %T | hh:mm:ss | |
| %r | hh:mm:ss AM|PM | |
| %s | 从1970年1月1日00:00:00 UTC到目前为止的秒数 | |
| %X | %H:%M:%S | |
| %Z | 时区 | |
| 星期 | %a | Sun~Sat |
| %A | Sunday~Saturday | |
| %w | 一周中的第几天(0~6) | |
| 年份 | %Y | 0000~9999 |
| %y | 00~99 | |
| 月份 | %m | 01~12 |
| %b | Jan~Dec | |
| %B | January~December | |
| 日期 | %c | 完整日期时间 |
| %d | 01~31 | |
| %j | 001~366 | |
| %x | 本地格式日期 | |
| %D | mm/dd/yy | |
| 一年中的第几周 | %U | 以Sunday为一周的第一天 |
| %W | 以MonDay为一周的第一天 |
cal
显示日历
文件管理
细节
/ 目录为文件系统根目录,所有目录都是它的子目录
绝对路径以 / 起始,相对路径以当前所在目录起始
目录是一种特殊类型的文件,如果没有特别指明,文件包括文件和目录
.. 表示上一级目录, . 表示当前目录,它们是两个特殊目录
链接为当前文件建立在其他路径中的访问方法。例如将系统中其他位置的可执行文件,链接到 /usr/local/bin目录下,使用命令调用。
ls [路径]
显示当前目录文件列表
| 选项 | 含义 |
|---|---|
| –color | 不同属性以不同颜色显示(默认选项) |
| -a | 全部显示 |
| -i | 显示inode值 |
| -l | 详细信息 |
| -F | 显示文件类型后缀 目录 / 链接@ 可执行文件* 端口文件= 管道文件| |
| -A | 显示隐藏文件 |
| -R | 递归显示子目录文件列表 |
| -S | 按文件大小排序 |
| -t | 按修改时间排序 |
| -u | 按访问时间排序 |
| -d | 只显示目录,不递归显示目录下的文件 |
cd [目录路径] | [特殊路径]
切换目录,目录可以使用绝对路径或者相对路径
| 选项 | 含义 |
|---|---|
| ~ | $HOME目录(默认值) |
| - | 上一次目录 |
| .. | 上一级目录 |
| . | 当前目录 |
您可以通过修改/etc/environment文件,来定义$CDPATH变量,设定cd命令的搜索路径。
pwd
显示当前路径
file文件名
显示文件类型,-i表示显示mine类型
du [路径]
计算文件或目录空间占用
| 选项 | 含义 |
|---|---|
| -h | 人性化显示。自动以G、M、K为单位显示占用空间大小 |
| –max-depth=数字 | 显示目录深度 |
| -l | 重复计算硬链接文件大小 |
| -L | 计算符号链接文件大小 |
| -a | 显示当前目录子目录中的文件 |
| -c | 显示文件数 |
less 文件名
浏览文件,使用VI和Emacs两种风格的键绑定。
touch 目标文件
触碰,在不修改文件的前提下,更改其时间属性。通常用来创建一个空文件
mkdir 文件夹
创建文件夹,-p按路径创建多级目录 -m数字权限值
cp 源文件 目标目录|文件
将源文件复制为目录文件,或将源文件复制到目标目录。多个源文件使用空格分隔。
cp 源目录 目标目录
将源目录复制到目标墓中,如果复制多个源目录,需要使用-R选项
| 选项 | 含义 |
|---|---|
| -a | 相当于-dpr选项 |
| -d | 保留链接 |
| -f | 强制复制,覆盖目标文件 |
| -i | 覆盖时询问用户 |
| -p | 保留修改时间和访问权限 |
| -r -R | 递归复制(目录=>目录) |
| -l | 创建链接 |
| -v | 显示过程 |
rm 目标目录|文件
删除
| 选项 | 含义 |
|---|---|
| -r -R | 递归删除(用于删除目录) |
| -f | 强制删除(无需确认,直接删除) |
| -i | 交互式删除(询问用户) |
rmdir 目标目录
删除目录时,建议使用rm -r命令
mv 源文件 目标目录|文件
相当于复制后删除源文件,也可以作为“重命名”使用
| 选项 | 含义 |
|---|---|
| -f | 强制,覆盖目标文件 |
| -i | 覆盖时询问用户 |
| -v | 显示过程 |
ln 源文件 链接
| 选项 | 含义 |
|---|---|
| -s | 符号链接 |
| -f | 强制链接,覆盖目标文件 |
| -i | 覆盖时询问用户 |
文件操作
split 源文件 [目标文件名前缀]
将源文件按一定规则分割成若干个目标文件。默认文件名前缀为x
| 选项 | 含义 |
|---|---|
| -行数 | 按行数分割文件 |
| -l 行数 | 同上 |
| -b 字节 | 按大小分割文件。可以使用b、k、m做单位,不指定单位的情况下,默认单位为b |
| -C 字节 | 按大小分割文件,并尽量保持每行的完整 |
cat 文件名
输出文件内容。用空格分隔多个文件名
| 选项 | 含义 |
|---|---|
| -n | 在输出中添加行号 |
| -b | 在输出中添加行号,空行不编号 |
| -s | 将两行或以上的空行,合并为一个空行 |
可以将多个文件内容连接到一起输出。使用重定向合并为一个文件 ` cat xaa xab xac > file.split`
sort [-o 输出文件] [-t 分隔字符] [+起始字段 -结束字段] [文件]
对文本内容排序
| 选项 | 含义 |
|---|---|
| -m | 合并文件 |
| -c | 检查文件是否已按规则排序 |
| -b | 忽略行首空格字符 |
| -u | 忽略内容重复行 |
| -f | 忽略大小写 |
| -l | 忽略非打印字符 |
| -M | 作为月份比较 |
| -d | 按字典顺序排序,按照字母、数字、空格、制表符排序 |
| -r | 逆序输出 |
more
查看文件内容,使用less
diff 文件1 文件2
比较文件
| 选项 | 含义 |
|---|---|
| 无选项 | 混合ed命令格式 |
| -u [数字] | 统一格式,数字为显示上下文行数 |
| –unified[=数字] | 同上 |
| -c [数字] | 上下文格式,数字为显示上下文行数 |
| –context[=数字] | 同上 |
| -e | ed命令格式 |
| –ed | 同上 |
| -f | RCS命令格式 |
patch
使用diff -uN[r] 旧文件 新文件 > 补丁文件 命令创建补丁文件。
在待补丁文件的目录下使用patch -p[数字] < 补丁文件 命令打补丁,-p [数字]表示忽略补丁文件中记录的目录,数字为忽略的层数。 patch -R 已打补丁文件 补丁文件将已打补丁文件恢复到原来的状态
cksum [文件名]
计算文件的CRC值。不指定文件名则从标准输入设备读入数据
md5sum [文件名]
计算文件的md5值。不指定文件名则从标准输入设备读入数据
| 选项 | 含义 |
|---|---|
| -t | 以文本模式读取 |
| -b | 以二进制模式读取 |
| -c md5记录 | 校验md5记录中的文件(使用md5sum配合重定向生成记录文件) |
压缩解压
tar [-]c|x|u|r|t [z|j] [v] -f 归档文件 [待打包文件]
将多个文件打包为一个归档文件,可以在打包的同时进行压缩。支持的格式为tar(归档)、gz(压缩)、bz2(压缩率更高,比较耗时)
| 选项类型 | 选项 | 含义 |
|---|---|---|
| 操作类型 | -c | 创建 |
| -x | 解包 | |
| -u | 更新 | |
| -r | 添加 | |
| -t | 查看 | |
| -d | 比较压缩包内文件和文件 | |
| -A | 将tar文件添加到归档文件中 | |
| 格式选项 | -z | 使用gz压缩格式 |
| -j | 使用bz2压缩格式 | |
| 其他 | -v | 显示过程 |
| -f文件名 | 归档文件的文件名,使用 - 代表标准输入/输出 | |
| -C 解压路径 | 将压缩包中的文件解压到指定目录 | |
| –exclude=文件 | 排除文件 | |
| -P | 使用绝对路径压缩时,保留根目录“/” | |
| -W | 校验 | |
| -p | 还原文件权限 | |
| -w | 询问用户 | |
| –totals | 统计 | |
| -T 文件列表 | 处理文件列表中的文件 | |
| -X 文件列表 | 排除文件列表中的文件 |
7z|7za 子命令 [选项] 压缩包 [文件]
| 选项类型 | 选项 | 含义 |
|---|---|---|
| 子命令 | a | 添加 |
| d | 删除 | |
| e | 解压 | |
| x | 带路径解压 | |
| l | 列表查看 | |
| t | 测试 | |
| u | 更新 | |
| 选项 | -m 压缩方式 | |
| -m0=压缩算法 | 默认使用lzma | |
| -mx=数字 | 1~9压缩级别 | |
| -mfb=64 | number of fast bytes for LZMA = 64 | |
| -md=字典大小 | 设置字典大小,例如-md=32m | |
| -ms=on|off | 是否固时压缩 | |
| -o输出目录 | 设置输出目录 | |
| -p密码 | 使用密码 | |
| -r数字 | 递归,使用数字定义递归子目录的深度 | |
| -sfx[模块名称] | 使用自解压模块 | |
| -si | 从标准输入设备读入数据 | |
| -so | 将数据写入标准输出设备 | |
| -y | 所有询问均回答Yes | |
| -w路径 | 设置工作目录 |
搜索
whereis 程序名称
查找软件的安装路径
| 选项 | 含义 |
|---|---|
| -b | 只查找二进制文件 |
| -m | 只查找帮助文件 |
| -s | 只查找源代码 |
| -u | 排除指定类型文件 |
| -f | 只显示文件名 |
| -B 目录 | 在指定目录下查找二进制文件 |
| -M 目录 | 在指定目录下查找帮助文件 |
| -S 目录 | 在指定目录下查找源代码 |
locate 文件名称
在文件索引数据库搜索文件 -d 数据库路径搜索指定数据库,updatedb更新文件索引数据库
find [路径] 表达式
查找文件
| 选项 | 含义 |
|---|---|
| -name 表达式 | 根据文件名查找文件 |
| -iname 表达式 | 根据文件名查找文件,忽略大小写 |
| -path 表达式 | 根据路径查找文件 |
| -ipath 表达式 | 根据路径查找文件,忽略大小写 |
| -amin 分钟 | 过去N分钟内访问过的文件 |
| -atime 天数 | 过去N天内访问过的文件 |
| -cmin 分钟 | 过去N分钟内修改过的文件 |
| -ctime 天数 | 过去N天内修改过的文件 |
| -anewer 参照文件 | 比参照文件更晚被读取过的文件 |
| -cnewer 参照文件 | 比参照文件更晚被修改过的文件 |
| -size 大小 | 根据文件大小查找文件,单位 b c w k M G |
| -type 文件类型 | 根据文件类型查找文件。b块设备 c 字符设备 d 目录 p 管道文件 f 普通文件 | 链接 s 端口文件 |
| -user 用户名 | 按归属用户查找文件 |
| -uid 用户编号 | 按用户编号查找文件 |
| -group 群组号 | 按归属群组查找文件 |
| -gid 群组编号 | 按群组编号查找文件 |
| -empty | 查找空文件 |
grep 字符串|正则表达式 文件名|标准输入
在文件中搜索内容
参考资料: