Shell 基础须知

 

1.  Shell包括几种?

Bourne Shell,用于系统管理。$为提示符。

C Shell,加入命令行历史、别名、内建算法、文件名补全和作业控制。%为提示符

Korn Shell默认提示符:$

2.  Linux支持的Shell

用:cat /etc/shells查看,有BourneAgain Shell(bash)和TC Shell(tcsh)等,默认为bash

3.什么是进程

         进程是处在执行状态下,并可以用唯一的PID标识的程序。用ps/pstree命令显示进程。

4.切换Shell

         chsh–s /bin/tcsh

5.每个Shell都有一个特别的内建变量用于保存最后一个命令终止时的状态,在TC Shell下是$status,在bash下是$?

6.改变所有权和权限

       chmod命令。用于改变目录和文件的权限。权限组合的8种情况

      

                                                     
 

10进制数字

 
 

2进制数字

 
 

权限

 
 

0

 
 

000

 
 

None

 
 

1

 
 

001

 
 

- -x

 
 

2

 
 

010

 
 

-w-

 
 

3

 
 

011

 
 

-wx

 
 

4

 
 

100

 
 

r- -

 
 

5

 
 

101

 
 

r-x

 
 

6

 
 

110

 
 

rw-

 
 

7

 
 

111

 
 

rwx

 

r代表读权限,w表示写权限,x表示执行的权限。u表示用户,g表示组,o表示其他人,a表示所有人

例:chmod 755 file chmod g+w file         chmod a=r file

       chown命令。用于改变文件和目录的所有者和组

例:chown root file

7.变量:Shell可以定义两类变量:局部变量和环境变量。局部变量为私有,不传递。环境变量由父进程传给子进程。

8.管道。管道为进程之间的通信服务,他是把一个命令的输出作为另外一个命令输入的机制。如:who | wc,通过管道,Shell吧who 指令的输出作为wc命令的输入

9.POSIX是Portable Operating System Interface for Computer Eaviron ment的所写,意思是计算机环境的可一直操作系统界面

10.grep命令:在一个或者多个文件中搜索字符串模版

11.sed命令:非交互式编辑器,可在命令行输入命令和文件名。sed是非破坏性的,在你用Shell重新定向存储输出以前,sed不会改变你的文件。

12.awk命令:用来操纵数据和产生报告的程序语言。有nawk,gawk和awk

        awk格式:awk ‘pattern’filename                  awk ‘{action}’filename

                              awk ‘pattern’ ‘{action}’ filename

13.awk编程时需要用到的几个内建变量:

         FNR:当前文件的记录号      FS:输入域分隔符,默认是空格 IGNORECASE:关闭大小写敏感(赋值为1)    NF:当前文件域数量                              NR:当前文件记录数

OFMT:数字输出格式            OFS:输出域分隔符       ORS:输出记录分隔符           RS:输入记录分隔符(打印一个换行)

14.awk编程时的条件语句格式:(和C语言差不多)

       if(expression){

                                     statement;statement;…..

                                     }

       {if(expression){

                                     statement;statement;….

                                     }

       else{

                                     statement;statement;…..

                                     }

       }

       {if(expression){

                                     statement;…

                                     }

       else if(expression){

                                     statement;

                                               }

       else{

                                     statement;

         }

         }

15.awk编程时的循环控制语句

       break和continue语句。break语句使你能在满足某个特定条件时跳出循环。在满足某个特定条件的情况下,continue可以使循环忽略任何语句,而直接返回循环的顶端,开始下一次重复。

