Linux常用指令

目录

awk

chmod

find

hostname

ll&ls

md5sum

stat

touch

yum


 

awk

awk是行处理器:相比屏幕处理的优点是在处理庞大的文件时不会出现内存溢出,或者处理缓慢,通常用来格式化文本信息。

awk处理过程:依次对每一行进行处理,然后进行输出。

awk命令形式:awk [ -F | -f | -v ]  ‘BEGIN{} // {command1;command2} END{}’ file

  • [ -F | -f | -v ]:-F,指定行处理器分隔符,-f调用脚本,-v定义变量,设置FS分隔符
  • ‘ ’:引用代码块
  • BEGIN:初始化代码块,在对每一行进行处理之前,初始化代码,主要是引用全局变量,设置分隔符。
  • //:匹配代码块,可以是字符串或者正则表达式。
  • {}:命令代码块,可以包含一条或者多条命令。
  • ;:多条命令使用分号分割。
  • END:结尾代码块,在对每一行代码处理之后,在执行的再执行的代码块,主要是进行最终计算,或者输出结尾摘要信息。

awk内置变量

  • $n:当前记录的第n个字段,比如n为1位第一个字段,n为2为第二个字段。
  • $0:这个变量包含执行过程中当前行的文本内容。
  • ARGC:命令行参数的数目。
  • ARGIND : 命令行中当前文件的位置(从0开始算)。
  • ARGV : 包含命令行参数的数组。
  • CONVFMT : 数字转换格式(默认值为%.6g)。
  • ENVIRON : 环境变量关联数组。
  • ERRNO : 最后一个系统错误的描述。
  • FIELDWIDTHS : 字段宽度列表(用空格键分隔)。
  • FILENAME : 当前输入文件的名。
  • NR : 表示记录数,在执行过程中对应于当前的行号
  • FNR : 同NR :,但相对于当前文件。
  • FS : 字段分隔符(默认是任何空格)。
  • IGNORECASE : 如果为真,则进行忽略大小写的匹配。
  • NF : 表示字段数,在执行过程中对应于当前的字段数。 print $NF答应一行中最后一个字段。
  • OFMT : 数字的输出格式(默认值是%.6g)。
  • OFS : 输出字段分隔符(默认值是一个空格)。
  • ORS : 输出记录分隔符(默认值是一个换行符)。
  • RS : 记录分隔符(默认是一个换行符)。
  • RSTART : 由match函数所匹配的字符串的第一个位置。
  • RLENGTH : 由match函数所匹配的字符串的长度。
  • SUBSEP : 数组下标分隔符(默认值是34)。

命令示例

  • awk '{print}'  /etc/passwd   ==   awk '{print $0}'  /etc/passwd
  • awk '{print " "}' /etc/passwd   //不输出passwd的内容,而是输出相同个数的空行,解释了awk是一行一行处理文本
  • awk '{print "a"}'   /etc/passwd   //输出相同个数的a行,一行只有一个a字母
  • awk -F":" '{print $1}'  /etc/passwd  //-F指定分隔符输出分割后的数据
  • awk -F: '{print $1; print $2}'   /etc/passwd   //将每一行的前二个字段,分行输出,进一步理解一行一行处理文本
  • awk  -F: '{print $1,$3,$6}' OFS="\t" /etc/passwd        //输出字段1,3,6,以制表符作为分隔符
  • awk -F":" '{print $1 $3}'  /etc/passwd     //$1与$3相连输出,不分隔
  • awk -F":" '{print $1,$3}'  /etc/passwd     //多了一个逗号,$1与$3使用空格分隔
  • awk -F":" '{print $1 " " $3}'  /etc/passwd     //$1与$3之间手动添加空格分隔
  • awk -F":" '{print "Username:" $1 "\t\t Uid:" $3 }' /etc/passwd       //自定义输出
  • awk -F: '{print NF}' /etc/passwd     //显示每行有多少字段
  • awk -F: '{print $NF}' /etc/passwd      //将每行第NF个字段的值打印出来
  • awk -F: 'NF==4 {print }' /etc/passwd    //显示只有4个字段的行
  • awk -F: 'NF>2{print $0}' /etc/passwd     //显示每行字段数量大于2的行
  • awk '{print NR,$0}' /etc/passwd      //输出每行的行号
  • awk -F: '{print NR,NF,$NF,"\t",$0}' /etc/passwd      //依次打印行号,字段数,最后字段值,制表符,每行内容
  • awk -F: 'NR==5{print}'  /etc/passwd     //显示第5行
  • awk -F: 'NR==5 || NR==6{print}'  /etc/passwd       //显示第5行和第6行
  • route -n|awk 'NR!=1{print}'                                       //不显示第一行

//匹配代码块

//纯字符匹配   !//纯字符不匹配   ~//字段值匹配    !~//字段值不匹配   ~/a1|a2/字段值匹配a1或a2   

  • awk '/mysql/' /etc/passwd
  • awk '/mysql/{print }' /etc/passwd
  • awk '/mysql/{print $0}' /etc/passwd                   //三条指令结果一样
  • awk '!/mysql/{print $0}' /etc/passwd                  //输出不匹配mysql的行
  • awk '/[2][7][7]*/{print $0}' /etc/passwd               //匹配包含27为数字开头的行,如27,277,2777...
  • awk -F: '$1~/mail/{print $1}' /etc/passwd           //$1匹配指定内容才显示
  • awk -F: '{if($1~/mail/) print $1}' /etc/passwd     //与上面相同
  • awk -F: '$1!~/mail/{print $1}' /etc/passwd          //不匹配
  • awk -F: '$1!~/mail|mysql/{print $1}' /etc/passwd    
  • awk -F: 'BEGIN{A=0;B=0} {if($3>100) {A++; print "large"} else {B++; print "small"}} END{print A,"\t",B}' /etc/passwd 

                                                                                                                      //ID大于100,A加1,否则B加1

  • awk -F: 'BEGIN{i=1} {while(i<NF) print NF,$i,i++}' /etc/passwd 

  • awk -F'[:#/]' '{print NF}' helloworld.sh          //指定三个分隔符,并输出每行字段数

参考博客:

https://www.cnblogs.com/xudong-bupt/p/3721210.html

https://www.cnblogs.com/quincyhu/p/5884390.html

chmod

改变一个或多个文件的存取模式

语法:chmod [-cfvR] [--help] [--version] mode file...

-cfvR:

  • -c:若文件权限确实已经更改,才显示其更改动作
  • -f:若文件权限无法被更改,也不要显示错误信息
  • -v:显示权限变更的详细 资料
  • -R:对目前目录下的所有文件与子目录进行相同的权限变更(即以递回的方式逐个变更)

mode:权限设定字符串

[ugoa...][[+-=][rwxX]...][,...]

  • u:该文件的拥有者
  • g:与该文件的拥有者属于同一个群体者
  • o:表示g其他以外的人
  • a:表示这三者皆是
  • +、-、=:+表示增加权限,-表示取消权限,=表示唯一设定权限
  • r、w:r表示可读取,w表示可写入。
  • x、X:x表示可执行,X 表示只有当该文件是个子目录或者该文件已经被设定过为可执行。

chmod也可以用数字来表示权限:chmod abc file

其中abc各为一个数字分别表示User、Group和Other的权限

r=4、w=2、x=1

chmod a=rwx file 效果等同于 chmod 777 file

chmod ug=rwx,o=x file 效果等同于 chmod 771 file

实例:

  • chmod u+x file            给file的属主增加执行权限
  • chmod 751 file            给file的属主分配读、写、执行(7)的权限,给file的所在组分配读、执行(5)的权限,给其他用户分配执行(1)的权限
  • chmod -R u+r directory      递归地给directory目录下所有文件和子目录的属主分配读的权限

find

用于在指定目录下根据条件查找文件,若不指定条件,列出当前文件下的所有文件。

语法:find path -option [ -exec -ok command ] {} \;

常用-option:

  • -name:按照文件名匹配,文件名区分大小写。
  • -iname:按照文件名匹配,文件名不区分大小写。
  • -amin:在过去n分钟被读取过的文件。
  • -perm:按执行权限来查找
  • -atime n : 在过去n天内被读取过的文件。
  • -cmin n : 在过去 n 分钟内被修改过。
  • -ipath p, -path p : 路径名称符合 p 的文件,ipath 会忽略大小写。
  • -type c : 文件类型是 c 的文件。
  • -type c 含义:d: 目录,c: 字型装置文件,b: 区块装置文件,p: 具名贮列,f: 一般文件,l: 符号连结,s: socket

实例:

  • find . -name "*.txt"  查找当前目录及其子目录下后缀为.txt的文件
  • find . -type f  将当前目录和子目录下的一般文件列出
  • find . -cmin -1000  将当前目录及其子目录下的前1000分钟被修改过的文件列出
  • find / -type f -mtime +7 -ok rm {} \; 查找/var/log目录中更改时间在7日以前的普通文件,并在删除之前询问它们
  • find . -type f -perm 644 查找前目录中文件属主具有读、写权限,并且文件所属组的用户和其他用户具有读权限的文件:

 

 

hostname

获取当前主机名

ll&ls

ll不是命令,是ls -l的别名。

ls用于列出目录(及其子目录)下的文件及其信息。

语法:ls [-alrtAFR] [name...]

