shell脚本精华总结
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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则每次打开终端时都会读取