文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>Linux学习日记09-shell

Linux学习日记09-shell

时间:2007-03-29  来源:junzero

几乎所有Linux高手都会告诉大家shell是个好东西,这东西用起来会很爽,办事的效率很高!同事所有的电脑初学者都会觉得,这玩意太不好玩了,用这玩意还不要死人啊!

       高手说的话往往都是对的(这似乎是对高手的迷信,但是往往事实也是这样的),所以我们还是要花些时间来学习shell!

1、  shell是什么东西?

2、  shell能做什么?

3、  shell相关知识

 

1、 shell是什么东西?

从字面上讲,它就是一个壳,这个壳将kernel(内核)给包裹起来,不会让我们轻易的触碰到kernel,以免出现危险(系统的危险,如果系统出现了问题,老板怪罪下来,你也就危险了)。

2、  shell能做什么?

在linux下面会有很多有用的指令例如ls,cat,cp等,在shell中输入这些指令,系统就会做相应的动作,所以shell做的动作是,解析你输入的内容然后传达给kernel,kernel将结果再给shell。

shell是有不同版本的,有Bourne Shell,C shell,K shell,TCSH,Bourne Again Shell(bash)。目前比较常用的是bash,是shell的增强版,它具有以下一些优点:

命令编修能力(类似DOS的doskey 功能):可以通过方向键中的上下键来快速的查看你之前输入过的指令

文件比对补全功能(比对数据正确性):可以通过<tab>键来自动补全你要输入的命令或者文件名

命令别名(alias)设定功能:可以自定义一个命令,让你自定义的命令等于另外一个命令的组合,例如alias lm=’ls -al’

工作控制(jobs)、前景背景控制:可以让程序在后台工作

Shell scripts 的强大功能:这个Shell脚本的功能真的是太强大了,只有实际用到了,才会感觉到

 

3、 shell的一些知识

下面的知识点是关系到shell的:

a、环境变量

在linux下有个东西很重要,那就是环境变量!环境变量有什么用?环境变量是用一个符合来代替一些设置或者一串数据,这些东西可能在系统操作中要用到。使用了环境变量之后,很多操作就不用去人工指定一些设置了,例如我可以设置一个环境变量叫做MYTEST,并给它复制为/home/jun/test/,这样我如果要往这个目录里放文件,就不用输入全路径了,只要输入环境变量就行了,下面是例子:

常用的环境变量:PATH、HOME、MAIL、SHELL,有了这个环境变量,那如何知道这个变量的值。很简单,通过echo $<变量名>,可以输出变量信息!

这是显示指定的环境变量,那如果我想了解我这个系统中有些什么环境变量怎么办,可以使用env和set来查看:

env:显示系统中的环境变量

set:显示所的变量

下面是截图:

在这里有两个变量很特别,’$’和’?’,他们都是什么意思,可以从上图的最后3行看出:

$-----目前shell的PID,(PID是什么?进程的标识,唯一的)

?-----最后一个命令的回传值,若之前的命令被正确执行则回传0,否则会回传1或者其它错误代码。

 

接下来是如何设置环境变量:

       没种游戏都有其自己的规则,环境变量的设置也有其自己的规则:

1. 变量与变量内容以等号『=』来连结;

2. 等号两边不能直接接空格符;

3. 变量名称只能是英文字母与数字,但是数字不能是开头字符;

4. 若有空格符可以使用双引号『 " 』或单引号『 ' 』来将变量内容结合起来,但须要特别留意,

双引号内的特殊字符可以保有变量特性,但是单引号内的特殊字符则仅为一般字符;

