A-A+

Bash的基本功能

2015年10月03日 Shell 暂无评论 阅读 3,212 views 次

《Bash的基本功能》

Shell是linux的命令解释器,把bash等命令转换为机器能读懂的二进制代码;

echo $SHELL //打印当前Shell

echo命令

echo -e "\e[1;31m hello \e[0m"

第一个脚本

Bash的基本功能
1、命令的别名
alias //查看所有已设置的别名

2、设定别名
alias 别名=‘原命令’
alias ls='ls --color=netver'

3、别名设置后重启会失效,别名永久生效与删除别名的方法
vi ~/.bashrc
例如root用户
vi /root/.bashrc
删除alias命令unalias 当然也是临时删除,彻底删除需要修改~/.bashrc
三、常用快捷键
ctrl+c 强制终止当前命令
ctrl+l 清屏
ctrl+a 光标移动到命令行首
ctrl+e 光标移动到命令行尾
ctrl+u 从光标所在位置删除到行首
ctrl+z 把命令放入后台
ctrl+r 在历史命令中搜索

四、历史命令
history
-c 清空历史命令
-w 把缓存中的历史命令写入历史命令的保存文件~/.bash_history

历史命令默认保留1000条,可以修改
vi /etc/profile 找到HISTSIZE
历史命令可以检查是否被入侵
黑客入侵成功后保存一份历史命令,入侵完毕后回复之前的历史命令

重复执行之前的命令除了大家知道的上下箭头还有:
!n重复执行之前的命令,!+历史命令编号
如:!2
!!重复执行上一条命令
!字符串,重复执行最后一条该字符串开通的命令

五、命令和文件的补全
tab键命令补全,如果按一次不补全说明有多条,那么再按一次tab就列出所有可补全的
文件路径补全方法也同上
命令补全依赖$PATH下的命令,文件补全以来当前目录下的文件名

六、输出重定向与输入重定向
输出重定向:比如本来要显示到显示器上的内容保存到文件日志。例如:
ifconfig > ifconfig.log
这里“>”大于符号就是输出重定向
就把ifconfig显示的内容保存到了ifconfig.log文件,然后cat ifconfig.log 就可以查看这个文件了
配合定时任务,这就是一把日志利器!!!
>单大于号是覆盖,>>双大于符号是追击
但是>只会记录正确的命令,如果出错了是不会记录的,那么就需要在>前加上2。(2>>),例如
ifcccccconfig 2>>test.log 注意2>>与文件名直接没有空格,与之前的不同
但是 2>>只会记录错误的,正确的又不会记录了。

所以,我们需用用下面的方法把正确和错误的输出
命令 > 文件 2>&1 以覆盖的方式把正确和错误的输出都保存到一个文件
命令 >> 文件 2>&1 以追加的方式把正确和错误的输出都保存到一个文件 *********
命令 &>文件 以覆盖的方式,把正确输出和错误输出都保存到同一个文件 *********
命令 &>>文件 以追加的方式,把正确输出和错误输出都保存到同一个文件
命令 >>文件1 2>>文件2 以追加的方式,把正确的输出保存到文件1中,把错误的输出保存到文件2中 *********

ls &>/dev/null /dev/null 是linux的黑洞,相当于垃圾筒,既不会显示到屏幕上,也不会保存到文件,我们在写脚本的时候,我们一般不看中间过程,只看结果,那么中间的过程可以丢到黑洞去
六、管道符
1、多命令顺序执行
; 命令1;命令2 多个命令顺序执行,命令之间无逻辑关系
&& 命令1&&命令2 逻辑与,当命令1正确执行才执行命令2,否则不执行命令2
|| 命令1||命令2 逻辑或,当命令1执行不正确才执行命令2,否则不执行命令2

;可用于连续执行任务,例如显示日期+把wwwroot目录打包到文件到home目录+显示时间,如下:
date ; tar -zcvg wwwroot.tar.gz /home ; date
但是这样中间有报错依然会继续执行,所以需要加入逻辑来判断
ls && echo yes || echo no

2、管道符
命令1 | 命令2
//如果命令1的正确执行那么操作结果作为命令2的操作对象,如果命令1错误不执行那么也不执行命令2

用列:
netstat -an | grep ESTABLISHED

3、通配符
可以只配其他内容的符号。
? 匹配一个任意字符
* 匹配0个或任意多个字符,也就是可以匹配任何内容
[] 匹配中括号中任意一个字符。 例如[abc],表示匹配a或b或c。
[-] 匹配中括号中任意一个字符,-代表一个范围。例如:[a-z]
[^] 逻辑非,表示匹配不是中括号内的一个字符。例如:[^0-9]表示匹配一个不是数字的字符;[^a-z]表示匹配一个非字母的字符;

4、shell的变量使用和php基本一样!
aa = 123 变量表示没有$
echo $aa
echo '$aa'
echo "$aa"
等都和php一样
注意反引号的使用,可以先执行再赋值,例如
aa = ls
echo `$aa`
或者用$(ls),例如:
bb=$(ls)
echo $bb

标签:

给我留言