1.3 shell脚本
使用shell脚本的原因
功能强大 脚本文件后缀名为 .sh
节约时间
shell脚本基本格式(语法)
!/bin/bash #(第一行是头,不是注释)
shell脚本 #(这一行是注释!!!)
mytext=”hello world”
echo $mytext;
注意初学者易犯错误:
1) 脚本文本头,第一行#!不是注释 其他#都是注释;
2) echo $mytextA;写错现象;
3) 写错现象#!bin/bash 路径/bin/bash告诉当前shell脚本调用bash命令解释器。
4) 脚本如果没有执行权限 chmod 111 01hello.sh,如何办
5) chmod u+x 01hello.sh chmod u-x 01hello.sh
shell脚本运行方式
./01shell.sh $PATH
如果不能运行(权限不够),则可通过chmod a+x 01shell.sh ,增加执行权限。
1.4shell特性
简介:别名、管道、命令替换、重定向、后台处理、模式匹配、变量、特殊字符
别名
alias 查看本用户下的alias配置
[test@localhost ~]aliasaliasl.=′ls−d.∗–color=tty′aliasll=′ls−l–color=tty′aliasls=′ls–color=tty′aliasvi=′vim′aliasll=′ls–l′(ll就是ls−l的别名)aliaswhich=′alias|/usr/bin/which–tty−only–read−alias–show−dot–show−tilde′[test@localhost ]
自定义别名: alias ll = ‘ls -alh’
alias ll = ‘ls –I –color=tty’
cat $HOME/.bashrc 在这个用户下配置着alias命名的配置
命令替换
ls cat myfile
–alh 通过单反引号,把’cat myfile’的内容输出 传给ls命名
注意反单引号,在键盘的~符号的下方。也就是在键盘左上角 ESC键的下边
后台处理
什么是后台:
nohup command & 把当前命令(command)真正切换到后台(&是标记)
例如: ./app 该app在前台运行,按enter键,则会导致程序stop.
nohup ./app & 该app将在后台运行,不影响前台程序。
一个终端可以同时运行多个程序
nohup tar –cvf 111.tar.gz & 可以同时运行多个大文件压缩
jobs –l 可以查看后台正在运行的命令
管道
把一个命令的输出作为另外一个命令的输入
ls -l | sort; ls | sort
ps -aux | grep httpd 从众多进程中查找指定的进程,并显示,这里是查看http进程。
重定向: < 输入 > 输出
与管道相关,可以改变程序运行的输入来源和输出地点
sort< myfile.txt
sort < myfile.txt > myfile+sort.txt
ls –l > out.txt 将目录文件信息写入out.txt中
模式匹配
显示以txt为扩展的文件或者显示以a开头的文件,这种能力叫做模式匹配
正则表达式
特殊字符
双引号(“”): 用来使shell无法认出空格、制表符和其他大多数特殊字符.
比如:建立一个带空格的文件touch “w b m”,生成一个文件,文件名为 w b m;
touch w b m,则生成三个文件,分别为w、b、m.
单引号(‘): 用来使shell无法认出所有特殊字符,不进行特殊字符的替换。
VAR = 123 ; echo VAR #输出123 ; echo ‘VAR’ #输出$VAR
反引号(): 用来替换命令,告诉shell,
command中command是命令。
ls -l` 执行ls -l命令,输入串目录信息。
echo ls -l 输出ls -l ; echo
反斜杠(): 用来使shell无法认出的特殊字符,使其后的字符失去了特殊的含义,转义字符。eg:创建带空格文件名 touch my\ file
touch my\text ,不会创建新文件,因为\t是制表符,不符合文件名。
分号(;): 允许在一行上放多个命令。mv 1.txt 2.txt; mv 2.txt 3.txt;
&:命令后台执行
括号( ):创建成组的命令
大括号{ }:创建命令块。
竖杠(|): 管道标示符
< > &:重定向表示符
* ? [ ] !:表示模式匹配
:变量名的开头,使用定义的变量才使用,声明变量不在前面加
#: 表示注释(第一行除外)
空格、制表符、换行符:当作空白