老头子的博客  2018年04月20日 星期五

手机版

Bash的基本功能

一、命令别名与快捷键

什么是别名

命令的别名==人的小名

查看与设定别名

alias

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

运行效果如下:

<span style="font-size:14px;">[root@localhost ~]# alias
alias cp='cp -i'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'</span>


alias 别名="原命令"

#设定命令别名(临时生效)

别名永久生效与删除别名

vi ~/.bashrc

#写入环境变量配置文件


unalias 别名

#删除别名

命令生效顺序

第一顺位执行用绝对路径或相对路径执行的命令。

第二顺位执行别名。

第三顺位执行Bash的内部命令。

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

常用快捷键


ctrl+c强制终止当前命令
ctrl+l清屏
ctrl+a光标移动到命令行首
ctrl+e光标移动到命令行尾
ctrl+u从光标所在位置删除到行首
ctrl+z把命令放入后台
ctrl+r在历史命令中搜索


二、历史命令

历史命令

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

选项:

-c:清空历史命令(建议不要清空)

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

历史命令默认会保存1000条,可以再环境变量配置文件/etc/profile中进行修改

历史命令的调用

使用上、下箭头调用以前的历史命令

使用"!n"重复执行第n条历史命令

使用"!!"重复执行上一条命令

使用"!字串"重复执行最后一条以改字串开头的命令

命令与文件补全

在Bash中,命令与文件补全是非常方便与常用的功能,我们只要在输入命令或文件时,按"Tab"键就会自动进行补全

三、输出重定向

标准输入和输出


设备设备文件名文件描述符类型
键盘/dev/stdin0标准输入
显示器/dev/sdtout1标准输出
显示器/dev/sdterr2标准错误输出


输出重定向


类型符号作用
标准输出重定向命令 > 文件以覆盖的方式,把命令的正确输出
输出到制定的文件或设备当中。

命令 >> 文件以追加的方式,把命令的正确输出
输出到制定的文件或设备当中。
标准错误输出重定向错误命令 2>文件以覆盖的方式,把命令的错误输出
输出到制定的文件或设备当中。

错误命令 2>>文件以追加的方式,把命令的错误输出
输出到制定的文件或设备当中。
正确输出和错误输出同时
保存
命令 > 文件 2>&1以覆盖的方式,把正确输出和错误输出
都保存到同一个文件当中。

命令 >> 文件 2>&1以追加的方式,把正确输出和错误输出
都保存到同一个文件当中。

命令 &>文件以覆盖的方式,把正确输出和错误输出
都保存到同一个文件当中。

命令 &>>文件以追加的方式,把正确输出和错误输出
都保存到同一个文件当中。

命令>>文件1 2>>文件2把正确的输出追加到文件1中,把错误的输
出追加到文件2中。



例如:

<span style="font-size:14px;">[root@localhost ~]# ifconfig > test.log
[root@localhost ~]# cat test.log 
eth0      Link encap:Ethernet  HWaddr 00:0C:29:21:11:53  
          inet addr:192.168.154.108  Bcast:192.168.154.154  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fe21:1153/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:294 errors:0 dropped:0 overruns:0 frame:0
          TX packets:151 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:25112 (24.5 KiB)  TX bytes:26837 (26.2 KiB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)</span>
<span style="font-size:14px;">[root@localhost ~]# cat test.log >> access.log 2>>error.log
[root@localhost ~]# cat test.log 
anaconda-ks.cfg
install.log
install.log.syslog
test.log
[root@localhost ~]# cat a
access.log       anaconda-ks.cfg  
[root@localhost ~]# cat access.log 
anaconda-ks.cfg
install.log
install.log.syslog
test.log
[root@localhost ~]# cat yun >> access.log 2>>error.log
[root@localhost ~]# cat access.log 
anaconda-ks.cfg
install.log
install.log.syslog
test.log
[root@localhost ~]# cat error.log 
cat: yun: 没有那个文件或目录
</span>

注意:数字2和>号之间不能有空格。

无论命名的执行过程,直接丢弃

<span style="font-size:14px;">[root@localhost ~]# ls &>/dev/null</span>

输入重定向

<span style="font-size:14px;">[root@localhost ~]# wc [选项][文件名]</span>

选项:

-c:统计字节数

-w:统计单词数

-l:统计行数

命令<文件把文件作为命令的输入

命令<<标识符

....

标识符把标识符之间内容作为命令的输入


四、多命令顺序执行

多命令顺序执行


多命令执行
格式
作用
;
命令1;命令2
多个命令顺序执行,命令之间没有任何逻辑联系
&&
命令1&&命令2
逻辑与
当命令1正确执行,则命令2才会执行
当命令1执行不正确,则命令2不会执行
||
命令1||命令2
逻辑或
当命令1执行不正确,则命令2才会执行
当命令1正确执行,则命令2不会执行


管道符

命令格式:

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

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

五、Shell中特殊符号

通配符


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



Bash中其他特性符号


符号
作用
''
单引号。在单引号中所有的特殊符号,如"$"和"`"(反引号)都没有特殊含义。
""
双引号。在双引号中特殊符号都没有特殊含义,但是"$"、"`"和"\"是例外,拥有"调用变量的值"、"引用命令"和"转义符"的特殊含义。
``
反引号。反引号括起来的内容是系统命令,在Bash中会先执行它。和$()作用一样,不过推荐使用$(),因为反引号非常容易看错。
$()
和反引号作用一样,用来引用系统命令。
#
在Shell脚本中,#开头的行表示注释。
$
用于调用变量的值,如需要条用变量name的值时,需要用$name的方式得到变量的值。
\
转义符,跟在\之后的特殊符号将失去特殊含义,变为普通字符。如\$将输出"$"符号,而不当做事变量引用





标签:
上一篇: Shell基础
下一篇: ISO/OSI七层模型

发表评论:

*