shell脚本精华总结

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1.shell做解释程序,非交互地执行脚本,两种执行方式:

用sh命令执行脚本文件sh hello.sh

给脚本文件添加执行权限,用./命令执行chmod 755 hello.sh ./hello.sh 2.vim

(1)必须从命令模式转入插入模式才能进行输入编辑,可用命令有:

新增 (append)

a :从光标所在位置后面开始新增资料

A:从光标所在行最后面的地方开始新增资料。

插入 (insert)

i:从光标所在位置前面开始插入资料

I :从光标所在行的第一个非空白字元前面开始插入资料。

开始 (open)

o :在光标所在行下新增一列并进入输入模式 O: 在光标所在行上方新增一列并进入输入模式

(2)冒号进入行命令模式,输入set nu可设置vi显示行号

:/string 搜索指定的字符串。

按键n:继续进行搜索

如果写的是斜杠(/):按n会从当前位置向后查找;如果写的是问号(?),按n键则从当前位置向前查找

查找且替换

:%s /SEARCH /REPLACE 把文档中所有SEARCH替换成REPLACE;

:#,# s /SEARCH /REPLACE /g #号表示数字,表示从多少行到多少行,把SEARCH替换成REPLACE;

:s /SEARCH /REPLACE /g 把当前光标所在行中的SEARCH单词,替换成REPLACE,并把所有SEARCH高亮显示

例题:

1. mkdir /tmp/vitest

2. cd /tmp/vitest

3. cp /etc/man.config .

4. vi man.config

5. :set nu

6. 先按下 58G 再按下40→ 会看到 /dir/bin/foo 这个字样在双引号内;

7. 先执行 1G 或 gg 后,直接输入 /bzip2

8. 直接执行 :50,100s/man/MAN/gc 即可

9. (1)简单的方法可以一直按 u 恢复到原始状态,(2)使用不储存离开 :q! 之后,再重新读取一次该文件;

10. 51G 然后再 10yy 之后按下 G 到最后一行,再p粘贴10行

11. 11G 之后,再给他 20dd即可删除 20 行了;

12. :w man.test.config

13. 29G 之后,再给他 15x 即可删除 15 个字符;

14. :wq!

#!/bin/bash 必须的,指出shell的类型

例题:

#!/bin/bash shell类型

#a simple shell script example

#a function

funciton sayhello() 函数

{

echo "Enter Your name:"

read name 读取来自键盘输入的变量

echo "Hello $name"

}

echo "programme starts here..." 主过程

sayhello

echo "programme ends."

3.符号

注释符#

除了#!/bin/bash里的#特殊

变量符与反斜杠转义符相反,使其后的普通字符作为变量名,如$a表示变量a的值。变量字符长度超过1个时,用{}括起来

单引号

被引起的字符全部做普通字符,即全部原样echo ‘my $SHELL’

双引号引号内的内容,除$、转义符\、倒引号`这三个保留特殊功能,其他字符均做普通字符。

倒引号(数字1键旁边的那个键)

引号内的字符串当做shell命令行解释执行,得到的结果取代整个倒引号括起来的部分。

反斜线

反斜线是转义字符,它能把特殊字符变成普通字符。在某个字符前面利用反斜杠(\)能够阻止shell把后面的字符解释为特殊字符。

4.本地变量在用户现在的shell生命期的脚本中使用

变量名=值

注意:

(1)等号两边不可以有空格

(2)取值包含空格,必须用双引号括起来

(3)Shell变量可以用大小写字母,区分大小写

除变量unset 变量名

举例:echo ${name} unset name (注意:name前没有$)

设置变量时,不想再改变其值,可以将之设为只读变量

变量名=值

readonly 变量名

5.环境变量

用于所有用户进程(通常称为子进程)。登陆进程称为父进程,通过pstree可以查看

设置环境变量

variable-name=value

export variable-name(环境变量名大写)

显示环境变量:

(1)env 可以看到所有的环境变量

(2)echo $环境变量名(显示一个变量)

清除环境变量 unset 环境变量名

HOME :代表使用者的家目录。cd ~ 去到使用者的家目录或者利用 cd 就可以直接回到使用者家目录了。

PS1:shell的主提示符

SHELL :目前这个环境使用的 SHELL 是哪个程序?如果是 bash 的话,预设是 /bin/bash PWD:用户当前工作目录的路径。它指出用户目前在Linux文件系统中处在什么位置。它是由Linux自动设置的

HISTSIZE :这个与“历史命令”有关,曾经下达过的指令可以被系统记录下来,而记录的“数目”则是由这个值来设定的。

ENV :这个使用者所使用的个性化环境设置文件的读取文件。 MAIL :当我们使用 mail 这个指令在收信时,系统会去读取的邮件信箱文件(mailbox)。

PATH :就是执行文件搜寻的路径,目录与目录中间以冒号(:)分隔,由于文件的搜寻是依序由 PATH 的变量内的目录来查询,所以,目录的顺序也是重要的喔。

LANG :语系文件,很多数据都会用到他,当出现编码错误的时候往往需要设置它,中文编码是zh_CN.UTF8

6.Bash的初始化文件有:/etc/profile、~/.bash_profile、~/.bash_login、~/.profile、

~/.bashrc、/etc/bashrc

/etc/profile 存放一些全局(共有)变量,不管哪个用户,登录时都会读取该文件。通常设置一些Shell变量PATH,USER,HOSTNAME和HISTSIZE等

~/.bash_profile:每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件.

~/.bashrc:该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell 时,该该文件被读取.

/etc/bashrc:为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取.

上述配置文件的作用

1)登录Linux先启动系统配置文件/etc/profile,并从/etc/profile.d目录的配置文件中搜集shell的设置,为系统的每个用户设置环境信息。

2)用户配置文件~/.bash_profile,每个用户专用于自己使用的shell信息,仅用户登录时执行一次!默认情况下,此文件通过脚本执行同目录下用户的.bashrc文件。

3)~/.bashrc文件包含专用于用户bash shell的bash信息,登录及每次打开新的shell时都会执行。里面又会调用/etc/bashrc

在/home/user/.bash_profile中定义下句,会怎样?

alias la=‘ls –a|grep “\.*”’

答:user下次再登陆,其shell会自动建立一个别名命令la,功能为查看当前目录下名字以.开头的文件。

写在~/.bash_profile中,需重新登录才能有效。除非运行source .bash_profile使其立即有效。

写在~/.bashrc中,则打开新的终端中就有效

区别:bash_profile只在会话开始的时候读取一次,而bashrc则每次打开终端时都会读取

相关文档
最新文档