1.ls
-R 参数可以实现递归展开子目录。
-a, –all 列出目录下的所有文件,包括以 . 开头的隐含文件
-l 除了文件名之外,还将文件的权限、所有者、文件大小等信息详细列出来。
-h, –human-readable 以容易理解的格式列出文件大小 (例如 1K 234M 2G)
2.pwd
-P 显示出实际路径,而非使用连接(link)路径。
3.mkdir
-p, --parents 使得参数可以是一个路径,递归创建路径中不存在的目录。
4.rm
-f, --force 忽略不存在的文件,从不给出提示。
-i, --interactive 进行交互式删除
-r, -R, --recursive 指示rm将参数中列出的全部目录和子目录均递归地删除。
-v, --verbose 详细显示进行的步骤
5.cp
-s 创建软连接,而不是复制
-l 创建硬连接,而不是复制
-r,-R, –recursive 递归复
-L, –dereference 跟随符号链接
目录复制 采用cp复制目录时,如果目标目录存在,则会将源目录复制到目标目录内。如果目标目录不存在,则创建一个新的目录,并把源目录的东西放到新创建的目标目录。
6.cat
显示一个文件:cat file
从命令行输入文件:cat >file
合并文件:cat file1 file2>file
-A 显示不可见字符
-s 合并连续空行
-n 加行号显示
7.nl
为标准输出加上行号
8.tail
-f 循环显示,用于持续显示日志的最新部分
9.which
用于定位可执行程序,在PATH环境变量指定的路径中找出第一个对应的可执行程序。
10.whereis
用于在文件数据库中查找二进制,源码和帮助文件
11.locate
用于在文件数据库中定位文件,支持通配符。
12.find
用于在文件树种查找文件,并作出相应的处理。
格式:
find pathname -options [-print -exec -ok ...]
参数:
pathname:命令所查找的目录路径
-print:将匹配的文件输出到标准输出
-exec:对匹配的文件执行该参数所给出的shell命令,
格式为:
'command' { } ; ]
注意{ }和;之间的空格,由于各系统对;的解释不同,需要在;前加\,
示例:
find . -type f -exec ls -l {} ;
-ok:同-exec,只是在执行命令前要求用户确认
选项:
-name:按照文件名查找
-user: 按照文件属主来查找文件。
-group:按照文件所属的组来查找文件。
-mtime -n +n: 按照文件的更改时间来查找文件, - n表示文件更改时间距现在n天以内,+ n表示文件更改时间距现在n天以前
-nogroup: 查找无有效所属组的文件,即该文件所属的组在/etc/groups中不存在。
-nouser:查找无有效属主的文件,即该文件的属主在/etc/passwd中不存在。
-newer file1 ! file2:查找更改时间比文件file1新但比文件file2旧的文件。
-type 查找某一类型的文件,诸如:
b - 块设备文件。
d - 目录。
c - 字符设备文件。
p - 管道文件。
l - 符号链接文件。
f - 普通文件。
-size n[c]: 查找文件长度为n块的文件,带有c时表示文件长度以字节计。
-depth:在查找文件时,首先查找当前目录中的文件,然后再在其子目录中查找。
-fstype:查找位于某一类型文件系统中的文件,这些文件系统类型通常可以在配置文件/etc/fstab中找到,该配置文件中包含了本系统中有关文件系统的信息。
-mount:在查找文件时不跨越文件系统mount点。
-follow:如果find命令遇到符号链接文件,就跟踪至链接所指向的文件。
-cpio:对匹配的文件使用cpio命令,将这些文件备份到磁带设备中。
-amin n 查找系统中最后N分钟访问的文件
-atime n 查找系统中最后n*24小时访问的文件
-cmin n 查找系统中最后N分钟被改变文件状态的文件
-ctime n 查找系统中最后n*24小时被改变文件状态的文件
-mmin n 查找系统中最后N分钟被改变文件数据的文件
-mtime n 查找系统中最后n*24小时被改变文件数据的文件
13.xargs
由于很多命令不支持|管道来传递参数,xargs可以从stdin读取数据并进行分割,给后面的命令作为参数。
管道负责把前一条命令的标准输出变成后一条命令的标准输入,xargs负责将标准输入变成c
- 在使用管道过程中,如果前一条命令产生的输出过多,会导致后一条命令参数过长而导致溢出,xargs可以解决这个问题。
- 在有些系统中,使用-exec选项会为处理每一个匹配到的文件而发起一个相应的进程,并非将匹配到的文件全部作为参数一次执行;xargs可以解决这个问题
- xargs的分割方式可以通过xargs命令的选项和一些环境变量进行设置
- -i选项可以使得xargs默认的前面输出用{}代替
示例:
find . -type f -print | xargs file
find / -name "core" -print | xargs echo "" >/tmp/core.log
find . -perm -7 -print | xargs chmod o-w
find . -type f -print | xargs grep "hostname"
find . -name "*.log" | xargs -i mv {} test4
14.系统路径
FHS(Filesystem Hierarchy Standard)是Linux中文件系统结构的标准,用于统一不同发行版的文件系统结构。
FHS按照2个维度对目录进行分类:是否可变和是否可共享
按照是否可变进行分类:
可变的:/var/*,主要保存用户产生的数据(例如邮件,新闻组等)和程序运行时的锁等(/var/lock,/var/run)
不可变的:/etc,/usr,/opt,/boot:安装完成后不会频繁变化的部分,包括可执行文件,配置信息等
按照是否可共享分类:
可共享:/usr,/opt,/var/mail,其它机器可以使用的数据L如可执行程序二进制,邮件等
不共享:/etc,/boot,其它机器无法使用的数据,如配置信息,启动用的内核等
/ :系统根路径,包含/bin,/boot,/lib,/sbin,/etc,/dev等,直接出现在根这些路径都是和启动直接相关的,需要放在根下
/bin :重要的可执行,用于启动过程和单用户模式下
/boot :包含kernel文件和grub
/dev :设备文件
/etc :各种配置文件,各种服务的启动脚本
/home :用户的home路径的根
/lib :共享库(主要用于/bin和/sbin),以及在/lib/moudles下的内核模块
/media:挂载可移除设备
/mnt :临时挂载
/opt :安装第三方包的,就是不包括在发新版中的包,也可以放在/usr/local中
/root :root用户的Home目录
/proc :临时文件系统,进程信息
/sys :临时文件系统,内核信息
/usr :不是user的意思,是Unix Software Resource的缩写,用于存储软件资源,通常是发行版锁带的软件,存在子目录/usr/bin,/usr/sbin,/usr/lib等
/usr/src:存放源码的地方,例如内核源码放在/usr/src/linux
/usr/local:与/usr结构类似,存储用户安装的软件资源,存在子目录/usr/local/bin,/usr/local/sbin,/usr/local/lib等
15.文件类型
-:普通文件
d:目录文件
c:字符设备
b:块设备
s:socket文件
l:软连接
p:管道或者fifo
16.chmod
-R:遍历子目录
17.tar
linux中需要区分打包和压缩,tar只提供打包,压缩功能由其它程序提供。-c,-x,-t分别是压缩解压和显示,可以三选一,-v用于显示详情,可选,-f用于指定文件名
-c 建立新的压缩文件
-x 从压缩的文件中提取文件
-t 显示压缩文件的内容
-v 显示操作过程
-f 指定压缩文件
-z 支持gzip解压文件
-j 支持bzip2解压文件
-Z 支持compress解压文件
常见后缀的处理方式:
.tar |
解包:tar xvf FileName.tar |
.gz |
解压1:gunzip FileName.gz |
.bz2 |
解压1:bzip2 -d FileName.bz2 |
.bz |
解压1:bzip2 -d FileName.bz |
.Z |
解压:uncompress FileName.Z |
.zip |
解压:unzip FileName.zip |
.rar |
解压:rar x FileName.rar |
.tar.gz/ .tgz |
解压:tar zxvf FileName.tar.gz |
.tar.bz2 |
解压:tar jxvf FileName.tar.bz2 |
.tar.bz |
解压:tar jxvf FileName.tar.bz |
.tar.Z |
解压:tar Zxvf FileName.tar.Z |
18./etc/group
Linux中一个用户可以属于多个组,每个组也可以包含多个用户。/etc/group记录了系统中所有的组以及各组的成员。
格式如下:
组名:口令:组标识号:组内用户列表
19.diff
diff用于比较文件或者目录,用diff比较文本文件的结果可以用于补丁。采用patch命令,可以对文件进行打补丁。
20.grep
grep命令用于文本搜索,能使用正则表达式搜索,并打印匹配行。
格式:
grep [option] pattern [file]
option是各种搜索选项
pattern是正则表达式
file是被搜索的文件,如果省略,则从标准输入读取
返回值:
0:找到匹配
1:未找到匹配
2:文件不存在
选项:
-c:对匹配的行计数
-f:从规则文件中读取pattern,规则文件的每一行代表一个pattern,支持多个规则
-i:忽略大小写
-n:显示匹配行的行号
-v:查找不匹配的行
匹配规则:
^:锚定行的开始:
- '^grep'匹配所有以grep开头的行
$:锚定行的结束:
- 'grep$'匹配所有以grep结尾的行
. :匹配一个非换行符的字符:
- 'gr.p'匹配gr后接一个任意字符,然后是p
* :匹配零个或多个先前字符:
- '*grep'匹配所有一个或多个空格后紧跟grep的行
- ’ab*cd’匹配以a开始cd结束中间包含0个或者多个b的字符串,如acd,abcd,abbacy,abbac
[]:匹配一个指定范围内的字符
- '[Gg]rep'匹配Grep和grep
- '[^A-FH-Z]rep'匹配不包含A-R和T-Z的一个字母开头,紧跟rep的行
<:锚定单词的开始
- '<grep'匹配包含以grep开头的单词的行
>:锚定单词的结束
- 'grep>'匹配包含以grep结尾的单词的行
x{m}:重复字符x,m次
- '0{5}'匹配包含5个0的行
x{m,}:重复字符x,至少m次
- 'o{5,}'匹配至少有5个o的行
x{m,n}:重复字符x,至少m次,不多于n次
- 'o{5,10}'匹配5--10个o的行
w:匹配文字和数字字符,也就是[A-Za-z0-9]
- 'Gw*p'匹配以G后跟零个或多个文字或数字字符,然后是p
W:w的反置形式,匹配一个或多个非单词字符
:单词锁定符
- 'grep'只匹配grep。
用于统计行数,字符数,单词数
-c:统计字节数
-l:统计行数
-m:统计字符数
-w:统计字数
22.ps
关于 ps -aux 和 ps aux的区别
ps的命令参数格式支持unix风格和BSD风格,unix风格的参数以’-‘开始,bsd风格参数开始没有’-‘。unix风格参数中-u表示指定用户,严格的说,ps -aux表示显示用户名为x的全部进程,如果用户x不存在则应当报错。但是在实现过程中,为了兼容老的脚本,ps将ps -aux理解为ps aux,按照bsd风格处理。
ps命令不加参数显示的是哪些进程
需要满足2个条件:
1.进程的用户为当前调用用户
2.进程关联的终端为当前调用者的终端
选项:
a 去除bsd风格中只显示当前用户进程的限制。
-A,-e 选中所有进程
-f 显示更多的附加列:UID,PPID,STIME等
-F 在-f的基础上增加扩展的附加列:SZ,RSS,PSR
23.kill
kill命令可以向指定进程发送信号,如果未指定将发送信号SIGTERM(15)
格式:
kill[选项][进程号]
选项:
-l 列出所有信号
-9 发送SIGKILL给进程,强制终止进程。kill命令可以带信号号码选项
可以用于终止进程的信号:
HUP 1 终端断线
INT 2 中断(同 Ctrl + C)
QUIT 3 退出(同 Ctrl + )
TERM 15 终止
KILL 9 强制终止
CONT 18 继续(与STOP相反, fg/bg命令)
STOP 19 暂停(同 Ctrl + Z)
24.vmstat
显示内存管理系统的状态.
25.iostat
显示io设备的状态
26.watch
反复重复执行一个命令,用于监视命令执行结果
格式:
watch [选项][命令]
27.at
单次的计划任务,用于在指定时间执行一条命令,不支持重复执行,需要atd服务运行。
28.crontab
可重复执行的计划任务,用于周期性的执行某种任务。需要crond服务运行
可重复执行的计划任务,用于周期性的执行某种任务。需要crond服务运行
29.lsof
显示系统中已经打开的文件
格式:
lsof [选项][文件]
支持的文件类型:
- 普通文件
- 目录
- 网络文件系统的文件
- 字符或设备文件
- (函数)共享库
- 管道,命名管道
- 符号链接
- 网络文件(例如:NFS file、网络socket,unix域名socket)
- 其它类型
选项:
-c:指定进程名
-p:指定pid
-u:指定用户uid
30.ifconfig
网络设备管理
格式:
ifconfig [网络设备] [选项]
选项:
up:启动设备
down:关闭设备
-promisc:混杂模式控制
-a:显示全部接口信息
-s:显示各个接口的统计信息
31.route
操作或者查看系统路由表。
格式:
route [-f] [-p] [Command] [Destination] [mask Netmask] [Gateway] [metric Metric]] [if Interface]
路由表中的项目:
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.85.2 0.0.0.0 UG 100 0 0 ens33
169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 ens33
192.168.85.0 0.0.0.0 255.255.255.0 U 100 0 0 ens33
Destination:目标地址或者网段
Genmask:目标网段的子网掩码,0.0.0.0表示目标地址任意IP,255.255.255.255表示目标地址只能是Destination指定的IP
Iface:转发的物理端口
Gateway:转发到的目标主机,只有在Flags中带有G时有效
Flags:标志。U表示Up,意思是该路由规则启用。G表示Gateway,代表网关是路由器
32.ping
确定网络和各外部主机的状态;跟踪和隔离硬件和软件问题;测试、评估和管理网络。
选项:
-f 极限检测。大量且快速地送网络封包给一台机器,看它的回应。
-r 忽略普通的Routing Table,直接将数据包送到远端主机上。通常是查看本机的网络接口是否有问题。
-i 指定测试间隔,秒为单位,默认一秒
-I 网络界面,指定测试接口
33.netstat
用于显示与IP、TCP、UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况。
选项:
-a,–all:显示所有连线中的Socket。
-A:指定网络类型 inet或unix
-l:显示监听中的socket
-t,-tcp:显示TCP连接
-u,-udp:显示UDP连接
-p:显示正在使用接口的程序名称
-n:显示ip地址,而不是名称
-i:显示网络接口统计页面
-r:显示路由表页面
-s:显示网络统计页面
-g:显示组播接口界面
34.ss
用来获取socket统计信息,类似netstat,但是信息更详细,速度更快。
选项:
-a 显示所有套接字
-l 显示监听状态的套接字
-e 显示详细的套接字信息
-p 显示使用套接字的进程
-i 显示 TCP内部信息
-s 显示套接字使用概况
-4 仅显示IPv4的套接字
-6 仅显示IPv6的套接字
-t 仅显示 TCP套接
-u 仅显示 UCP套接字