shell 常用客户端命令合集(万字总结)


lunix支持的命令有很多,这里分类整理了一些常用,可以满足日常工作的命令解释合集。如果想要了解更多,可以参考linux命令大全

一,文件夹操作

1. 创建目录 mkdir

  1. mkdir xxx:在当前目录下创建子目录xxx
  2. mkdir /x/x/x:创建指定的全路径目录
  3. mkdir -p /x1/x2/x3:级联创建目录,如果在创建目录x3的过程中,发现x1或者是x2不存在,就会自动创建,不会报错

2. 删除目录 rm -rf

  1. rmdir xxx:删除目录xxx
  2. rmdir -p gg/xx :删除目录xx,如果删除之后发现gg变成了空目录,那么gg也会被删除
  3. rm -rf xx/yy:会直接删除xx目录

rm -r 删除之后无法恢复,操作需谨慎

3. 查看目录 cd,ls,stat,pwd

  1. cd ~:进入当前用户的根目录
  2. cd /:进入系统根目录
  3. cd xxx:进入指定目录xxx
  4. cd …/:进入上层目录,…表示上一层的意思,可以多层叠加

  1. ls:显示当前目录下的非隐藏内容
  2. ls -a:显示当前目录下的隐藏(.开头 )+非隐藏内容
  3. ls -l:除了显示文件名称之后,还是显示文件的型态,权限,拥有者等详细信息
  4. ls -t:根据创建时间由后到前显示
  5. ls -A:和ls -a一样,但是不会显示 . 和…
  6. ls -R:多级级联显示,即子目录中的内容也会被显示

  1. stat xxx:会显示出文件夹xxx的详细信息,创建时间,修改时间,大小等等
  2. pwd:显示当前所在目录

4. 修改目录 mv

  1. mv sourceDir destDir:
    如果目标目录destDir存在的话,会将原目录sourceDir 移入到destDir中,作为其子目录
    如果目标目录destDir不存在的话,那么会将sourceDir的目录名修改为destDir

二,文件操作

1. 创建文件 touch,vi

  1. touch fff:创建文件fff,可以是全路径或相对路径,默认创建在当前路径。
    当文件fff不存在的时候,会创建该文件,创建时间也是当前的系统时间。
    当文件fff已经存在的时候,那么就会修改fff的创建时间为当前系统时间
  2. vi fff:如果文件fff不存在,那么可以使用vi或者是vim的方式,然后随便输入一些内容之后,:wq,就可以保存输入的内容,创建一个新文件fff

2. 删除文件 rm

  1. rm fff:使用rm命令可以完全删除指定文件fff

3. 查看文件 cat,head,tail,more

  1. cat xxx: 将指定文件的内容定向到stdout
  2. cat -n xxx:输出的时候从1开始递增对每一行编号并输出
  3. cat -b xxx:编号输出,相较于-n,空白行不输出
  4. cat -s xxx:输出的时候会将连续多行空白行合并为一行
  5. cat -E xxx:输出的时候在每一行的结尾加$
  6. head -n 100 fff:将文件fff的前100行定向到stdout
  7. tail -n 100 fff:将文件fff的最后100行定向到stdout
  8. tailf -f fff:显示文件的最后10行,当有其他进程添加内容到fff的时候,在当前客户端也会输出到stdout,直到执行ctrl+c停止
  9. tail -n +20 fff:输出文件的第20行到最后一行
  10. tail -c 10 fff:输出最后10个字符
  11. more file1:类似于cat,以分页的方式显示file1的内容 进入more命令之后:
  1. enter:向下前进n行,默认是1行
  2. ctrl+F(空格):前进一屏
  3. ctrl+B:向上翻滚一屏
  4. =:在左下角输出当前行号
  5. :f:在左下角输出文件名和当前行号
  6. v:进入vi编辑器
  7. q:退出more

