shell 资料

*shell

查看可以使用哪种shell语言

vi /etc/shells

echo 可以实现复杂的输出格式控制展示在控制台

控制字符作用
\a输出警告音
\b退格键,就是向左删除键
\n换行
\r回车
\t制表符,就是Tab键
\v垂直制表符
\Onnn按照ASCII码输出,0为数字,nnn是三位八进制数
\xhh按照16进制输出

示例:

echo "$name It is a test"	输出OK It is a test
echo `date`					输出Thu Jul 24 10:08:46 CST 2014
echo '$name\"'				输出$name\"
echo -e "\e[1;31m 中文输出字体变色 \e[0m"
echo -e "\e[1;33m 中文输出字体变色 \e[0m"		33代表一种颜色

注释使用#   但#!/bin/bash是固定语法

执行脚本

chmod 777 shell.sh
./shell.sh
bash shell.sh    #通过bash调用脚本

## alias   设置指令的别名

语  法:alias 别名= '指令名称'      (**只对当前有效,重启之后就无效了**)

alias egrep='egrep --color=auto'
alias vi = 'vim'  
alias		查看系统中所有的命令别名
unalias vi		#删除别名

vi ~/.bashrc    #写入环境配件,永久生效

## 常用快捷键

Ctrl+L    清屏

Ctrl+A    光标移动到命令行首

Ctrl+E    光标移动到命令行尾

Ctrl+U    从光标所在位置删除到行首

Ctrl+Z    把命令放入后台

Ctrl+R    在历史命令中搜索

History			查看历史命令
-c				清除历史命令
-w				将历史命令保存到.bash_history文件中
ls -alh			进入文件目录
!字串			   重复执行最后一条以该字串开头的命令
!!				重复执行上一条命令
!n				重复执行第n条历史命令

## 输出从定向

类型符号作用
正确输出重定向>覆盖的方式,把正确的信息输出到指定文件
>>追加的方式
错误输出重定向2>覆盖的方式 ,错误的信息
2>>追加的方式,,错误的信息
正确错误同时2>&1命令>文件名2>&1 同理 &>
命令>>文件名2>&1 同理 &>>
命令>>文件1 2>>文件2正确的放到文件1错误的放到文件2

​​​​​​​注意:大于号左右不能有空格

ifconfig >> test.log		#把查到的记录放到test.log文件
cat test.log
ifconfig &>>test.log
ls &>/dev/null			#命令的结果不展示

多命令顺序执行

;命令1;命令2多个命令顺序执行
&&命令1&&命令2命令1执行正确命令2才会执行
||命令1||命令2命令1执行错误命令2才会执行
|命令1 | 命令2命令1的正确输出作为命令2的操作对象
date; tar -zcvf etc.tar.gz /etc; date
ls && pwd
ls && echo yes || echo no
ls -l /etc | more
netstat -an | grep ESTABLISHED | wc -l		#统计连接人数1

通配符

ls et*			#列出所有带et的文件
ls et?			#?只匹配et后面一个字符的文件
ls et[0-9]		#匹配et后面带0到9的数字一位数
ls et[0-9][0-9] #匹配et后面带0到9的数字两位数
ls et[^0-9]		#除数字以外的

正则表达式与通配符

正则表达式用来在文件中匹配符合条件的字符串,正则是包含匹配. grep    awk    sed等命令可以支持正则表达式.

gerp "name" log.logl		#列出log文件中带有name的名字的整行

通配符用来匹配符合条件的文件名,通配符是完全匹配,ls    find    cp这些命令不支持正则表达式,所有只有使用shell自己的通配符来进行匹配了

find . -name "aa*"		#寻找带有aa文件名的文件

基础正则表达式

vim .bashrc			#设置别名文件
alias grep ='grep --color=auto'			#匹配到的字符高亮展示
source .bashrc		#加载修改后的设置,使之生效
元字符作用
*前一个字符匹配0次或任意多次
.匹配除了换行符外任意一个字符
^匹配行首
$匹配行尾
[]匹配中括号中任意一个字符
[~]匹配除中括号的字符意外的任意字符
\转义符
\{n\}表示其前面的字符恰好出现n次

"a" 匹配所有内容,包括空白行

"aa*" 匹配至少包含有一个a的行

"aaa*" 匹配最少包含两个连续a的字符串

"aaaaa*" 匹配最少包含四个连续a的字符串

a..d 会匹配在a和d这两个字母之间有两个字符的字符串

a.*d 匹配在a和d之间任意字符

.* 匹配所有内容

