Linux命令

目录

deb文件:

tar:

zip:

windows换行符转linux换行符命令:

生成patch

ethtool命令

lspci

Shell break和continue命令:

Shell判断字符串包含关系的几种方法:

shell浅谈之三for、while、until循环:

tee命令

wc命令

grep命令

find命令

cut命令

sort命令

tr命令

sed命令

awk命令:

file命令:

rev命令:

if判断:


在vi内使用所有这些命令!只要记住:在命令前要加上您希望处理的行范围和感叹号 (!),如 1,$!tr -d '\t'(美元符号表示最后一行)

deb文件:

    dpkg-deb --fsys-tarfile file.deb | tar xvf -

tar:

    tar zxf 解压gz文件、 tar zcf xxx.tar.gz xxx压缩gz文件

    tar jxf 解压bz文件、 tar jcf  xxx.tar.bz xxx 压缩gz文件

创建tar.xz文件:先 tar cvf xxx.tar xxx/ 这样创建xxx.tar文件,然后使用 xz -z xxx.tar 来将 xxx.tar压缩成为 xxx.tar.xz

解压tar.xz文件:先 xz -d xxx.tar.xz 将 xxx.tar.xz解压成 xxx.tar 然后,再用 tar xvf xxx.tar来解包。

zip:

将压缩文件test.zip解压,-d指定解压出来的文件(不包括最外层目录)放到/tmp/test目录下: unzip test.zip -d /tmp/test

