Linux Shell命令行

1.安装rpm软件:rpm -Uvh 包.rpm

2.卸载rpm软件:rpm -e 包

3.配置、编译、安装、卸载源码发布的软件包:

   ./configure

   make

   make install

   make clean

   卸载源码发布的软件包
   make uninstall

4.pwd

5.ls

6.cd

7.mkdir

8.rm

9.cp

10.mv

11.rm

12.ln:用来在文件之间创建链接
     -d:允许系统管理者硬链结自己的目录
     -s:进行软链结(Symbolic Link)
     -f:链结时先将源文件删除
     -b:将在链结时会被覆盖或删除的文件进行备份 

13.chmod

     u 文件属主权限
     g 属组用户权限
     o 其他用户权限
     a 所有用户

     + 增加权限。
     - 取消权限。
     = 设定权限

     r 读权限
     w 写权限
     x 执行权限
     X 表示只有当该档案是个子目录或者该档案已经被设定过为可执行

     -c : 若该档案权限确实已经更改,才显示其更改动作
     -f : 若该档案权限无法被更改也不要显示错误讯息
     -v : 显示权限变更的详细资料
     -R : 对目前目录下的所有档案与子目录进行相同的权限变更(即以递回的方式逐个变更)
     --help : 显示辅助说明
     --version : 显示版本

     r=4,w=2,x=1

     例:

     (1)将档案 file.txt 设为所有人皆可读取
     chmod ugo+r file.txt
     (2)将档案 file.txt 设为所有人皆可读取
     chmod a+r file.txt
     (3)将档案 file1.txt与file2.txt设为该档案拥有者,与其所属同一个群体者可写入,但其他以外的人则不可写入
     chmod ug+w,o-w file1.txt file2.txt
     (4)将file设定为只有该档案拥有者可以执行 :
     chmod u+x file
     (5)将目前目录下的所有档案与子目录皆设为任何人可读取 :
     chmod -R a+r *

14.chown:更改与文件关联的所有者或组

     例:

     (1)file.txt的用户访问权限现在应用到dce,作为所有者dce可以使用
     chown dce file.txt
     (2)要将目录/DCE中所有文件的所有者和组更改为用户dce和组dba
     chown -R dce:dba /DCE 

15.wc -l:查看文件有多少行

    wc -c:查看文件的有多少字节

16.cat:用于显示整个文件的内容,没有翻页功能;可将数个文件合并成一个文件

     more:让画面在显示满一页时暂停,此时可按空格健继续显示下一个画面,或按Q键停止显示

     less:可以用来浏览超过一页的文件。可以按空格键,上下键来卷动文件。当要结束浏览时,在提示符“:”下按Q键

17.dd:磁盘信息的低级复制

    dd if=/dev/hda2 of=bootsect.lnx bs=512 count=1

    dd if=bootimg.img of=/dev/fd0

18.管道:将一个指令的标准输出作为另一个命令的标准输入

     例:返回/usr/bin 中的文件列表的行数

     ls /usr/bin | wc -l

19.输出重定向>或>>

    >若文件存在,原有内容被覆盖

    >>若文件存在,在原内容后追加

20.LANG=zh_CN 中文编码显示

21.head

     例:

     (1)head /etc/passwd 显示文件前10行

     (2)head -10 /etc/passwd 显示文件前10行

         = head -n 10 /etc/passwd

         = head -n +10 /etc/passwd

     (3)head -q -n 10 file1 file2 file3 显示多个文件开头10行,不显示文件头

     (4)head -v -n 10 file1 file2 file3 显示多个文件开头10行,显示文件头

     (5)head -n -10 file 显示除文件最后10行外的所有内容

22.tail

     例:

     (1)tail /etc/passwd 显示文件后10行

     (2)tail -10 /etc/passwd 显示文件后10行

         = tail -n 10 /etc/passwd

         = tail -n -10 /etc/passwd

     (3)tail -q -n 10 file1 file2 file3 显示多个文件最后10行,不显示文件头

     (4)tail -v -n 10 file1 file2 file3 显示多个文件最后10行,显示文件头

     (5)tail -n +10 file 从文件第10行显示

     (6)tail -f /var/log 不停地去读最新的内容,用于实时监视,用Ctrl+c来终止 

23.tar

     (1) 解压

     例: 

     tar xvf *.tar 

     tar zxvf *.tar.gz

     tar jxvf *.tar.bz2
     (2) 压缩

     例: 

     tar cvf * filename.tar 

     tar zcvf * filename.tar.gz 

     tar jcvf * filename.tar.bz2