grep "[ad]" test.txt		#包含ad这两个字符的
grep "[0-9]" test.txt		#包含所有数字的
grep "^[0-9]" test.txt		#首行是数字的
grep "[0-9]$" test.txt		#尾行是数字
grep "^[^a-z]" test.txt		#取不是字符的
grep "^[^0-9]" test.txt		#取不是数字的
^[^a-z]		#匹配不用小写字符开头的行 [^]内的是取反
[]中括号外的^是取反
#!/bin/bash
#提示“请输入名字”并等待30秒,把用户的输入保存到变量name中
read -t 30 -p “Please input your name:” name
echo "name is $name"
#-s:隐藏输入的数据,适用于机密信息的输入
read -s -t 30 -p “Please enter your password:” password
#执行函数
readFileFun
function readFileFun() {
    #如果gitProject.txt文件不存在
	if [ ! -f gitProject.txt ];then
	echo " gitProject.txt  is not  exist, Please set project file "
	return 0;
fi
  cat gitProject.txt | while read line  
 
}

条件表达式

文件表达式

if [-f file]		#如果文件存在
if [-d ...]			#如果目录存在
if [-s file]		#如果文件存在且非空
if [-r file]		#如果文件存在且可读
if [-w file]		#如果文件存在且可写
if [-x file]		#如果文件存在且可执行

整数变量表达式

if [int1 -eq int2]		#如果int1等于int2
if [int1 -ne int2]		#如果不等于
if [int1 -ge int2]		#如果>=
if [int1 -gt int2]		#如果>
if [int1 -le int2]		#如果<=
if [int1 -lt int2]		#如果<

字符串变量表达式

​​​​​​​

if [$a = $b]		#如果等于,字符串允许使用赋值号做等号
if [-n 	$a]			#如果a非空(非0),返回0(true)
if [-z $a]			#如果a为空

示例:

echo "$name It is a test"   输出OK It is a test
echo `date`                 输出Thu Jul 24 10:08:46 CST 2014
echo '$name\"'              输出$name\"
echo -e "\e[1;31m 中文输出字体变色 \e[0m"
echo -e "\e[1;33m 中文输出字体变色 \e[0m"       33代表一种颜色

注释使用# 但#!/bin/bash是固定语法

执行脚本

chmod 777 shell.sh
./shell.sh
bash shell.sh    #通过bash调用脚本

alias 设置指令的别名

语  法:alias 别名= '指令名称' (只对当前有效,重启之后就无效了

alias egrep='egrep --color=auto'
alias vi = 'vim'  
alias       查看系统中所有的命令别名
unalias vi      #删除别名
vi ~/.bashrc    #写入环境配件,永久生效

常用快捷键

Ctrl+L 清屏

Ctrl+A 光标移动到命令行首

Ctrl+E 光标移动到命令行尾

Ctrl+U 从光标所在位置删除到行首

Ctrl+Z 把命令放入后台

Ctrl+R 在历史命令中搜索

History         查看历史命令
-c              清除历史命令
-w              将历史命令保存到.bash_history文件中
ls -alh         进入文件目录
!字串            重复执行最后一条以该字串开头的命令
!!              重复执行上一条命令
!n              重复执行第n条历史命令

输出从定向

类型符号作用
正确输出重定向>覆盖的方式,把正确的信息输出到指定文件
>>追加的方式
错误输出重定向2>覆盖的方式 ,错误的信息
2>>追加的方式,,错误的信息
正确错误同时2>&1命令>文件名2>&1 同理 &>
命令>>文件名2>&1 同理 &>>
命令>>文件1 2>>文件2正确的放到文件1错误的放到文件2

注意:大于号左右不能有空格

ifconfig >> test.log        #把查到的记录放到test.log文件
cat test.log
ifconfig &>>test.log
ls &>/dev/null          #命令的结果不展示
​

多命令顺序执行

;命令1;命令2多个命令顺序执行
&&命令1&&命令2命令1执行正确命令2才会执行
||命令1||命令2命令1执行错误命令2才会执行
|命令1 | 命令2命令1的正确输出作为命令2的操作对象

date; tar -zcvf etc.tar.gz /etc; date
ls && pwd
ls && echo yes || echo no
ls -l /etc | more
netstat -an | grep ESTABLISHED | wc -l      #统计连接人数1

通配符

ls et*          #列出所有带et的文件
ls et?          #?只匹配et后面一个字符的文件
ls et[0-9]      #匹配et后面带0到9的数字一位数
ls et[0-9][0-9] #匹配et后面带0到9的数字两位数
ls et[^0-9]     #除数字以外的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

feng_zi-06

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值