核心工具集(一)
细节
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 字符串|正则表达式 文件名|标准输入
在文件中搜索内容
参考资料: