linux部分常用命令的扩展使用

一、grep命令

       Linux grep 命令用于过滤文本显示
       grep可以根据特定的字符串,对指定文件的每一行进行搜索,如果找到了这个字符串,就将含有这些内容的行输出。

用法示例         ^行首   $行尾   

要求 用法
查找文件里有字符h的字符串 grep h 文件名
匹配整个单词 grep -w 单词 文件名
匹配以q开始的行 grep ^q 文件名
匹配以q结束的行 grep q$ 文件名
匹配oo前面不是f或者g的字符串 grep [^gf]oo 文件名
匹配以#开头的行 grep ^# 文件名
匹配空白行 grep ^$
如果要明确搜索子目录 greo -r h ./*
忽略子目录 grep -d skip h ./*
查询多文件时只输出包含匹配字符的文件名 -l
搜索时忽略大小写 grep -i -o -v
搜索时显示没有匹配到的行 grep -v
搜索时显示匹配到的那一行以及下2行 grep -A 2
搜索时显示匹配到的那一行以及上2行 grep -B 2
搜索时显示匹配到的那一行以及上下2行 grep -C 2

练习

#将/etc/passwd中第一个字段(用户名)截取到user文件中
cut -d:-f 1 /etc/passwd > user

#将3,4字段分别截取出来写入文件UID和文件GID但是要使这两个文件中的信息是以数值由大到小的形式显示
cut -d:-f 3 /etc/passwd | sort -nr > UID
cut -d:-f 4 /etc/passwd | sort -nr > GID

#截取当前日期的年月日显示在文件A.txt中
data | cut -d "" -f 1-3 |tee A.txt

#统计/etc/passwd 一共有多少行但不显示后面的文件名
echo dfhdjflhsfdlgkjhk adjfkhdlfjkhl 'wc -l /etc/passwd | cut -d "" -f 1'

二、find命令

       linux find命令用来在指定目录下查找文件
       任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则 find 命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。
       find [path] [options] [expression] find / -name haha

    1、与时间有关的参数
参数 功能
-mtime 意义为在n天之前的一天之内被更改过的文件;-mtime 4,是指前4~5那一天的文件
-mtime -n 列出在n天之内(包含n天本身)被更改过的文件名,-mtime -4,小于等于4天内的文件名
-mtime +n 列出在n天之前(不包含n天本身)被更改过的文件名,-mtime +4,大于等于5天前的文件名
find /-mtime 0 #0代表目前的时间,所以从现在开始到24小时前有改动过内容的文件都会被列出来
find /etc/ -newer /etc/passwd 寻找/etc/下面的文件,如果文件日期比/etc/passwd新就列出
    2、与用户或者用户组名有关的参数
参数 功能
-uid n n为数字,这个数字是用户的账号ID,即UID
-gid n n为数字,这个数字是用户组的账号ID,即GID
-user name 根据文件拥有者寻找文件
-group name 根据文件所属组寻找文件
-nouser 寻找文件的所有者不存在/etc/passwd的人
-nogroup 寻找文件的所有用户组不存在于/etc/group(当你自行安装软件时,有可能该软件的属性当中并没有文件所有者)
    3、与文件权限及名称有关的参数
参数 功能
-name filename 查找文件名为filename的文件,支持通配符*和?
-size [±] SIZE 查找比SIZE还要大(+)或者小(-)的文件。这个SIZE的规格有:c代表字节,k代表1024字节,-size +50k表示要找比50kB还要大的文件
-type TYPE 根据文件类型查找文件,一般正规文件f,设备文件c,b,目录文件d,链接文件l,socket(s),FIFO(p)
-perm -mode 根据文件权限寻找文件。-perm -0744,当一个文件权限为4755时,也会被列出来
-perm +mode 查找文件权限“包含任一mode的权限”的文件。-perm +755,当一个文件权限为-rw-------时也会被列出来,因为它有rw的属性存在
find /bin /sbin -perm +6000 找出在/bin /sbin这两个目录下具有SUID或SGID的文件
    4、其它可执行的操作
参数 功能
-exec command command为其他命令,-exec后面可再接其他的命令来处理查找到的结果
-print 将结果打印到屏幕上,这个操作是默认操作
find / -perm +700 -exec ls -l {} ; {}表示"由find找到的内容,find的结果会被放置在{}位置中";-exec一直到";"是关键字,代表额外命令的开始(-exec)到结束(;),在这中间的就是find命令内的额外命令。额外的命令不支持别名

三、文件的压缩与解压缩

      常见的压缩文件扩展名

参数 功能
*.gz gzip程序压缩的文件
*.bz2 bzip2程序压缩的文件
*.tar tar程序打包的数据,并没有经过压缩
*.tar.gz tar程序打包的文件,其中经过gzip的压缩
*.tar.bz2 tar程序打包的文件,其中经过bip2的压缩

      linux上常见的压缩命令就是gzip与bzip2
         1、gzip
            压缩文件:gzip 文件名(源文件不存在)
                             gzip -c 文件名1 > 文件名1.gz(保留源文件)
            解压文件:gzip -d 文件名.gz (不保留源文件)
                             gunzip 文件名.gz
                             gzip -cd 文件名2.gz > 文件名2(保留源文件)
            查看压缩过的文本文件内容:zcat 文件名.gz
         2、bzip2
            压缩文件:bzip2 文件名
                             bzip2 -c 文件名1 >文件名1.bz2(保留源文件)
            解压文件:bzip2 -d 文件名.bz2(不保留源文件)
                             bunzip2 文件名.bz2
                             bzip2 -cd 文件名2.bz2 > 文件名2(保留源文件)
            查看压缩过的文件内容:bzcat 文件名.bz2
         3、tar [主选项+辅选项] 文件或目录 (文件的归档即打包文件)
            主选项:只能出现一个主选项
                    c— create 创建一个新归档文件(打包文件)
                    x— 从归档文件中提取文件出来
                    t— 列出归档文件的内容,查看已经打包了哪些文件,重点在查看文件名
            辅选项
                   z— 通过gzip的支持进行压缩/解压缩,一般格式为*.tar.gz
                   j— 通过bzip的支持进行压缩/解压缩,一般格式为*.tar.bz2
                   J— 通过xz的支持进行压缩/解压缩,一般格式为*.tar.xz
                   v— 归档或解包过程中显示被打包的文件
                   C— 这个参数用于在解压缩时,若要在特定目录解压缩,可以使用这个参数
                   f— 输出结果到文件,必须写该选项
                   --exclude=FILE 在打包的过程中,不要将FILE打包! --排除某个文件打包
            常见的两种压缩方式:jcvf zcvf
                   打包、压缩文件1和2并重命名:tar zcvf 新文件名 文件名1 文件名2 文件名3 文件名4
                   解压:tar xvf 文件名 该命令会自动判断归档文件的压缩格式,自动调用相关程序进行解压缩
                   解压到指定路径:tar xvf 文件名 -C 目标路径
                                               tar -xjv -f filename.tar.bz2 -C 欲解压的目录
                   查看已压缩文件:tar tf 文件名

四、用户身份切换

      su
            su [-lm] [-c 命令] [username]

参数 功能
- 单纯使用-如"su -",代表使用login-shell的变量文件读取方式来登陆系统;若用户没有写,则代表切换为root用户
-l 与-类似,但后面需要加欲切换的用户账号,也是login-shell的方式
-m -m与-p是一样的,表示使用目前的环境变量设置,而不读取新用户的配置文件
-c 仅进行一次命令,所以-c后面可以加上命令
login-shell 取得bash时需要完整的登陆流程。login-shell读取配置文件的顺序是:/etc/profile、/.bash_profile、/.bashrc、/etc/bashrc
non-login shell 取得bash接口的方法不需要重复登录。non-login shell会读取的配置文件为: ~/.bashrc、/etc/bashrc

            ~/.bash_logout文件记录了当我注销bash后系统再帮我做完什么操作后才离开。默认情况下,注销时bash只是帮我们清掉屏幕的信息而已。
      sudo
            sudo是一种以限制配置文件中的命令为基础,在有限时间内给用户使用,并且记录到日志中的命令。sudo命令的配置在/etc/sudoers中,sudo是系统管理员用来允许某些用户以root身份运行部分/全部系统命令的程序
            查看当前是哪个用户登录的shell:whoami
            sudo [-u 新用户账号]
                  -u:后面可以接欲切换的用户,若无此项则代表切换身份为root
            sudu的执行流程如下(默认只有root用户能使用):
                  1、当用户执行sudo时,便会让用户输入自己的密码来确认(root执行sudo时不需要输入密码)
                  2、若欲切换的身份和执行者身份相同,那也不需要输入密码
                  3、若密码输入成功,系统会去让/etc/sudoers文件中查找该用户是否有执行sudo的权限
                  4、若用户具有执行sudo的权限,便开始sudo后续接的命令

猜你喜欢

转载自blog.csdn.net/Han_V_Qin/article/details/106392323