24.awk

    例:

    (1) 打印所有以模式no或so开头的行
    awk '/^(no|so)/' myfile
    (2) 如果记录以n或s开头,就打印这个记录,默认以空格或tab分割,即-F ' '
    awk '/^[ns]/{print $1}' myfile
    (3) 如果第一个域以两个数字结束就打印这个记录
    awk '$1 ~/[0-9][0-9]$/(print $1}' myfile
    (4) 如果第一个或等于100或者第二个域小于50,则打印该行
    awk '$1 == 100 || $2 < 50' myfile
    (5) 如果第一个域不等于10就打印该行
    awk '$1 != 10' myfile
    (6) 如果记录包含正则表达式regex,则第一个域加10并打印出来
    awk '/regex/{print $1 + 10}' myfile
    (7) 如果第一个域大于5则打印问号后面的表达式值,否则打印冒号后面的表达式值
    awk '{print ($1 > 5 ? "ok "$1: "error"$1)}' myfile
    (8) 打印以正则表达式regex1开头的记录到以正则表达式regex2开头的记录范围内的所有记录;如果找到一个新的正则表达式root开头的记录,则继续打印直到下一个以正则表达式mysql开头的记录为止,或到文件末尾
    awk '/^regex1/,/^regex2/' myfile

    (9) 变量

    先扫描第1个域,一旦test匹配,就把第2个域的值加上第3个域的值,并把结果赋值给变量count,最后打印出来
    awk '$1 ~/test/{count = $2 + $3; print count}' myfile

   

    awk '{$2 = 100 + $1; print }' test

    awk '$1 == "root"{$1 ="test";print}' test

    (10) BEGIN块

    在处理输入文件以前,域分隔符(FS)被设为冒号,输出文件分隔符(OFS)被设置为制表符,输出记录分隔符(ORS)被设置为两个换行符
    awk 'BEGIN{FS=":"; OFS="/t"; ORS="/n/n"}{print $1,$2,$3} myfile

    (11) 重定向和管道

    将后缀为.o的文件修改为后缀为.c的文件

    ls *.o | awk -F'.' '{print "mv "$0" "$1".c"}' | exec sh {}

    如果第一个域的值等于100,则把它输出到output_file中;用>>不清空文件只追加

    awk '$1 = 100 {print $1 > "outfile.txt" }' infile.txt

    执行date命令,并输出

    awk 'BEGIN{ "date" | getline d; print d}'

    (12) 判断语句

    awk '{if ($1 <$2) print $2 "too high"}' myfile.txt

    awk '{if ($1 > 100) print $1 "bad" ; else print "ok"}' myfile.txt

    (13) 循环语句

    awk '{ i = 1; while ( i <= NF ) { print NF,$i; i++}}' myfile.txt

    NF为一行分隔符能分隔出多少个字段

    awk '{for (i = 1; i< NF; i++) print NF,$i}' myfile.txt

    (14) 数组

    awk '/^tom/{name[NR]=$1}; END{for(i in name){print name[i]}}' myfile.txt

    统计文件myfile.txt中,每个字段出现的次数(用字符串作为下标)

    awk '{i = 1;while(i <= NF) {count[$1]++;i++}} END{for(name in count) print name,count[name]}' myfile.txt

    delete函数用于删除数组元素

    awk '{line[x++]=$1} END{for(x in line) delete(line[x])}' test 

    (15) sub函数匹配记录中最大、最靠左边的子字符串的正则表达式,并用替换字符串替换这些字符串。如果没有指定目标字符串就默认使用整个记录。替换只发生在第一次匹配的时候

    将myfile.txt文件中a字符替换成b字符

    awk '{i = 1; while(i <= NF){sub(/a/, "b"); i++;} print;}' myfile.txt

    (16) gsub函数作用如sub,但它在整个文档中进行匹配

    将myfile.txt文件中a字符替换成b字符25.echo:在显示器上显示一段文字,一般起到一个提示的作用

    awk '{ gsub(/a/, "b"); print }' myfile.txt

    (17) index函数返回子字符串第一次被匹配的位置,偏移量从位置1开始

    awk '{ print index($0, "a") }' myfile.txt

    (18) substr函数返回从位置1开始的子字符串,如果指定长度超过实际长度,就返回整个字符串

    awk '{ print substr( "hello world", 7,11 ) }'

    (19) match函数返回在字符串中正则表达式位置的索引,如果找不到指定的正则表达式则返回0。match函数会设置内建变量RSTART为字符串中子字符串的开始位置,RLENGTH为到子字符串末尾的字符个数。substr可利于这些变量来截取字符串

    打印以连续小写字符结尾的开始位置

    awk 'BEGIN{start=match(" hello world",/[a-z]+$/); print start}' 结果为7

    (20) toupper和tolower函数可用于字符串大小间的转换,该功能只在gawk中有效

    (21) split函数可按给定的分隔符把字符串分割为一个数组。若分隔符没提供则按当前FS值进行分割

    awk 'BEGIN{ split( "20:18:00", time, ":" ); print time[2] }' 结果为18

    (22) strftime函数使用C库中的strftime函数格式化时间

    显示当前日期

    awk 'BEGIN{ now=strftime("%m/%d/%y"); print now }'

    awk 'BEGIN{ now=strftime("%D", systime()); print now }'

    显示时分秒

    awk 'BEGIN{ now=strftime("%H:%M:%S"); print now }'

    (23) 自定义函数

    awk 'BEGIN{myfunc("Hello World")} function myfunc(str){print str;}'

    (24)   

 

 