4. 修改文件 mv cp

  1. mv file1 file2:将源文件名 file1 改为目标文件名 file2

  2. mv file1 dir2:将文件 file1 移动到目标目录 dir2中

  3. cp file1 file2:将file1复制到file2 如果file2不存在,那么就创建文件file2,复制file1的内容到file2
    如果file2已经存在,会提醒是否要覆盖file2,可以选择Y/N

  4. cp -b file1 fil:2:-b参数的作用在于在复制的时候不仅会复制文件内容,而且还会复制文件的时间和访问权限

  5. cp -l file1 file2:-l参数的作用在于不是复制文件,而是生成file1的一个链接文件。
    当stat file2的时候,显示的属性就是file1的属性。
    当对file1或file2 中的一个做出修改的时候,另外一个也会同步修改

  6. cp f1 d2:将文件f1复制到目录d2中


三:查找

1. find

在指定的目录下进行查找
语法格式为:find path expression
  find : find命令关键字
  path:find命令的执行路径,注意,这里的path是查找开始的根目录,即从path向下一直查找,直到底
  express:find命令的选项

为了方便参数的以及,下面的()中的内容是对命令的英文全称
支持的express有:

  1. -amin n:在过去的n分钟被读取过的文件,(access min)
  2. -anewer file1:比文件file1更晚读取过的文件,(access newer)
  3. -atime n:在过去的n天内被读取过的文件
  4. -cmin n:在过去的n分钟内被修改过的文件,(change min)
  5. -cnewer file1:比文件file1更晚修改过的文件,(change newer)
  6. -ctime n:在过去的n天内被修改过的文件
  7. -ipath p, -path p :路径名称符合p的路径,ipath 会忽略大小写
  8. -iname name, -name name : 文件名称符合 name 的文件。iname 会忽略大小写
  9. -size n : 大小 是 n 单位的文件,b 代表 512 位元组的区块,c 表示字元数,k 表示 kilo bytes,w 是二个位元组。
  10. -type c : 文件类型是:c 的文件。
    支持的type的取值范围:
d: 目录 		
c: 字型装置文件 		
b: 区块装置文件 		
p: 具名贮列 		
f: 一般文件 	
l: 符号连结 		
s: socket

使用示例:

  1. 在当前目录查找sh结尾的文件
[root@centos7-01 an]# find . -name '*.sh'
./local/mwget/mwget_0.1.0.orig/ltmain.sh
./a.sh
./b.sh
  1. 从当前目录开始查找列出所有的文件
 find . -type f
  1. -anewer的示例
[root@centos7-01 l]# touch a
[root@centos7-01 l]# touch b
[root@centos7-01 l]# find . -anewer b
[root@centos7-01 l]# find . -anewer a
.
./b
[root@centos7-01 l]# 

2. which

which命令会在$path 配置的目录中去进行查找
语法:which [文件…]
所以一般which命令都会用来查看安装指令的绝对路径

例如,查看Python的路径,bash的路径 等等

[root@centos7-01 l]# which python
/usr/bin/python
[root@centos7-01 l]# which bash
/usr/bin/bash
[root@centos7-01 l]# 

3. grep

grep一般用来查找看文件中是否有符合条件的内容
grep

支持的参数:

  1. grep -A n:输出匹配行和之后的n行

  2. grep -b: 在显示符合样式的那一行之前,标示出该行第一个字符的编号

  3. grep -B n:输出匹配行和之前的n行

  4. grep -c:输出符合样式的列数

  5. grep -C n:输出匹配行和之后的n行和之前的n行

  6. grep -e ‘xx’:-e 用来指定正则样式。
    对于不包含特殊字符的样式,不管是否使用-e来指定都可以正确匹配
    但是如果正则样式中包括‘-a’这样的内置参数的时候,那么解析器就会把-a当做参数来处理,而不是正则样式。所以这个时候就需要-e

