循序渐进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 [要下载软件网址]

 

posted @ 2016-11-07 20:38  Juntaran  阅读(756)  评论(0编辑  收藏  举报