命令选项

描述

-F fs or --field-separator fs

指定输入文件折分隔符,fs是一个字符串或者是一个正则表达式,如-F:

-v var=value or --asign var=value

赋值一个用户定义变量。

-f scripfile or --file scriptfile

从脚本文件中读取awk命令。

-mf nnn and -mr nnn

nnn值设置内在限制,-mf选项限制分配给nnn的最大块数目;-mr选项限制记录的最大数目。这两个功能是Bell实验室版awk的扩展功能,在标准awk中不适用。

-W compact or --compat

-W traditional or --traditional

在兼容模式下运行awk。所以gawk的行为和标准的awk完全一样,所有的awk扩展都被忽略。

-W copyleft or --copyleft

-W copyright or --copyright

打印简短的版权信息。

-W help or –help

-W usage or --usage

打印全部awk选项和每个选项的简短说明。

-W lint or --lint

打印不能向传统unix平台移植的结构的警告。

-W lint-old or --lint-old

打印关于不能向传统unix平台移植的结构的警告。

-W posix

打开兼容模式。但有以下限制,不识别:/x、函数关键字、func、换码序列以及当fs是一个空格时,将新行作为一个域分隔符;操作符****=不能代替^^=fflush无效。

-W re-interval or --re-inerval

允许间隔正则表达式的使用,参考(grep中的Posix字符类),如括号表达式[[:alpha:]]

-W source program-text or --source program-text

使用program-text作为源代码,可与-f命令混用。

-W version or --version

打印bug报告信息的版本。


(25)

变量

描述

$n

当前记录的第n个字段,字段间由FS分隔。

$0

完整的输入记录。

ARGC

命令行参数的数目。

ARGIND

命令行中当前文件的位置(0开始算)

ARGV

包含命令行参数的数组。

CONVFMT

数字转换格式(默认值为%.6g)

ENVIRON

环境变量关联数组。

ERRNO

最后一个系统错误的描述。

FIELDWIDTHS

字段宽度列表(用空格键分隔)

FILENAME

当前文件名。

FNR

NR,但相对于当前文件。

FS

字段分隔符(默认是任何空格)

IGNORECASE

如果为真,则进行忽略大小写的匹配。

NF

当前记录中的字段数。

NR

当前记录数。

OFMT

数字的输出格式(默认值是%.6g)

OFS

输出字段分隔符(默认值是一个空格)

ORS

输出记录分隔符(默认值是一个换行符)

RLENGTH

match函数所匹配的字符串的长度。

RS

记录分隔符(默认是一个换行符)

RSTART

match函数所匹配的字符串的第一个位置。

SUBSEP

数组下标分隔符(默认值是/034)

25.echo:

     -n 不要在最后自动换行
     -e 若字符串中出现以下字符,则特别加以处理,而不会将它当成一般文字输出:
          /a 发出警告声
          /b 删除前一个字符
          /c 最后不加上换行符号
          /f 换行但光标仍旧停留在原来的位置
          /n 换行且光标移至行首
          /r 光标移至行首,但不换行
          /t 插入tab
          /v 与/f相同
          // 插入/字符
          /nnn 插入nnn(八进制)所代表的ASCII字符
     –help 显示帮助
     –version 显示版本信息