[root@centos7-01 an]# grep -e '-a' a
-a
[root@centos7-01 an]# grep '-a' a
c^C

  1. grep -E ‘xxx’:指定延伸的正则样式,比如包含或关系的正则。也可以直接使用egrep 指定,可以支持绝大部分正则
[root@centos7-01 an]# grep 'j|a' a
[root@centos7-01 an]# grep -e 'j|a' a
[root@centos7-01 an]# grep -E 'j|a' a
nbdsjkb
-a
bnsjak

  1. grep -f file:当需要使用多个规则样式的时候,可以引用规则文件file
  2. grep -F ‘xxx’:将xxx作为固定字符串进行匹配。即如果xxx中包含正则标识符[,],* 等,不会按正则去解析。
[root@centos7-01 an]# grep '[log.info*ndsak]' a
nbdsjkb
sn,
-a
hd[log.info*ndsak]df
bnsjak
[root@centos7-01 an]# grep -F '[log.info*ndsak]' a
hd[log.info*ndsak]df
[root@centos7-01 an]# 

当然,可以用正则的方式去进行解析,但是,显而易见,grep -F的方式对于我们解析日志是更为方便的

  1. grep -h:当输出样式匹配行的时候,不输出文件名
  2. grep -H:当输出样式匹配行的时候,在每一行的前面先输出文件名,默认是-h
[root@centos7-01 an]# grep -F '[log.info*ndsak]' -h a
hd[log.info*ndsak]df
[root@centos7-01 an]# grep -F '[log.info*ndsak]' -H a
a:hd[log.info*ndsak]df

  1. grep -i:在进行样式匹配的时候,忽略大小写的差异
  2. grep -l:只输出可以匹配到的文件名
  3. grep -L:当对目录进行匹配的时候,只输出匹配不到的文件名
[root@centos7-01 an]# grep -F '[log.info*ndsak]'  -L a*
a.sh
[root@centos7-01 an]# grep -F '[log.info*ndsak]'  -l a*
a

  1. grep -o:当匹配到内容的时候,只输出匹配成功部分,而不是整行
[root@centos7-01 an]# grep -F '[log.info*ndsak]'  -o a
[log.info*ndsak]
[root@centos7-01 an]# grep -F '[log.info*ndsak]'  a
hd[log.info*ndsak]df

  1. grep -r xxx:以递归的方式查找,包括xxx目录,以及该目录下的多级子目录
  2. grep -v ff:显示ff文件中匹配不到的行
  3. grep -V:显示grep 命令的版本信息
  4. grep -w:只显示整行都匹配上的行
[root@centos7-01 an]# grep -F '[log.info*ndsak]' -w  a
[log.info*ndsak]
[root@centos7-01 an]# grep -F '[log.info*ndsak]'  a
hd[log.info*ndsak]df
[log.info*ndsak]

四,磁盘管理

1. du(磁盘空间)

用来显示目录或文件的大小,指代所占用的磁盘空间

支持的参数:

  1. du dir:输出指定目录dir下所有文件的大小
    如果有子目录,会递归输出
    如果没有指定dir,那么默认将dir设置为当前目录
  2. du -b :输出大小的时候,以byte为单位
  3. du -c dir:在输出dir下文件大小的同时,还会输出dir目录的整体大小
  4. du -h:以K,M,G为单位输出大小。如果文件的大于1024b的时候,会以K为单位显示。如果大于1024K的时候,那么就会以M为单位显示
  5. du -H:和-h类似,只不过是以1000为换算单位
  6. du -k:指定输出的单位为K
  7. du -m:指定输出的单位为M
  8. du -s dir:只输出dir目录总计大小
  9. du --exclude=dir:统计大小的时候,忽略dir。dir可以是目录或文件
    10.–max-depth=<目录层数>:统计大小的时候,如果层数大于指定层数,就不显示
[root@centos7-01 an]# du --max-depth=1
51408	./local
0	./g
51456	.

2. df(文件系统)