将NFV-YDREPO-1.00.0目录下的文件连同最外层目录递归压缩到NFV-YDREPO-1.00.0-bak-1.zip : zip NFV-YDREPO-1.00.0-bak-1.zip -r NFV-YDREPO-1.00.0/*

gzip

gzip -d file-Name.gz

windows换行符转linux换行符命令:

     单个文件:dos2unix 文件名;

     批量转换:find . -type f | xargs dos2unix

生成patch

(注:dpdk-20.02为修订的源码,dpdk-20.02-fix为修订后的源码)

       diff -uparN dpdk-20.02 dpdk-20.02-fix/ > 0019-net-bnxt-devinfo-add-speed-capa.patch

打patch (-p1忽略一级目录 -d指定打patch的目录)

      patch -p1 -d ../../downloads/dpdk-20.02/ < 0019-net-bnxt-devinfo-add-speed-capa.patch

ethtool命令

    linux ethtool 查看网卡状态 - 小孩66的个人空间 - OSCHINA - 中文开源技术交流社区

lspci

      lspci -n -s 5e:00.0 -vv 获取设备四id

     lspci -vvvnn -s 5e:00.0 带id解释及网卡型号名称
打开关闭不区分字符大小写

       shopt -s nocasematch :打开不区分大小写,即此后命令大小写不区分

       shopt -u nocasematch:关闭不区分大小写,即此后区分大小写

Shell break和continue命令:

    http://c.biancheng.net/cpp/view/7010.html

Shell判断字符串包含关系的几种方法:

    Shell判断字符串包含关系的几种方法_shell 字符串包含_排骨瘦肉丁的博客-CSDN博客

shell浅谈之三for、while、until循环:

    shell浅谈之三for、while、until循环_乌托邦2号的博客-CSDN博客

tee命令

    用于读取标准输入的数据,并将其内容输出成文件

[root@node141 b21430]# cat xx
test dss
[root@node141 b21430]# echo "test xx" | tee xx   清空xx文件在进行复制
test xx
[root@node141 b21430]# cat xx
test xx
[root@node141 b21430]# echo "test dss" | tee -a xx   在文件末尾进行复制
test dss
[root@node141 b21430]# cat xx
test xx
test dss

wc命令

   wc [-clw]  统计, -c为统计字节数,-l统计行数,-w为统计单词数

du命令

du常用的选项:

  -h:以人类可读的方式显示

  -a:显示目录占用的磁盘空间大小,还要显示其下目录和文件占用磁盘空间的大小

  -s:显示目录占用的磁盘空间大小,不要显示其下子目录和文件占用的磁盘空间大小

  -c:显示几个目录或文件占用的磁盘空间大小,还要统计它们的总和

  –apparent-size:显示目录或文件自身的大小

  -l :统计硬链接占用磁盘空间的大小

  -L:统计符号链接所指向的文件占用的磁盘空间大小

du -sh : 查看当前目录总共占的容量。而不单独列出各子项占用的容量

du -lh –max-depth=1 : 查看当前目录下一级子文件和子目录占用的磁盘容量。

du -sh * | sort -n 统计当前文件夹(目录)大小,并按文件大小排序
du -sk filename 查看指定文件大小

grep命令

     -i: 忽略大小写;-w :全词匹配 ;-v :反向匹配,过滤掉-v 后面的字符串

     grep "str"  /dir  -rn    从指定目录递归抓取字符

1、或操作

grep -E '123|abc' filename  // 找出文件(filename)中包含123或者包含abc的行
egrep '123|abc' filename    // 用egrep同样可以实现
awk '/123|abc/' filename   // awk 的实现方式

2、与操作

grep pattern1 files | grep pattern2 //显示既匹配 pattern1 又匹配 pattern2 的行。

find命令

    (3)find /etc -name '*srm*'  #使用通配符*(0或者任意多个)。表示在/etc目录下查找文件名中含有字符串‘srm’的文件
    (4)find . -name 'srm*'   #表示当前目录下查找文件名开头是字符串‘srm’的文件

               find  . -type d -name 'srm*'      #查找名字含srm字段的目录

    2.按照文件特征查找     

    (1)find / -amin -10   # 查找在系统中最后10分钟访问的文件(access time)
    (2)find / -atime -2   # 查找在系统中最后48小时访问的文件
    (3)find / -empty   # 查找在系统中为空的文件或者文件夹
    (4)find / -group cat   # 查找在系统中属于 group为cat的文件
    (5)find / -mmin -5   # 查找在系统中最后5分钟里修改过的文件(modify time)
    (6)find / -mtime -1   #查找在系统中最后24小时里修改过的文件
    (7)find / -user fred   #查找在系统中属于fred这个用户的文件
    (8)find / -size +10000c  #查找出大于10000000字节的文件(c:字节,w:双字,k:KB,M:MB,G:GB)
    (9)find / -size -1000k   #查找出小于1000KB的文件

    3.使用混合查找方式查找文件

    参数有: !,-and(-a),-or(-o)。

    (1)find /tmp -size +10000c -and -mtime +2   #在/tmp目录下查找大于10000字节并在最后2分钟内修改的文件
         (2)find / -user fred -or -user george   #在/目录下查找用户是fred或者george的文件文件
         (3)find /tmp ! -user panda  #在/tmp目录中查找所有不属于panda用户的文件

cut命令

     -f  : 指定获取第几列字段     

           例: -f 1为获取第一列字段、-f 2-5 为获取第2到第5列字段

    -d : 指定截断字段的字符

         例: -d “  ”为以空格进行截取

--complement :取反

       例:cut -f 2 --complement 为获取除第2列字段之外的列,等同于cut -f 1,3-

  -c:指定获取的字符

       例-c 2-5显示每行第2到第5个字符, -c 2-为从第2个字符开始显示每行

sort命令

处理结果输出到标准输出,不影响原文件,若要对标准输出进行保存,则需要进行重定向

sort重定向: sort -r number.txt > number.txt不管用,number.txt内容被清空,需使用sort number.txt -o number.txt (-o选项进行重定向)

sort  number.txt:将文件的每一行作为一个单位,相互比较,比较原则是从首字符向后,依次按ASCII码值进行比较,最后将他们按重上到下升序输出

sort -r number.txt:将文件的每一行作为一个单位,相互比较,比较原则是从首字符向后,依次按ASCII码值进行比较,最后将他们按重上到下降序输出

sort -n number.txt:以行首字符进行排序,默认重上到下升序

sort -u seq.txt:去除重复行

sort  -t ‘分隔符’ -k [ FStart [ .CStart ] ] [ Modifier ] [ , [ FEnd [ .CEnd ] ][ Modifier ] ]:FStart 为域的开始,CStart 为第几个字符开始,FEnd 为域的结束,CEnd 为排序字符的结束,Modifier 为排序方式如n(以整数进行排序)、r(倒序)、b、f、i(忽略不可打印字符),CStart省略时其值默认为第一个字符、CEnd 省略时其值默认为最后一个字符,FEnd省略其值默认为最后一个域(FStart.CStart ,FEnd .CEnd相当于坐标对需要排序的新行字符范围进行限定)

例:

      sort -n -k 2 -t ‘:’ facebook.txt:以冒号作为分隔符,以分隔符第二个域,第一个字符开始到行结束进行排序依据;

      sort -t ‘ ‘ -k 1.2 facebook.txt:对分隔符第一个域的第二个字母开始到行结束作为排序依据;

-k和-u联合:-u只识别用-k设定的域,发现相同,就将后续相同的行都删除

多个-k联合:前一个-k排序相同的情况下,才触发第二个-k;

多个-k和-u联合:-u是会权衡所有-k选项,将都相同的才会删除,只要其中有一级不同不删除;

-f会将小写字母都转换为大写字母来进行比较,亦即忽略大小写

-c会检查文件是否已排好序,如果乱序,则输出第一个乱序的行的相关信息,最后返回1

-C会检查文件是否已排好序,如果乱序,不输出内容,仅返回1

-M会以月份来排序,比如JAN小于FEB等等

-b会忽略每一行前面的所有空白部分,从第一个可见字符开始比较

tr命令

1、对标准输入进行处理后输出到标准输出,输出结果不能直接重定向到原文件,否则原文件则为空

2、cat file | tr [source] [target] > new_file 将后者替换前者

     cat file | tr -s [source] [target] > new_file 将前者进行压缩后再将后者替换前者

例:将文件file中出现的"abc"替换为"xyz"

       cat file | tr "abc" "xyz" > new_file    ----》单引号和双引号均可,若前者的长度大于后者,则前者比后者多出的字符以后者最后一个字符进行替换;若后者的长度大于前者,则超出的部分被忽略;

     【注意】这里,凡是在file中出现的"a"字母,都替换成"x"字母,"b"字母替换为"y"字母,"c"字母替换为"z"字母。而不是将字符串"abc"替换为字符串"xyz"。

表达字符串的特殊序列

[C1-C2]	指定了 C1 所指定的字符和 C2 所指定的字符之间(包括 C1 和 C2)进行整理的字符串。C1 所指定的字符必须整理放在由 C2 所指定的字符之前。
注:在使用本方法指定子范围时,当前语言环境对结果有重要影响。如果需要用命令来产生与语言环境无关的一致结果,那么应该避免使用子范围。
[C*Number]	Number 是一个整数,它指定了由 C 所指定的字符的重复次数。除非其首位数字是 0,否则 Number 一律视为是十进制整数;如果首位数字是 0,那么视为八进制整数。
[C*]	用 C 指定的字符填写字符串。该选项只用于包含在 String2 中的字符串末尾,它强制 String2 中的字符串具有与由 String1 变量所指定的字符串一样的字符数。*(星号)后面指定的任何字符都被忽略。
[ :ClassName: ]	指定由当前语言环境中的 ClassName 所命名的字符类中的所有字符。类名可以是下述名称中的任何一种:
alnum      lower
alpha      print  //显示字符
blank      punct
cntrl //控制字符      space //空格
digit      upper
graph      xdigit
除 [:lower:] 和 [:upper:] 转换字符类之外,其他字符类指定的字符都按未指定的顺序放入数组中。由于未定义字符类指定的字符的顺序,仅当目的为将多个字符映射为一个时才使用这些字符。转换字符类除外。

有关字符类的详细情况,请参阅 ctype 子例程。

[ =C= ]	指定所有的字符具有与 C 所指定的字符相同的等价类。
\Octal	指定字符,其编码由 Octal 所指定的八进制值表示。Octal 可以是 1 位、2 位 或 3 位八进制整数。空字符可以用 '\0' 表示,并可以像任何其他的字符那样进行处理。
\ControlCharacter	指定与 ControlCharacter 所指定的值相应的控制字符。可以表示以下值:
\a
警告
\b
退格键
\f
换页
\n
换行
\r
回车
\t
制表键
\v
垂直制表键
\\	规定 "\"(反斜杠)就是作反斜杠使用,而无作为转义字符的任何特殊意义。
\[	指定“[”(左括号)就作为左括号使用,而无作为特定字符串序列的开始字符的任何特殊意义。
\-	指定“-”(负号)就作为负号使用,而无作为范围分隔符的任何特殊意义。

[a-z] a-z内的字符组成的字符串。
[A-Z] A-Z内的字符组成的字符串。
[0-9] 数字串。
\octal 一个三位的八进制数,对应有效的ASCII字符。
[O*n] 表示字符O重复出现指定次数n。因此[O*2]匹配OO的字符串

cat file | tr [A-Z] [a-z] > new_file(小写 --> 大写)

cat file | tr [A-Z] [a-z] > new_file(大写 --> 小写)

cat file | tr [0-9] [a-j] > new_file     数字0-9替换为a-j (a-j超出0-9的部分被忽略)

3、-c 用字符串1中字符集的补集替换此字符集,要求字符集为ASCII。

    cat file | tr -cs '[:lower:][:upper:]' '[\n*]' 将文件中非大小写字母的字符压缩成一个并转换成换行符,*使\n与大小写字符长度一样长

4、-d 删除字符串1中所有输入字符

例:删除文件file中出现的"Snail"字符

       cat file | tr -d "Snail" > new_file

     【注意】这里,凡是在file文件中出现的'S','n','a','i','l'字符都会被删除!而不是紧紧删除出现的"Snail”字符串

      删除文件file中出现的换行'\n'、制表'\t'字符

      # cat file | tr -d "\n\t" > new_file

5、-s 删除所有重复出现字符序列,只保留第一个;即将重复出现字符串压缩为一个字符串

      tr -s '[:space:]' :将字符串中多个连接的空格压缩成一个空格,包括行末

      tr -s '  ' :将字符串中多个连接的空格压缩成一个空格,不包括行末

     删除“连续着的”重复字母,只保留第一个 cat file | tr -s [a-zA-Z] > new_file

sed命令

参数说明(sed之后,参数前在-)

  • -n:显示行号
  • -e:-e后面的命令作为一个字脚本来处理文本,用于需要执行多个命令时
  nl /etc/passwd | sed -e '3,$d' -e 's/bash/blueshell/'  删除/etc/passwd第三行到末尾的数据,并把bash替换为blueshell,需要-e来指定每个命令,每个命令前还有其它参数需添加到-e之前,比如-n -e

         [root@xx]# cat testfile
         HELLO LINUX!
         Linux is a free unix-type opterating system.
        This is a linux testfile!
        Linux test 

        [root@xx]# cat testfile | sed  -e '3d' -n -e  '/Linux/p'
          Linux is a free unix-type opterating system.
          Linux test

  • -i:直接在文本中插入  
     sed -i 's/\.$/\!/g' regular_express.txt   将 regular_express.txt 内每一行结尾若为 . 则换成 !      
     sed -i '$a # This is a test' regular_express.txt   直接在 regular_express.txt 最后一行加入 # This is a test

动作说明(动作都在单引号之内)

  • a :在指定行下方新增行,对指定文件a前的数字指定行范围,a后接\+新行字符,或接收标准输入使用单括号, a前的数字指定行范围+空格+再加要新增的字符串    --》不改变文件,只输出到标准输出
       sed 4a\newLine testfile   

             nl /etc/passwd | sed '2a drink tea'

  • c :取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!    --》不改变文件,只输出到标准输出
      nl /etc/passwd | sed '2,5c No 2-5 number'    将文本的2到5行替换为No 2-5 number一行
  • d :删除指定行     --》不改变文件,只输出到标准输出

           nl /etc/passwd | sed '2d'      //删除第二行

     nl /etc/passwd | sed '3,$d'       删除第 3 到最后一行
     nl /etc/passwd | sed '2,5d'       删除第2到5行到最后一行      
     nl /etc/passwd | sed  '/root/d'   删除含root字符串的行后进行打印
  • i :在指定行上方新增行
     nl /etc/passwd | sed '2i drink tea'   在第二行前增加drink tea字符串  --》不改变文件,只输出到标准输出
  • p :打印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n (-n为显示行号)一起运行
     nl /etc/passwd | sed -n '5,7p'  打印5到7行
[root@xx]# cat testfile
HELLO LINUX!
Linux is a free unix-type opterating system.
This is a linux testfile!
Linux test
[root@xx]# cat testfile | sed   '/Linux/p'  除打印全部行外,还将匹配行在该行的下一行额外进行打印
HELLO LINUX!
Linux is a free unix-type opterating system.
Linux is a free unix-type opterating system.   >>打印匹配行
This is a linux testfile!
Linux test
Linux test   >>打印匹配行
[root@xx]# cat testfile | sed   -n '/Linux/p'     仅打印匹配行
Linux is a free unix-type opterating system.
Linux test

  • s :取代
      sed 's/要被取代的字串/新的字串/g',里面可用正则
             ^表示行开头,$表示行结束或文本末尾
             通配起始和结束的位置间加.*
                  ^.*addr:匹配行开头到addr字串结束 
                 Bcast.*$:匹配Bcast开始到行结束的字串
             精确匹配不需要.*:
               \!$:精确匹配行尾的!   (标点符号需转义  )                
               ^\t :精确匹配行开头的制表符
            ^用在[ ]取范围时表示取反
                 [^a-z] //除了小写字母以外的所有字符 
                 [^\\\/\^] //除了(\)(/)(^)之外的所有字符 
                 [^\"\'] //除了双引号(")和单引号(')之外的所有字符
[root@www ~]# /sbin/ifconfig eth0
eth0 Link encap:Ethernet HWaddr 00:90:CC:A6:34:84
inet addr:192.168.1.100 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::290:ccff:fea6:3484/64 Scope:Link
[root@www ~]# /sbin/ifconfig eth0 | grep 'inet addr' | sed 's/^.*addr://g'  将行开头到addr:的字段用空字符替换,即删除行开头到addr:的字符
192.168.1.100 Bcast:192.168.1.255 Mask:255.255.255.0
[root@www ~]# /sbin/ifconfig eth0 | grep 'inet addr' | sed 's/^.*addr://g' | sed 's/Bcast.*$//g'  将Bcast开始到行结尾的字符用空字符替换,即删除Bcast开始到行结尾的字符
192.168.1.100
  • 执行多个命令
      nl /etc/passwd | sed -n '/root/{s/bash/blueshell/;p;q}' 搜索/etc/passwd,找到root对应的行,执行后面花括号中的一组命令,每个命令之间用分号分隔,这里把bash替换为blueshell,再输出这行       
      nl /etc/passwd | sed -e '3,$d' -e 's/bash/blueshell/'  删除/etc/passwd第三行到末尾的数据,并把bash替换为blueshell,需要-e来指定每个命令,每个命令前还有其它参数需添加到-e之前,比如-n -e

         [root@xx]# cat testfile
         HELLO LINUX!
         Linux is a free unix-type opterating system.
        This is a linux testfile!
        Linux test 

        [root@xx]# cat testfile | sed  -e '3d' -n -e  '/Linux/p'
          Linux is a free unix-type opterating system.
          Linux test


awk命令:

    awk '{print $1,$4}' log.txt        :每行按空格或TAB分割,输出文本中的1、4项
    awk -F, '{print $1,$2}'   log.txt  :使用","分割,输出文本中的1、4项
    awk 'BEGIN{FS=","} {print $1,$2}'   内置变量FS指定分隔符,BEGIN表示内置变量开始,等同于上一个命令
    awk 'BEGIN{IGNORECASE=1} /this/' log.txt    忽略大小写
    匹配字符串:awk '/re/ ' log.txt
    正则:awk '$2 ~ /th/ {print $2,$4}' log.txt    ~表示正则开始,匹配th字符,输出匹配行中的2、4项
    awk '!/th/ {print $2,$4}' log.txt    取反

file命令:

    查看文件格式信息,若为软连接则显示其链接的文件名

rev命令

    reverse的简写,将输出倒置

if判断:

(if内的值0为真)

文件表达式
-e filename 如果 filename存在,则为真
-d filename 如果 filename为目录,则为真 
-f filename 如果 filename为常规文件,则为真
-L filename 如果 filename为符号链接,则为真
-r filename 如果 filename可读,则为真 
-w filename 如果 filename可写,则为真 
-x filename 如果 filename可执行,则为真
-s filename 如果文件长度不为0,则为真
-h filename 如果文件是软链接,则为真
filename1 -nt filename2 如果 filename1比 filename2新,则为真。
filename1 -ot filename2 如果 filename1比 filename2旧,则为真。
整数变量表达式
-eq 等于
-ne 不等于
-gt 大于
-ge 大于等于
-lt 小于
-le 小于等于
字符串变量表达式
If  [ $a = $b ]                 如果string1等于string2,则为真
                                字符串允许使用赋值号做等号
if  [ $string1 !=  $string2 ]   如果string1不等于string2,则为真       
if  [ -n $string  ]             如果string 非空(非0),返回0(true)  
if  [ -z $string  ]             如果string 为空,则为真
if  [ $sting ]                  如果string 非空,返回0 (和-n类似) 
    逻辑非 !                   条件表达式的相反
if [ ! 表达式 ]
if [ ! -d $num ]               如果不存在目录$num
    逻辑与 –a                   条件表达式的并列
if [ 表达式1  –a  表达式2 ]
    逻辑或 -o                   条件表达式的或
if [ 表达式1  –o 表达式2 ]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

picaso77

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值