26.expr:一般用于整数值,但也可用于字符串,也是一个手工命令行计数器

     (1)

     例:

     expr 10 + 10

     expr 30 / 3

     expr 30 /* 3

     (注意运算符左右都有空格)

     (2)在循环中用于增量计算

     例:

     LOOP=0

     LOOP=`expr $LOOP + 1`

     首先,循环初始化为0,然后加1,反引号的用法意即替代命令;从expr接受输出并将之放入循环变量

     (3)可以返回其本身的退出状态,成功返回1,任何其他值为无效或错误

     例:

     value=hello

     expr $value = "hello"

     1

     (4)模式匹配,通过指定冒号选项计算字符串中字符数,.*意即任何字符重复0次或多次

     例:

     value=abc.doc

     expr $value : '.*'

     7

     可使用字符串匹配操作

     例:

     expr $value : '(.*).doc' 

27.grep:文本搜索工具,能使用正则表达式搜索文本,并把匹配的行打印出来

     正则表达式:

    

^

行首定位符

‘^love’

匹配所有love开头的行

$

行尾定位符

‘$love’

匹配所有love.结尾的行

.

匹配一个字符

‘l..e’

匹配开头为l后跟两个字符结尾为e的行

*

匹配一个或多个字符

‘*love’

匹配包含跟在0或多个字符后为love的行

[]

匹配一组字符中的任意一个

‘[Ll]ove’

匹配Lovelove的行

[^]

匹配不在字符组内的字符

‘[^A-K]ove’

匹配包含一个不在AK之间的字符,且该字符紧跟着ove的行

/<

词首定位符

‘/<love’

love开头的词的行

/>

词尾定位符

‘love/>’

love结尾的词的行

/(  /)

标记匹配到的字符

‘/(love/)ing’

love被标记为1,之后若引用该段字符可用/1,最多可设置9个标签,从左边开始编号

x/{m/}

x/{m,/}

x/{m,n/}

字符x的重复出现次数m

至少m

至少m次不超过n

‘o/{5/}’

‘o/{5,/}’

‘o/{5,10/}’

匹配连续出现5o

匹配连续出现至少5o

匹配连续出现510o

 

选项:

-b 在每一行前面加上其所在的块号,根据上下文定位磁盘块时可能会用到

-c 显示匹配到的行的数目,不显示行的内容

-h 不显示文件名

-i  比较字符时忽略大小写区别

-l  只列出匹配行所在文件的文件名

-n 在每一行前加上它在文件中的相对行号

-s  只显示报错信息,以检查退出状态

-v  反向查找,只显示不匹配的行

-w 表达式作为词来查找,类似/<和/>,并不是所有版本都支持,如SCO Unix不支持

例:

grep 查找表达式 文件名

28.egrep:扩展grep

+

匹配一个或多个前驱字符

‘[a-z]+ove’

匹配一个或多个小写字母,后跟ove

?

匹配0个或1个前驱字符

‘lo?ve’

将找到loveloove

a|b

匹配ab

‘love|hate’

lovehate匹配

()

组字符

‘lov(ely|able)’

lovelylovable匹配

29.fgrep:把所有的元字符都当作字符本身,只代表自己。相当于/转义符

 

    RS 记录分隔符变量

    NR 当前工作的记录数

30.vi

    (1)i 插入

    (2)dd 删除整行 10dd 删除10行

    (3)yy 复制 10yy 复制10行

    (4)先dd再p 剪切

    (5)p 粘贴

    (6)u 回退

    (7)o 下一行进入编辑状态

    (8)a 下一个字符

    (9)$ 行尾

    (10)^ 行头

    (11)G 文本最后 1G 文件开头

    (12)x 删除光标所在字符

    (13)D 删除从光标到行尾的所有字符

    (14)f * 跳到行第一个出现*字符的位置

    (15)J 两行变一行

    (16):%s/aa/bb/ 把第一个aa替换成bb;:%s/aa/bb/g 把全部aa替换成bb

    (17):set ic 查找时区分大小写

          /a 查找a字符

          n 向下查找

          N 向上查找

          ?a 查找a字符 n N的功能与/a相反

    (18)H 左

          L 右

          J 上

          K 下

31.crontab:在固定时间或固定间隔执行程序

    crontab   [   -u   user   ]   filecrontab   [   -u   user   ]   {   -l   |   -r   |   -e   }

    其中:filecrontab的格式f1 f2 f3 f4 f5

            f1 分钟 (0-60)
            f2 小时 (0-23)
            f3 日 (1-31)

            f4 月 (1-12)
            f5 星期 (1-7)

    例:

    (1)每月每天每小时的第0分钟执行一次/bin/ls
  crontab 0 7 * * * /bin/ls
    (2)在12月内,每天的早上6点到12点中,每隔7分钟执行一次/usr/bin/backup
  */7 6-12 * 12 * /usr/bin/backup
    (3)在12月内,每天的早上6点到12点中,每隔20分钟执行一次/usr/bin/backup
    0 6-12/3 * 12 * /usr/bin/backup
    (4)周一到周五每天下午5:00给mailaddr寄一封信
  0 17 * * 1-5 mail -s /"hi/" mailaddr < /tmp/maildata

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值