显示目前Linux系统上文件系统磁盘的使用情况
因为这个命令主要是显示文件系统的使用,所以如果对文件系统不是很了解的可以先看一下linux文件系统,有助于对一些参数的理解
支持的参数

  1. df -a:显示全部的文件系统的使用情况

在这里插入图片描述

对于上图中出现的几列进行一个简单的介绍
1). Filesystem:文件系统名称
2). 1K-blocks:以1k的方式统计的block个数
3). Used:上面统计的1K-blocks中已经使用的block个数
4). Available:上面统计的1K-blocks中当前可用的block个数
5). Use%:使用率
6). Mounted on:挂载点

  1. df --block-size=<区块大小> 以指定的区块大小来显示区块数目,默认是1024

在这里插入图片描述

  1. df -h:以一种最可读的方式来展示可读性,即每一个文件系统的大小都是用K,M,G中的最大表示单位,即大于1024K的时候用M作为单位,大于1024M的时候用G作为单位
  2. df -H:同上-h,决定单位的时候使用1000,而不是1024
  3. df -i, --inodes :显示每一个文件系统 inode 的信息

在这里插入图片描述

1).Filesystem :文件系统名
2).Inodes :该文件系统下inode的数量
3).IUsed : 已经使用的iNode的数量
4).IFree :仍未使用的iNode的数量
5).IUse% :使用比
6).Mounted on: 挂载点

  1. df -t xx:–type=TYPE 只输出指定类型的文件系统的统计值
  2. df -T:–print-type 显示文件系统的类型
  3. df -x xx:–exclude-type=TYPE 不显示指定类型的文件系统的统计值

3. free(内存)

显示可用的内存的使用情况,包括实体内存,虚拟的交换文件内存,共享内存区段,以及系统核心使用的缓冲区等。

支持的参数

  1. free -b:以bytes为单位显示内存使用情况
  2. free -k:以KB为单位显示内存使用情况
  3. free -m:以MB为单位显示内存使用情况
  4. free -h:自动选择合适的单位显示内存使用情况
  5. free -t:显示内存使用总和

在这里插入图片描述

五:进程

1.ps

显示当前进程的状态

支持的参数:

  1. ps -A:列出当前机器所有的进程
  2. ps -au(x):显示进程较为详细的内容

在这里插入图片描述

USER :进程的owner
PID :进程ID
%CPU :进程占用的CPU使用率
%MEM:进程占用的内存使用率
VSZ(Virtual Memory Size):占用虚拟内存大小
RSS (Resident Set Size ):占用的常驻内存大小,包含了完整的在stack和heap中的内存
TTY
STAT:进程的当前状态:

D: 无法中断的休眠状态 (通常 IO 的进程)
R: 正在执行中
S: 休眠状态
T: 暂停执行
Z: 不存在但暂时无法消除,僵尸进程
W: 没有足够的内存分页可分配,/进入内存交换
<: 高优先序的行程
N: 低优先序的行程
L: 有内存页并锁在内存内

START:进程的开始时间
TIME:进程的运行时间
COMMAND:进程执行命令

  1. ps -ef:显示所有进程
    和ps -aux的区别在于输出的格式不同

UID:用户ID(用户名)
PID:进程ID
PPID :父进程ID
C :进程占用CPU的百分比
STIME:时间
TTY:该进程在哪个终端上运行;

若与当前终端无关,则显示?
若为pts/0等,则表示由网络连接主机进程

TIME: 时间
CMD:命令的名称和参数

2. top

实时显示进程的动态
top : 显示进程动态
top -p xxx:显示pid是xxx的进程动态
在这里插入图片描述

PID:进程id
USER:进程owner
PR:优先级
NI:nice值
VIRT:占用虚拟内存

包括进程使用的库、代码、数据等
假如进程申请100m的内存,但实际只使用了10m,那么它会增长100m,而不是实际的使用量

RES:占用常驻内存