-option:

  • -a:显示所有文件及目录 (ls内定将文件名或目录名称开头为"."的视为隐藏档,不会列出)
  • -l:-l 除文件名称外,亦将文件型态、权限、拥有者、文件大小等资讯详细列出
  • -r:-r 将文件以相反次序显示(原定依英文字母次序)
  • -t:-t 将文件依建立时间之先后次序列出
  • -A:-A 同 -a ,但不列出 "." (目前目录) 及 ".." (父目录)
  • -F:-F 在列出的文件名称后加一符号;例如可执行档则加 "*", 目录则加 "/"
  • -R:-R 若目录下有文件,则以下之文件亦皆依序列出

实例:

  • ls -ltr s*      列出以s开头的文件,越新的排越后面
  • ls -AF         列出目前工作目录下所有文件及目录;目录于名称后加‘/’, 可执行文档于名称后加‘*’

md5sum

功能:

  • 通常用于校验数据在网络传输或转存过程中数据的完整性,用户生成和校验文件的md5值。
  • 密码加密。
  • 其会逐位校验文件的内容,与文件名无关,小概率不同文件生成相同的md5值

参数:

  • -b:以二进制模式读入文件内容
  • -t:以文本模式读入文件内容
  • -c:根据已生成的md5值,对现存文件校验
  • --status:校验完成后不生成错误或正确的提示信息,可以通过命令返回值来判断

示例:

stat

列出当前文件的详细信息

语法:stat -option path

-option:

  • -t:显示文件系统的信息
  • -f:以简洁的方式输出文件信息

touch

两个功能:

  • 创建新的文件
  • 更新指定文件的时间标签(访问时间、修改时间)

选项:

  • -a:或--time=atime或--time=access或--time=use 只更改存取时间;

  • -c:或--no-create 不建立任何文件;

  • -d:<时间日期> 使用指定的日期时间,而非现在的时间;

  • -f:此参数将忽略不予处理,仅负责解决BSD版本touch指令的兼容性问题;

  • -m:或--time=mtime或--time=modify 只更该变动时间;

  • -r:<参考文件或目录> 把指定文件或目录的日期时间,统统设成和参考文件或目录的日期时间相同;

  • -t:<日期时间> 使用指定的日期时间,而非现在的时间;

  • --help:在线帮助;

  • --version:显示版本信息。

实例:

  • touch file    #若文件不存,创建文件,若文件(或文件夹)存在修改文件(文件夹)的系统时间
  • touch /etc/nologin    #系统维护期间禁止用户登录
  • touch -c -t 201905061050.30 file    #设定文件的时间,不存在文件不创建文件
  • touch -r /etc/passwd file    #将后者的时间戳设为和前面的时间一样
  • touch -d "2019/05/06" file    #将file的时间戳统一修改为指定时间
  • touch -d "2 days ago" file    #这样也可以修改时间

yum

yum(全称 Yellow dogUpdate,Modified)是一个在FedoraRedHat以及CentOS中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,一次性安装所有的软件包。

yum提供了安装、查找和删除某一个,一组甚至全部软件包的命令。

基本命令:yum -[option]  [command] [package]

option:是可选的,包括 -h:帮助 、-y:安装过程提示全部为yes、-q:不显示安装过程等等。

command:所要进行的操作命令。

package:所要操作的对象(工具包)。

yum的一切信息都存储在 /etc/yum.reops.d 目录下。

yum的缓存目录为 /var/cache/yum 下。

命令示例:

清空缓存列表

  • yum clean packages :清空缓存目录下的软件包,清除的是/var/cache/yum下的缓存
  • yum clean headers:清除缓存目录下的headers
  • yum clean oldheaders:清除缓存目录下旧的headers
  • yum clean||yum clean all :(= yum clean packages; yum clean oldheaders) 清除缓存目录下的软件包及旧的headers

yum显示信息:

  • yum list:显示所有已经安装和可以安装的程序包
  • yum list [package]:显示安装包的信息,yum list rpm :显示rpm详细信息,是否安装,是否可更新等。
  • yum info [package]:显示安装包的详细信息,不加package显示所有安装包信息。

yum安装:

  • yum -y install [package]:安装rpm包,如果不加-y会提示是否安装,不加package则安装所有rpm包及其依赖。

yum删除:

  • yum removed [package]:删除安装包,也就是卸载工具包。
  • yum deplist [package]:查看安装包的依赖情况。

yum包的升级:

  • yum check-update [package]:检查程序包是否可更新,不添加package则检查所有程序更新状况。
  • yum update [package] :更新程序包,若不加package则更新所有安装包。

参考博客:https://blog.csdn.net/shuaigexiaobo/article/details/79875730

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值