16.程序控制语句:next语句:从输入文件中读取下一行,然后从头开始执行awk脚本

       `                               exit语句:用于结束awk程序。它终止对记录的处理,但是不会略过END模块

17.数组:awk中数组的下标可以是数字和字母,所以称为关联数组。可用域值作为数组的下标:for(index_value in array) statement

18.split函数:awk的内建函数split允许你把一个字符串分割成单词并存储在数组中。

                              太奇怪了!用split分出的数组竟然是从[1]开始的……

19.awk的命令参数处理:

         ARGV:包括命令行的数组,这个数组从0开始……

         ARGC:包含命令行参数个数的变量。

20.awk内建函数:

字符串函数:sub和gsub函数:sub(regularexpression,substitution string);

                                                            sub(regular expression,substitution string,target string);

                              gsub函数使得在所有正则表达式被匹配时都发生替换。

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

length函数:返回没有参数的字符串的长度。length{string} length

substr函数:返回从位置1开始的字符串的子字符串。

substr(string,startingposition)

substr(string,startingposition,length of string)

match函数:返回在字符串中正则表达式位置的索引,如果找不到正则表达式就返回0:match(string,regular expression),match函数设置变量RSTART为正则表达式第一次被匹配的位置,RLENGTH设置为子字符串的长度。

toupper和tolower函数:在字符串中转换大小写:toupper{string}                                              tolower{string}

     时间函数:systime函数:返回从1970年一月一日开始到当前时间(不计闰年)的整秒数          strftime函数:使用c库中的strftime函数格式化时间。格式说明符的格式是%T或%D等等,例如:strftime(“format specification”,systime())

  内建数学函数,整数函数int

     随机数发生器:rand函数,产生一个大于等于0而小于1的随机数。

                                   srand函数:没有参数的srand函数用时间作为rand函数的种子。srand(x)则用x作为种子,在程序运行过程中,x应当是不断变化的……例如:

     awk ‘BEGIN{srand()};{printrand()}’ filename  每次rand都打印不同的值

21.自定义函数:

       function name (parameter,parameter,parameter,……){

              statements

              return expression

              }

22.域相关:可用substr函数来建立域

                         FIELDWIDTHS变量:此变量的值是以空格分隔的数字列表,列表中的每个数字都表示相应的域的宽度。

23.用set和shopt的命令来设置bash的选项

       set –o选项:打开选项开关 set +o 选项:关闭选项开关

       shopt –s 选项:打开选项开关 shopt –u 选项:关闭选项开关  shopt –p:查看

24.hash命令:控制内部哈希表,存储使用过的命令,用hash –r删除

25.source或点命令:在当前shell环境下执行脚本,不会启动新进程。

26.改变命令行的处理顺序:三个命令:command builtin和enable

27.作业(进程)控制:可通过键入Ctrl-Z将前台进程挂起到后台,用jobs命令列出所有后台进程,用fg命令将后台程序送到前台执行。用%n指出作业号,用kill关闭作业

28.历史命令:history

                                 fc:从历史列表中选择命令、在vi等编辑器中编辑命令

29.重新执行历史命令(bang!bang!)要执行命令列表中的命令,须使用感叹号(称为bang)。如果你用两个感叹号(!!)bang,bang,则将重新执行历史列表中最后的指令。如果你在感叹号后跟一个数字,将执行该数字制定的命令(用history查命令对应的数字)

30.别名:是用户对命令定义的缩写,通常在.bashrc文件中设置,可用alias命令列出别名和创建别名,用unalias命令删除别名。

31.管理目录栈:

       dirs内置命令:带-l选项的内置命令dirs以全路径名的格式显示目录栈。

       pushd和popd命令:将目录入栈或出栈

32.元字符(通配符)

                                           
 

元字符

 
 

含义

 
 

\

 
 

按文本含义解释后面接着的字符

 
 

&

 
 

在后台运行进程

 
 

 
 

命令分隔符

 
 

$

 
 

变量替换

 
 

 
 

匹配一个字符

 
 

[abc]

 
 

匹配一个字符集中的一个字符;如a、b、c

 
 

[!abc]

 
 

匹配一个字符集外的一个字符

 
 

*

 
 

匹配零或多个字符

 
 

(cmds)

 
 

在子shell中执行命令

 
 

{cmds}

 
 

在当前shell中执行命令

 

33.变量:可用declare设置变量  declare variable=value (注意:等号两边不能留空格)

                                                                       echo $$(双美元符号相当于当前shell的PID)

34.环境变量:是能为创建它的shell及其派生子进程所用的变量,也成为全局变量。一般为大写可用过export命令导出

设置环境变量:export variable=value

                                 variable=value;exportvariable

                                 declare –xvariable=value

35.exec命令和重新定向:exec命令可以替换当前程序而不需要启动一个新的进程。

36.bash Shell脚本编程:

         第一行:#!/bin/bash      #!被称为魔术数字(magic number),用于供内核确认那个程序将翻译并执行这个脚本。该行必须在你的脚本的第一行

37.命令替换:要在字符串中输出命令时用以下格式:

                              $(linux command)

38.读取用户输入:用read命令

39.数学计算:

         整数:用declare –inum声明一个整数,不能将小数赋值给整数

         表达和使用不同的进制:variable=base#number-in-that-base

         let命令:用来做数学计算和数字表示法检测

40.if命令

         ifcommand

         then

                   command

         fi

41.if/elif/else命令:if command

                                        then

                                                        command(s)

                                        elif command

                                        then

                                                        command(s)

                                        else

                                                   command(s)

                                        fi

42.null命令:用冒号(:)表示,是一个内建的什么都不做的命令,返回状态值为0。通常null命令作为loop命令的参数来建立一个无限循环。

43.case命令:一个多路分支判断语句,可以用来替换if/elif结构

         casevariable in

         value1)

                   command(s)

                   ;;

         value2)

                   command(s)

                   ;;

         *)

         command(s)

                   ;;

         esac

44.for命令:用于根据项目清单确定的次数执行命令。

         forvariable in word_list

         do

                   command(s)

         done

45.while命令:判断它后面的命令如果退出状态值是0,就执行循环体内的命令,直到done

         whilecommand

         do

                   command(s)

         done

46.until命令:和while命令类似,只是在until后面的语句为假的时候执行循环体,当退出状态值为0时,循环退出,程序从done后面继续

         untilcommand

         do

                   command(s)

         done

47.select命令和菜单:一个数字化的菜单显示在标准错误上,PS3用来提示用户输入。shell就等待用户输入。输入的是该菜单中的数字,若输入被保存在制定变量REPLY中,则变量REPLY中的数字与括号右边选项清单中的字符串有对应关系。

48.shift命令:把参量列表位移指定次数(左移)

49.break命令:用来从循环体中强行退出,但不退出程序。

50.continue命令:如果某些条件为真,continue命令控制跳转到循环的顶部。

51.函数:functionfunction_name() { commands ; commands; }

         复位函数:使用命令unset从内存中删除函数:unset–f function_name

         输出函数:export –ffunction_name

52.函数参数和返回值:

         内建的local函数:要创建制在函数内部使用,而当函数退出时就消失的变量,可以用内建的函数local实现。

         内建的return函数:return函数可以用来退出函数并返回脚本中调用该函数的地方。

53.信号:由一个进程发送给另外一个进程的,或者在特定的键按下以后由操作系统发送给进程的,又或者在异常情况下发生的,由数字组成的非同步的消息。信号的名字例如HUP和INT通常有一个前缀SIG,例如:SIGHUP、SIGINT、SIGKILL(必杀)等等。

54.trap命令:告诉Shell根据受到的信号而以不同的方式终止当前的进程。如果trap命令后面跟着一个用引号引用的命令,则在接收到指定的信号数字后,就执行这个命令。

         trap‘command; command’ signal-number

         trap‘command; command’ signal-name

55.信号复位:在trap命令后面跟一个信号或者数字,可以把信号复位成默认动作。trap 2

56.忽略信号:如果trap命令后面跟一对空引号,列表中的信号就会被进程所忽略。trap “ “ 1

57.陷阱列表:通过键入trap命令,可以显示陷阱列表和分配给陷阱的命令清单。

58.调试:bash –xscriptname(显示选项)  bash –v scriptname(长选项)         

bash –nscriptname(解释但不执行命令)            set –x 打开跟踪

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值