5. 必要时需要以跳脱字符『 \ 』来将特殊符号(如Enter, $, \, 空格符, '等)变成一般符号;

6. 在一串指令中,还需要藉由其它的指令提供的信息,可以使用 quote 『 `command` 』;(请注意:这个“`”是数字‘Esc‘下面的那个字符,放大的效果是“`”)

7. 若该变量为扩增变量内容时,则需以双引号及 $变量名称如:『 "$PATH":/home』继续累加

内容;

8. 若该变量需要在其它子程序执行,则需要以 export 来使变量可以动作,如『export PATH』;

9. 通常大写字符为系统预设变量,自行设定变量可以使用小写字符,方便判断(纯粹依照使用

者兴趣与嗜好);

10.取消变量的方法为:『unset 变量名称』。

下面是截图:

以上的例子动手试试就明了了!

 

了解了规则之后,看看这个export的用处,因为它似乎很重要:

       export 可以将一般自订的变量变成环境变量!

单独输入export,不带参数的话,可以输出所有的环境变量信息。

 

当然设置好的环境变量如果不想用了,还是可以删掉的:unset 变量  (不用加$,不过你可以尝试着加上$试试效果)

 

变量的有效范围:

       如果不使用export,直接定义变量,那么此变量只在当前shell中有效,而在子进程或者其它shell中将不起作用。但是使用了export之后,此变量将变成系统的环境变量,在其它shell进程中都将有效!

 

可以多了解一下下面的东西:

       read、array、$RANDOM、eval

 

在使用shell的时候会涉及到一些关于shell的设置文档:

/etc/profile:该文件设置了几个重要的变量,包括PATH、USER、MAIL、HOSTNAME、HISTSIZE、umask等。

/etc/bashrc:规划umask的功能,和提示字符的内容;(umask的作用是在创建新文件或者目录的时候,屏蔽掉新文件或目录不应有的访问权限)

/etc/man.config:该文件其实跟bash shell没有什么关系,可是它指定了man的路径

 

跟个人设置有关的设置文档:

       以下的[~]代表的是个人的home目录

       ~/.bash_profile:定义了个人化的路径。例如可以在这里面设置自己要用到的PATH。

       ~/.bashrc:可以在这个文件里面随自己的喜好设置一些自己的环境变量。

       ~/.bash_history:用来记录你的操作历史

       ~/.bash_logout:定义了在你注销shell时要做的一些后续动作。

 

这些设置文件都是在登录和注销的时候才去读取的,那如果在登录后,改变了这样的文件,又要马上生效,该怎样做?这边有source指令可以完成这样的功能!

 

在Bash中往往会用到一些万用字符和特殊字符,如下表:

简单的例子:

(上图取自《鸟哥的linux私房菜》)

 

Shell下连续指令的使用方式:

command1;command2

       用‘;’格开,代表不管command1的结果如何,都执行command2

command1&&command2

       command1执行正确才执行command2

command1 || command2

       command1执行错误了才执行command2

 

Shell下的相对路径与绝对路径:

       绝对路径: 从根目录一直延续到文件或指令所在目录,这些目录都要输出。

       相对路径: 知道了当前的路径,或者环境变量中设置的路径,要追溯到文件而不需要输出其全部路径就可以找到。

[.]和[..]分别代表[当前路径]和[上一级路径]

 

命令重定向

       就是将命令执行的结果重新转移到其它指定的地方。

       几种标准的输入输出状况:

1. 标准输入;代码为 0 ;或称为 stdin ;使用的方式为 <

2. 标准输出:代码为 1 ;或称为 stdout;使用的方式为 1>或者>

3. 错误输出:代码为 2 ;或称为 stderr;使用的方式为 2>

基本指令格式:

例子:

几种常用的重定向符号含义:

• < :由 < 的右边读入参数档案;

• > :将原本由屏幕输出的正确数据输出到 > 右边的 file ( 文件名称 ) 或 device ( 装置,如printer )去;

• >> :将原本由屏幕输出的正确数据输出到 >> 右边,与 > 不同的是,该档案将不会被覆盖,而新的数据将以『增加的方式』增加到该档案的最后面;

• 2> :将原本应该由屏幕输出的错误数据输出到 2> 的右边去。

• /dev/null :可以说成是黑洞装置!

 

管道命令:

       就是一些指令协同工作,跟连续指令不同。例如:

      

       它会将last的结果做grep root处理,处理后的结果再作为wc -l的输入,最后得出结果。

 

一些基本的用于管道方式的指令:

       cut、sort、wc、uniq、tee、tr、split

相关阅读 更多 +
排行榜 更多 +
盛世天下手游下载

盛世天下手游下载

角色扮演 下载
新仙魔九界官网下载手机版

新仙魔九界官网下载手机版

角色扮演 下载
大神捕鱼官网安卓版下载

大神捕鱼官网安卓版下载

休闲益智 下载