循序渐进Linux 2:Linux的常用命令及使用技巧

摘要:
Shell不仅是一种命令解释器,还是一种功能强大的解释式编程语言。shell解释用户输入的命令,将其提交给内核进行处理,最后将结果返回给用户。如果在shell的参数中使用它们,就会出现问题。

一、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文件名后输出文件的大小
-kk字节形式表示文件大小
-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压缩或解压后默认删除原始文件,此选项保留原始文件
-fbzip2压缩或解压后若输出文件与现文件同名,预设不会覆盖现有文件,该选项直接覆盖
-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字节
countbs的数量
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 [要下载软件网址]

免责声明:文章转载自《循序渐进Linux 2:Linux的常用命令及使用技巧》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇基于C的Speex 音频编解码Linux 异步IO(AIO)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Mac命令行

参考:http://www.cnblogs.com/-ios/p/4949923.html 必读 涵盖范围: 这篇文章对刚接触命令行的新手以及具有命令行使用经验的人都有用处。本文致力于做到覆盖面广(尽量包括一切重要的内容),具体(给出最常见的具体的例子)以及简洁(避免一些不必要的东西以及一些偏题的可以在其他地方翻阅到文献的东西)。 每个小技巧在某个...

解决Deepin每次打开Chome都提示解锁登录密钥环的麻烦

密钥环是linux系统用于安全保存程序私密数据的模块,可以用于加密保存密码、证书、密钥等安全数据。chrome的密钥环用于保存本地访问站点密码或缓存从google服务器同步下来的访问站点的密码。 Deepin系统的chrome会默认会把密码放在登录密钥环里,之所以会提示解锁登录密钥环是因为你的登陆密钥环被锁定了,只要把你的登陆密钥环解锁就可以了。 安装se...

java日期格式大全 format SimpleDateFormat(转)

java日期格式大全 format SimpleDateFormat /*** 字符串转换为java.util.Date<br>* 支持格式为 yyyy.MM.dd G 'at' hh:mm:ss z 如 '2002-1-1 AD at 22:10:59 PSD'<br>* yy/MM/dd HH:mm:ss 如 '2002/1/1...

sed-文本处理

sed 命令 sed是一种流编辑器,它是文本处理中非常中的工具,能够完美的配合正则表达式使用,功能不同凡响。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有 改变,除非你使用重定向存储输...

Java高级之虚拟机垃圾回收机制

博客出自:http://blog.csdn.net/liuxian13183,转载注明出处! All Rights Reserved ! 区别于C语言手动回收,Java自动执行垃圾回收,但为了执行高效,需要了解其策略,更好的去应用。 以下用HotSpot虚拟机为例,选取几个有意思的参数讲一下 1、默认GC时间为总时间的1%。也就是说GC线程设置有超时...

Shell学习笔记——变量

变量赋值时不需要$符号,且=前后不能有空格 赋值时可以用=`命令`,将命令运行的结果值赋值过去,这里用到的是反引号 $0 $1 $2 - $9表示命令行的参数,并且可以通过shift将后面的参数移到前面来以获得更多参数 read可以读入参数,也可以通过重定向从文件读入,并且最后一个参数会把剩下所有内容读入,不够则为空串。IFS用于设置读取时候的分隔符。 $...