循序渐进Linux 2:Linux的常用命令及使用技巧
一、Shell
shell本身是一个以C语言编写的程序,是用户和操作系统内核之间通信的桥梁。shell既是一种命令解释程序,又是一种功能强大的解释型程序设计语言。shell解释用户输入的命令,提交到内核处理,最后返回结果给用户。
1. shell命令语法分析
command [option] -[arguments]
2. shell的通配符
bash中常用的通配符有 * ? []
*: 匹配任意一个或多个字符
?: 匹配任意单一字符
[]: 匹配任何包含在方括号内的单字符
ls /dev/sda[12345] /dev/sda1 /dev/sda2 /dev/sda3 /dev/sda4 /dev/sda5
3. shell的重定向
3.1 输入重定向
输入重定向用于改变命令的输入源,可以把一个文件的内容作为命令的输入
输入重定向操作符有 < 和 <<
// 利用wc统计输入文件的行数、单词数、字符数 wc</etc/shadow 41 41 1275
<< 是告诉shell当前命令的标准输入是来自命令行中一对分隔号之间的内容
把一对分隔号aa之间的内容作为wc命令的输入,分隔号可以是任意字符
ALW-VM# wc<< aa heredoc> 1.Test1 heredoc> 2.Test2 heredoc> 3.Test3 heredoc> aa 3 3 24
3.2 输出重定向
输出重定向是指把命令的输出结果保存在一个指定文件中(常用)
输出重定向操作符: > 和 >>
ALW-VM% ps -ef >ps.txt ALW-VM% ls a ps.txt testgfile1 ALW-VM% vim ps.txt
> 与 >>的区别:
如果 > 后面指定的文件不存在,则会自动创建;如果存在,则覆盖
>> 操作符不会覆盖原文件,会把新的信息追加到原文件
3.3 错误重定向
错误重定向操作符: 2> 和 2>>
4. shell的管道
管道可以把很多命令连接起来,可以把第一个命令的输出当作第二个命令的输入,以此类推
管道符: |
ALW-VM% ps -ef | grep httpd juntaran 38489 38426 0 20:19 pts/3 00:00:00 grep httpd ALW-VM% ps -ef | grep httpd | wc -l 1
5. shell的引用
bash中有很多特殊字符,本身就具有特殊含义。如果shell的参数中使用它们就会出现问题。
引用技术来忽略这些自负的特殊含义,通知shell把这些特殊字符当作普通字符处理
转义字符 \ 单引号 ' ' 双引号 ""
5.1 转义字符 \
把 \ 放到特殊字符前面,shell就忽略这些特殊字符的特殊含义
5.2 单引号 ' '
把字符串放到一对单引号之间,那么字符串中所有特殊字符的特殊含义均忽略
5.3 双引号
双引号与单引号基本相同,但是有些特殊字符用双引号括起来也会发挥作用
比如 $ \ 和 `
ALW-VM% echo The date is `date` The date is 2016年 11月 07日 星期一 20:25:46 CST ALW-VM% echo 'The date is `date`' The date is `date` ALW-VM% echo "The date is `date`" The date is 2016年 11月 07日 星期一 20:26:23 CST
二、系统管理与维护
1. ls命令
dir命令与ls命令相同,显示工作目录下的内容,列出所含文件与子目录
ls [选项] [路径或文件]
选项 | 说明 |
-a | 显示所有文件与子目录,包括隐藏文件 |
-d | 只显示目录列表 |
-l | 同时列出权限、使用者、大小等 |
-s | 文件名后输出文件的大小 |
-k | k字节形式表示文件大小 |
-u | 以访问时间排序 |
-t | 以时间排序 |
-o | 显示除组外详细信息 |
-x | 按列输出,横向排序 |
-r | 反向排序 |
-q | 用?代替不可输出字符 |
-m | 横向输出文件名,以 , 作为分隔符 |
-S | 以文件大小排序 |
-R | 列出所有子目录下文件 |
-pF | 文件名后说明类型,*是可执行普通文件,/是目录,@是符号链接,|是FIFO,=是套接字 |
-C | 按列输出,纵向排序 |
-Q | 把输出文件名用双引号括起来 |
2. pwd命令
显示当前工作目录,绝对路径
3. cd命令
cd [目录名]
选项 | 说明 |
cd 目录 | 切换到该目录,区分大小写 |
cd 或 cd ~ | 返回当前用户默认工作目录 |
cd ~用户名 | 返回指定用户工作目录 |
cd .. | 返回到上级目录 |
cd / | 返回到根目录 |
4. date命令
date [选项] 显示时间格式(+开头,后面接时间格式)
选项 | 说明 |
-s / -set | 设置系统时间 |
-d / -date | 显示描述日期 |
5. passwd命令
设置用户密码
passwd // 普通用户 passwd [用户名] // root用户
6. su命令
改变用户身份
su [选项] [用户名]
选项 | 说明 |
- | 加载相应用户下环境变量 |
-l | 是目前shell成为改变身份后用户默认shell |
-c | 改变身份运行一个指令就结束 |
-m | 改变用户身份,不改变环境变量 |
7. who命令
显示目前登录到系统的用户
who am i who am I who -m // 三条命令结果相同
8. w命令
显示登录到系统的用户信息
9. uname命令
显示操作系统相关信息
ALW-VM% uname Linux ALW-VM% uname -a Linux ALW-VM 4.4.0-42-generic #62-Ubuntu SMP Fri Oct 7 23:11:45 UTC 2016
x86_64 x86_64 x86_64 GNU/Linux ALW-VM% uname -m x86_64 ALW-VM% uname -n ALW-VM ALW-VM% uname -s Linux ALW-VM% uname -r 4.4.0-42-generic
10. uptime命令
输出系统人物队列信息
11. last命令
读取/var/log/wtmp文件,列出记录登入系统的用户名单
12. dmesg命令
显示开机信息
选项 | 命令 |
-c | 显示开机信息后,清除ring buffer信息 |
-s | 设置缓冲区大小,默认8192 |
-n | 设置记录信息的层级 |
13. free命令
free [选项] [-s (间隔秒数)]
选项 | 说明 |
-b | 以字节为单位显示内存使用情况 |
-m | 以MB为单位显示内存使用情况 |
-K | 以KB为单位显示内存使用情况 |
-t | 显示内存总和列 |
-s (间隔秒数) | 每隔_秒持续显示 |
-o | 不现实系统缓冲区队列 |
14. ps命令
显示系统进程瞬间运行状态
ps [选项]
选项 | 说明 |
a | 显示所有用户进程,包含每个程序完整路径 |
-x | 显示所有系统程序 |
-u | 显示使用者名称与起始时间 |
-f | 详细显示程序的路径群 |
-c | 只显示进程的名字不显示完整路径 |
-e | 除内核进程以外所有进程信息写到标准输出 |
15. top命令
实时显示系统各个进程资源占用情况,可以根据CPU、内存、执行时间对进程排序
top [选项]
选项 | 说明 |
-d | 指定每两次刷新间隔 |
-i | 不显示闲置或僵死进程 |
-c | 显示进程整个命令路径 |
-s | 安全模式,交互式指令取消 |
-b | 分屏显示输出信息,结合-n可以把屏幕信息输出到文档 |
-n | 更新次数,完成后退出 |
三、文件管理与编辑
1. mkdir命令
创建目录
mkdir [选项] 目录名
选项 | 说明 |
-m | 对新建目录设置存取权限 |
-p | 递归创建不存在目录,一次创建多个 |
2. more cat less 命令
查看文件内容
cat可以把内容输出到标准输出,也可用于连接合并文件
cat 文件1 文件2 >文件3
选项 | 说明 |
-A | 制表符显示为^I,同时行尾显示一个$ |
-b | 非空号按顺序编号,从1开始 |
3. diff命令
逐行比较文件差异,如果比较的是目录,则比较相同文件名的文件,但不会比较子目录
diff [选项] 文件1 文件2
选项 | 说明 |
-c | 显示全部内容,并标出不同 |
-b | 忽略行尾空格,字符串中一个或多个空格视为相同 |
-r | 当比较目录时会比较子目录文件 |
-s | 当两个文件相同,显示文件相同信息 |
4. grep命令
文本过滤工具,根据指定字符串对文件每一行进行搜索,找到了,则输出
grep [选项] 需要查找的字符串文件名
选项 | 说明 |
-A NUM | 除了列出符合条件的行外,同时列出每个符合条件行的后NUM行 |
-B NUM | 与-A相反,列出之前NUM行 |
-c | 只显示行数,不列出具体信息 |
-f file | 事先将要搜索样式写入一个文件,每行一个样式,根据文件搜索 |
-i | 忽略大小写 |
-n | 显示行号 |
5. rm命令
删除文件/目录
rm [选项] 文件/目录
选项 | 说明 |
-r | 递归删除,如果没有-r rm命令不能删除目录 |
-f | 忽略不存在的问题 |
-i | 交互式删除,删除前确认 |
6. touch命令
改变指定文件访问时间和修改时间,如果不存在则创建此文件,如果没有指定时间使用当前时间
touch [选项] 设定的时间文件
选项 | 说明 |
-a | 改变文件访问时间为系统当前时间,无须设置时间选项 |
-m | 改变文件修改时间为系统当前时间,无须设置时间选项 |
-c | 如果文件不存在,不创建也不提示 |
-d或-t | 使用指定日期或时间 |
-r<参考文件或目录> | 把指定文件或目录的日期、时间设成与参考文件或目录相同 |
7. ln命令
在文件或目录之间创建链接
硬链接: 通过文件inode号进行链接,多个文件指向同一个inode号,
只有所有链接都删除后文件才会真的被删除
软链接: 符号链接,类似于快捷方式
ln [选项] 源文件 目标链接名
选项 | 说明 |
-f | 在目标位置存在与链接名相同文件,这个文件将删除 |
-s | 软链接 |
-d | 允许系统管理员硬链接自己目录 |
-b | 对将在链接时会覆盖或删除的文件进行备份 |
8. file命令
显示文件类型,长度为0的文件识别为空文件,符号连接文件默认显示引用的真实文件路径
file [选项] 文件名
选项 | 说明 |
-b | 显示文件类型结果,不显示对应文件名称 |
-L | 直接显示符号链接指向文件类型 |
-z | 显示压缩文件信息 |
-i | 如果文件不是常规信息,则不进一步对文件类型进行分类 |
9. cp命令
复制
cp [选项] 源文件或目录 目标文件或目录
选项 | 说明 |
-a | 复制目录时保罗所有信息,包含文件链接、文件属性、递归复制目录 |
-r | 给出源文件是个目录,则递归复制所有子目录与文件,目标文件必须为目录名 |
-d | 复制时保留链接 |
-p | 保留文件修改时间和存取权限 |
-i | 如果已有相同目标文件,提示用户是否覆盖 |
10. find命令
指定路径查找指定文件
find 路径名[-options] [-print -exec -ok 命令 {} \;]
-options | 说明 |
-name '字符串' | 查找文件名匹配的文件 |
-lname '字符串' | 查找文件名匹配的符号链接文件 |
-gid n | 查找属于ID号为n的用户组的文件 |
-uid n | 查找属于ID号为n的用户文件 |
-empty | 查找大小为0的文件或目录 |
-path '字符串' | 查找路径名匹配的文件 |
-group '字符串' | 查找匹配用户组的文件 |
-depth | 搜索目录深度 |
-prune 目录 | 指出搜索时忽略的目录 |
-size n | 查找文件长度为n的文件,带有c时表示文件长度以字节计 |
-user '字符串' | 查找匹配用户的字符串 |
-mtime +n/-n | 按时间搜索,+n是n天之前,-n是今天到n天之前的 |
-type 文件类型 |
按文件类型搜索 b:块设备文件、 c:字符设备文件、 f:普通文件、 l:符号文件、 d:目录、 p:管道、 s:socket文件 |
-print: 将搜索结果输出到标准输出
-exec: 对符合条件文件执行所给Linux命令
-ok: 对符合条件文件执行所给Linux铭刻,会询问用户是否执行
11. split命令
分割文件
split [选项] [输入文件] [输出文件]
选项 | 说明 |
-b size | 指定分割出来文件大小,size可加入单位,b代表512字节,k代表1KB,m代表1MB |
-n | 指定分割每个文件长度,默认1000行 |
-d | 生成文件序列以数字形式命名 |
-a | 指定生成文件序列长度,默认长度为2 |
12. mv命令
对文件或目录执行改名或剪切操作
mv [选项] 源文件或目录 目标文件或目录
选项 | 说明 |
-i | 对已存在文件或目录,会询问是否覆盖 |
-f | 默认覆盖,无交互 |
四、压缩与解压
1. zip/unzip命令
生成后缀名为 .zip 的压缩包
zip [选项] 压缩文件名 需要压缩的文档列表 unzip [选项] 压缩文件吗
zip命令选项:
选项 | 说明 |
-r | 递归压缩,包括目录、子目录、文件 |
-d | 从压缩文件内删除指定文件 |
-i "文件列表" | 只压缩文件列表内文件 |
-x "文件列表" | 压缩时排除文件列表中指定的文件 |
-u | 更新文件到压缩文件中 |
-m | 压缩后删除原始文件 |
-F | 尝试修复受损的压缩文件 |
-T | 检查压缩文件内每个文件是否正确 |
- 压缩级别 | 1-9数字 9最高 |
unzip命令选项:
选项 | 说明 |
-x "文件列表" | 解压文件,但不包括文件列表中指定的文件 |
-t | 测试是否损坏,不解压 |
-v | 查看压缩文件详细信息,不解压 |
-n | 解压时不覆盖已经存在文件 |
-o | 解压时覆盖已存在文件,无用户交互 |
-d 目录名 | 把解压文件解压到指定目录 |
2. gzip/gunzip命令
压缩文件预设扩展名为 .gz gunzip是gzip的硬链接,无论压缩还是解压都可以通过gzip实现
gzip只能压缩文件,不能压缩目录,即使指定目录也只能压缩目录内所有文件
gzip [选项] 压缩/解压文档名
选项 | 说明 |
-d | 解压 |
-r | 递归压缩目录下子目录所有文件 |
-t | 检查压缩文档完整性 |
-v | 对每个压缩和解压的文档,显示相应文件名和压缩比 |
-l | 显示压缩文件的压缩信息 |
-num | 指定压缩比例 -1/-fast为最低压缩比,-9/-best是最高压缩比,默认为6 |
3. bzip2/bunzip2命令
类似于gzip/gunzip,只能对文件进行压缩,默认后缀 .bz2
bunzip2是bzip2的符号链接,压缩解压都可以通过bzip2实现
bzip [选项] 压缩/解压的文件
选项 | 说明 |
-d | 执行解压,此时选项后跟着解压缩文件 |
-v | 压缩或解压时显示详细信息 |
-k | 压缩或解压后默认删除原始文件,此选项保留原始文件 |
-f | bzip2压缩或解压后若输出文件与现文件同名,预设不会覆盖现有文件,该选项直接覆盖 |
-t | 测试压缩文件完整性 |
- 压缩级别 | 1-9数字,数字越大,压缩率越高 |
4. tar命令
tar是归档工具,归档为一个文件,但是不会压缩
tar [主选项+辅助选项] 文件或目录
主选项:
主选项 | 说明 |
-c | 新建文件 |
-r | 要归档文件追加到档案文件末尾 |
-t | 列出档案文件中已经归档的文件列表 |
-x | 从打包的档案文件中还原文件 |
-u | 更新档案文件,新建文件替换档案中的原始文件 |
辅助选项:
辅助选项 | 说明 |
-z | 调用gzip 在文件打包的过程中压缩/解压文件 |
-w | 还原文件时,文件修改时间设为当前时间 |
-j | 调用bzip2 在文件打包过程中压缩/解压文件 |
-Z | 调用compress命令过滤档案 |
-f | 后面紧跟档案文件存储设备,-f 必须是tar最后一个选项 |
-v | 创建归档文件过程中,显示各个归档文件名称 |
-p | 文件归档规程中,文件属性不变 |
-N "yyyy/mm/dd" | 指定日期后的文件才会被打包 |
--exclude file | 打包过程中,忽略file文件 |
tar -zcvf [目录]/压缩包文件名.tar.gz 源文件 // 调用gzip压缩 tar -zxvf [压缩包文件名.tar.gz] -C [路径]/ // 解压到指定路径 tar -jcvf [目录]/压缩包文件名.tar.bz2 源文件 // 调用bzip2压缩 tar -jxvf [压缩包文件名.tar.bz2] -C [路径]/ // 解压到制定路径
5. dd命令
转换或复制文件,同时对设备进行 备份
dd if="input_file" of="output_file" bs="block_size" count="number"
选项 | 说明 |
if | 输入文件,可以是设备,比如磁盘某分区或整个磁盘 |
of | 输出文件,可以使输出设备,比如磁盘、磁带等 |
bs | 指定一个block大小,默认512字节 |
count | bs的数量 |
dd if=/dev/sda2 of=/opt/sda2.back // 备份/dev/sda2分区
6. cpio命令
以重定向方式打包、备份、还原、回复文件的工具,可以解压以 .cpio 或 .tar 结尾的文件
cpio [选项] > 文件名或设备名
cpio [选项] < 文件名或设备名
选项 | 说明 |
-o | 文件复制、打包成文件或把文件输出到设备 |
-i | 文件解压或把设备上的备份还原到系统 |
-t | 查看cpio打包的文件内容与输出到设备上的文件内容 |
-v | 显示打包过程中的文件名 |
-d | 在cpio还原文件过程中,自动建立相应目录 |
-c | 一种较新的存储方式 |
-B | 默认块增大到5120字节,默认块为512字节,可以加快存取速度 |
五、磁盘管理与维护
1. df命令
检查Linux系统的磁盘空间占用情况
df [选项]
选项 | 说明 |
-h | 以容易理解格式输出文件系统分区占用情况 |
-k | 以KB为单位输出文件系统分区占用情况 |
-m | 以MB为单位输出文件系统分区占用情况 |
-a | 列出所有文件系统分区,包含0大小文件系统分区 |
-i | 列出文件系统分区的inode信息 |
-T | 显示磁盘分区的文件系统类型 |
2. du命令
显示文件或目录所占用磁盘空间情况
du [选项] 文件或目录
选项 | 说明 |
-s | 显示文件或整个目录的大小,单位为KB |
-b | 以字节尾单位显示文件大小或显示目录下所有文件大小 |
-sh | 人性化格式显示文件或目录大小 |
-sm | 以MB为单位显示文件或目录大小 |
3. fsck命令
检查文件系统并尝试修复错误
fsck [选项] [-t <文件系统类型>] [设备名]
选项 | 说明 |
-a | 自动修复文件系统,无提示 |
-r | 交互式修复模式 |
-A | 依照 /etc/fstab 配置文件内容,检查文件内所列全部文件系统 |
-T | 执行fsck命令时不显示标题信息 |
-V | 显示执行过程 |
-N | 不执行指令,仅列出实际执行进行的动作 |
4. sync命令
强制把内存中的数据写回硬盘,防止数据丢失
sync
5. eject命令
退出抽取式设备,如果已经挂载,则先卸载再退出
eject [选项] 设备名
选项 | 说明 |
-c <光驱编号> | 若有多个光驱需要指定光驱号 |
-d 或 --default | 显示默认设备,误操作 |
-f 或 --floppy | 退出抽取式软盘 |
-q 或 --tape | 退出磁带 |
-r 或 --cdrom | 退出光盘 |
-t 或 --trayclose | 关闭光盘托盘 |
-n 或 --noop | 显示指定设备名对应的设备文件路径,默认显示光盘的设备文件路径 |
6. mount/unmout命令
挂载/卸载指定文件系统
mount [选项] [-L<标签>] [-o<选项>] [-t<文件系统类型>] [设备名] [挂载点]
// 标签是磁盘分区标识的别名,随便起 -o选项是指加载文件系统时的选项 文件系统类型是指设备的文件系统类型 umount [挂载点]
选项 | 说明 |
-a | 加载文件 /etc/fstab 指定所有设备 |
-n | 不将加载信息记录在 /etc/mtab 文件中 |
-r | 只读方式打开设备 |
-w | 可读写模式加载设备,输入mount默认设置 |
-f 或-v | 不加载设备,仅查看mount挂载状态 |
六、网络设置与维护
1. ifconfig命令
配置网络或显示当前网络接口状态
ifconfig [选项] [interface] [inet|up|down|netmask|adr|broadcast] // interface:网络接口名 eth0,添加后仅显示指定网卡信息 // up:激活一个网络接口 // down:关闭一个网络接口 // netmask:为一个指定的网络接口指定子网掩码 // addr:网络接口指定的IP地址 // broadcast: 为指定的接口设置广播地址
选项 | 说明 |
-a | 显示所有网络接口信息,包括活动与非活动 |
-s | 仅显示每个活动接口摘要信息 |
-v | 如果某个网络接口出现错误,返回错误信息 |
2. scp命令
secure copy,用于把目录或文件从一个Linux复制到另一个Linux,传输数据采用SSH协议
// 远程复制到本地 scp 远程用户名@ip地址:文件绝对路径 本地Linux系统路径 // 本地复制到远程 scp 本地Linux系统路径 远程用户名@ip地址:远程文件绝对路径名
3. netstat命令
显示本机网络连接、运行端口和路由表信息
netstat [选项]
选项 | 说明 |
-a | 显示本机所有连接和监听接口 |
-n | 以网络IP地址形式显示当前建立的有效连接和端口 |
-r | 显示路由表信息 |
-s | 显示按协议的统计信息 |
-v | 显示当前有效连接 |
-t | 显示所有TCP连接 |
-u | 显示所有UDP连接 |
-c 秒数 | 每隔几秒刷新一次 |
-i | 显示自动配置接口状态 |
-l | 仅显示连接状态为LISTEN的服务的网络状态 |
-p | 显示连接对应的PID与程序名 |
4. traceroute命令
显示网络数据包传输到指定主机的路径信息,追踪数据传输路由状况,预设数据包大小为38字节
traceroute [选项] [远程主机名或IP地址] [数据包大小]
选项 | 说明 |
-i 网络接口 | 使用指定的网络接口发送数据包 |
-n | 直接使用IP地址而不是用主机名 |
-v | 详细显示命令的执行过程 |
-w 超时描述 | 设置等待远程主机回应的时间 |
-x | 开启或关闭对数据包的正确检验 |
-s 源IP | 设置本地主机发送数据包的IP地址 |
-g 网关地址 | 设置来源的路由王冠,最多8个 |
5. telnet命令
通过telnet协议与远程主机通信或获得远程主机对应端口信息
telnet 主机名或IP地址 端口
6. wget命令
下载
wget [要下载软件网址]