您的位置:首页 > 运维架构 > Shell

Bash的基本功能

2016-03-24 13:31 429 查看

1.命令别名与快捷键

1.1 查看与设定别名

alias:查看系统中所有命令的别名

alias 别名=’原命令’ 设定命令别名

unalias 别名 删除别名

vi ~/.bashrc 写入环境变量配置文件(永久生效)

2.命令生效顺序

1.用绝对路径或相对路径执行的命令

2.执行别名

3.执行Bash的内部命令

4.执行按照$PATH环境变量定义的目录查找顺序找到的第一个命令

3.常用快捷键

1.ctrl+c 强制终止当前命令

2.ctrl+l 清屏

3.ctrl+a 光标移动到命令行首

4.ctrl+e 光标移动到命令行尾

5.ctrl+u 从光标所在位置删除到行首

6.ctrl+z 把命令放入后台

7.ctrl+r 在历史命令中搜索

4.历史命令

history [选项] [历史命令保存文件]

选项:

-c:清空历史命令

-w:把缓存中的历史命令写入历史命令保存文件~/.bash_history

5.输出重定向

5.1 标准输出重定向(只能保存正确的命令结果)

简单的举一个例子:

加入我在linux上输入ifconfig命令:

[root@localhost ~]# ifconfig


这是会输出一堆信息!

如果我这样使用命令:

[root@localhost ~]# ifconfig > test.log


这时候在屏幕上不会输出任何信息,而是把命令结果保存在test.log的文件,只要查看test.log文件就好了!

如果我再执行一个命令,指向的输出文件还是test.log,那么将会覆盖之前得内容。

这时候我们就可以使用

[root@localhost ~]# ls >> test.log


这时候就会将ls命令的结果添加到test.log里面了,而不是覆盖。

5.2 标准错误输出重定向

只要在>和>>前面加一个2就好啦!

[root@localhost ~]# lss 2>>test.log


这里要特别注意!2>>和文件名之间是不可以有空格的,正确重定向是无所谓的!

5.3 正确输出和错误输出同时保存

例如:

正确:
[root@localhost ~]# ifconfig >> test.log 2>&1


错误:
[root@localhost ~]# ifconfigdd >> test.log 2>&1


会发现,不管命令正确或错误都写在了test.log文件中

还有一种简单的写法:

[root@localhost ~]# lsss &>>test.log


那么我如果把正确的结果和错误的结果分别输出呢!

[root@localhost ~]# cat tess >> success.log 2>>error.log


如果命令正确的话,那么结果就会写到success.log里

如果命令错误的话,那么结果就会写到error.log里

6.输入重定向

wc [选项] [文件名]

选项:

-c:统计字节数

-w:统计单词数

-l:统计行数

一个非常简单的例子:



当输入完成后按 Ctrl+D就会显示出你输入了多少个单词,多少行,多少字啦!

wc < [文件名] 统计这个文件的信息



7.管道符

7.1多命令顺序执行

(1)命令1;命令2 —多个命令顺序执行,命令之间没有任何逻辑关系

(2)命令1&&命令2 —逻辑与,当命令1正确执行,则命令2才会执行,当命令1执行不正确,则命令2不会执行

(3)命令1 || 命令2—逻辑或,当命令1执行不正确,则命令2才会执行,当命令1执行正确,则命令2不会执行

例如:

[root@localhost ~]# ls && echo yes || echo no


这句话的意思就是:

如果ls的命令正确,就会执行echo yes,echo yes执行了,那echo no就不会执行。

如果ls的命令不正确,echo yes就不会执行,echo no就会执行。

7.2管道符

命令格式:

[root@localhost ~]# 命令1 | 命令2


命令1的正确输出作为命令2的操作对象

例如:我们使用netstat -an 查看连接状态时,我们只想要看有谁连接了。

netstat -an | grep ESTABLISHED

如果我还想要统计一下有多少人连接了呢

netstat -an | grep ESTABLISHED | wc -l

8.通配符

(1)? 匹配一个任意字符

(2)* 匹配0个或任意多个任意字符,也就是匹配任何内容

(3)[]匹配括号中任意一个字符。例如:[abc]代表匹配一个字符,或是a,或是b,或是c

(4)[-]匹配括号中任意一个 字符,-代表一个范围。例如:[a-z]代表匹配一个小写字母

(5)[^]逻辑非,表示匹配不是括号内的一个字符。例如:[^0-9]代表匹配一个不是数字的字符

主要是用来匹配文件名和目录名,如果要匹配文件内容,那么就需要是会用正则表达式了。



Bash中的其他符号

(1)单引号(”)和双引号(”“)

感觉和PHP中一样,在Linux中设置一个变量。

[root@localhost ~]# aa=123
[root@localhost ~]# echo $aa


这样就能够输出变量aa了,显示结果是123

如果使用单引号:

[root@localhost ~]# echo '$aa'


那么输出的结果还是$aa

如果使用双引号:

[root@localhost ~]# echo "$aa"


那么输出结果就变成了123

(2)反引号(“)和$()

先执行命令,把命令先执行然后在赋值

例如:

[root@localhost ~]# aa=`ls`
[root@localhost ~]# echo $aa


这时候会显示ls的结果,也就是一堆目录和文件,同样也可以使用$()

[root@localhost ~]# bb=$(ls)
[root@localhost ~]# ec
4000
ho $bb


(3)#号

代表注释

(4)\代表转义符

比如当我们想要输出$aa

[root@localhost ~]# echo $aa


这样是什么也显示不出来的,因为系统自动把$aa当做了一个变量,这时候就需要使用转义符了。

[root@localhost ~]# echo \$aa


正确输出了$aa
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  bash linux