进程当前使用的内存大小,但不包括swap out
包含其他进程的共享
如果申请100m的内存,实际使用10m,它只增长10m,与VIRT相反
关于库占用内存的情况,它只统计加载的库文件所占内存大小

SHR:共享内存
S :进程状态
%CPU :cpu使用率
%MEM :内存使用率
TIME+:运行时间
COMMAN:执行命令

六. 其他

1. xargs

  1. 命令之间传递参数的过滤器
  2. 可以将piple或stdin转换为命令行参数,也可以从文件的stdout中读取
  3. 可以把单行或多行文本输入数据进行转换
  4. 默认命令是echo。意味着通过piple传递给xargs的输入会包含换行和空白,在经过xargs之后,换行和空白都会被空格取代

出现的必要性: 因为有些命令不支持管道,所以需要xargs来转一下

支持的参数:

  1. xargs -a file:将file中的内容作为stdin
[root@centos7-01 an]# xargs -a data
a b c d e f g h i j k l m n o p q r s t u v w x y z
  1. -p:每执行一次命令都会询问一次是否执行 因为xargs的默认命令是echo,所以
[root@centos7-01 an]# xargs -a data -p
echo a b c d e f g h i j k l m n o p q r s t u v w x y z ?...y
a b c d e f g h i j k l m n o p q r s t u v w x y z

  1. -d delimi:xargs使用的默认分隔符是回车。解析参数的时候默认分隔符是空格
[root@centos7-01 an]# xargs -a data1 -d \#
1 2 3

[root@centos7-01 an]# xargs -a data1 
1#2#3

可以看到,但使用特殊符号作为分隔符的时候,需要进行转义

  1. -c n:执行一次命令使用的参数个数 对于上面3的例子中,如果正确的使用#作为分隔符的话,那么解析到参数就是3个。 在默认情况下,是所有的参数执行一次命令
[root@centos7-01 an]# xargs -a data1 -d \#
1 2 3

[root@centos7-01 an]# xargs -a data1 -d \# -n 2
1 2
3


  1. -L n:读取n行执行一次命令
[root@centos7-01 an]# cat data
a b c d e f g
h i j k l m n
o p q
r s t
u v w x y z
[root@centos7-01 an]# xargs -a data -L 2
a b c d e f g h i j k l m n
o p q r s t
u v w x y z

  1. -t :指定需要执行的命令,默认是echo
[root@centos7-01 an]# xargs -a data -L 2
a b c d e f g h i j k l m n
o p q r s t
u v w x y z
[root@centos7-01 an]# xargs -a data -L 2 -t
echo a b c d e f g h i j k l m n 
a b c d e f g h i j k l m n
echo o p q r s t 
o p q r s t
echo u v w x y z 
u v w x y z

[root@centos7-01 an]# xargs -a data1 -d \# -t touch
touch 1 2 3
 
[root@centos7-01 an]# ls
1  2  3?  
  1. -I :自定义参数传递
[root@centos7-01 g]# cat data | xargs -t -I % sh -c 'touch %;ls  %'
sh -c touch f1 f2 f4;ls  f1 f2 f4 
f1  f2	f4

如上:
将data 的内容作为xargs的stdin;
使用-t指定之后要执行的命令;
使用-I指定执行命令找那个参数的传递形式,因为这里没有指定-n,所以是将接收到的所有stdin作为参数一次性执行。从打印的执行命令中也可以看得出来;
sh -c将后面’'中的内容作为完整执行命令
touch %,使用stdin中的内容来替换%,所以这里是touch f1 f2 f4
ls %,使用stdin中的内容来替换%,所以这里是ls f1 f2 f4

-t的命令也可以放在脚本中执行

[root@centos7-01 g]# cat a.sh
#!/bin/bash

echo "this is a $1!!!$2"

[root@centos7-01 g]# cat data | xargs -I % sh a.sh yu %
this is a yu!!!f1 f2 f4
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值