bash特性

一些关于bash的特性和用法

1.光标跳转

  ctrl+a:跳到命令行首    ctrl+e:跳到命令行尾
  ctrl+u:删除光标至行首   ctrl+k:删除光标至行尾
  ctrl+←:向左跳一个单词    ctrl+→:向右跳一个单词 
  ctrl+l:清屏,clear 

2.命令历史

  用户每输入一次命令,都会被记录到命令历史中,命令历史默认记录的条数为1000条,暂存于内存中,当用户退出bash后,命令历史会被记录到用户家目录下的.bash_history文件下

[root@localhost ~]# echo $HISTSIZE    命令历史缓冲区默认大小
1000
[root@localhost ~]# ls -la .bash_history   命令历史保存文件
-rw-------. 1 root root 1388 Dec 25 13:49 .bash_history

  history:查看命令历史
    -c:清空命令历史
    -d:删除指定序号的命令历史

[root@bogon ~]# history -d 66
代表删除第66条命令历史
[root@bogon ~]# history -d 66 3
代表删除第66条命令历史后后面的2个

     -w:保存命令历史到历史文件

  命令历史的使用技巧:

    !n:执行命令历史中的第n条命令

    !-n:执行命令历史中的倒数第n条命令;感觉这个并不好用,可以用↑键去找

    !!:执行上一条命令;这个也不好用,直接用上↑键就可以

    !STRING:执行命令历史中最近一个以指定字符串开头的命令

    !$:引用前一个命令的最后一个参数。或者也可以使用“按下ESC松开之后按‘.’”ESC .

   

 3.命令别名

  命令别名可以快速的执行一段长命令,或者你不习惯使用某个命令,可以直接定义命令别名来代替他。可以通过alias来查看所有已经定义的命令别名。

  alias 别名='原命令 [选项] [参数]'      定义命令别名

  unalias 别名             取消命令别名

  命令                 直接使用原始命令

4.命令替换、变量替换

  在一些时候,执行命令的时候,可能需要另一个命令的支持,例如我要新建一个现在时间的文件,命令替换可以用$()或反引号``完成。

[root@bogon test]# touch $(date +%y-%m-%d-%H-%M-%S).doc
[root@bogon test]# ls
17-12-27-00-27-15.doc
可以使用$()
[root@bogon test]# touch `date +%y-%m-%d-%H-%M-%S`.doc
[root@bogon test]# ls
17-12-27-00-27-15.doc  17-12-27-00-29-54.doc
也可以使用``反引号

  变量替换可以使用${}完成,当不影响调用变量名称时,大括号{}可以省略

[root@bogon ~]# a=bbb
[root@bogon ~]# echo $a ;echo $aa ;echo ${a}a
bbb

bbba

 5.引号

三种引号的用法

` `:命令替换,$()同样可以使用命令替换
" ":弱引用,变量替换
' ':强引用,不完成变量替换

6.文件名通配符

通常在查找文件时,不能准确描述文件名,但知道文件名格式,可以用通配符来查找

*:匹配任意长度任意字符
?:匹配任意单个字符
[ ]:匹配中括号内的单个字符
[^ ]:匹配除了括号内的任意单个字符

  [0-9]        [[:digit:]]    数字
  [a-z]        [[:lower:]]  小写字母
  [A-Z]       [[:upper:]]  大写字母
  [a-zA-Z]     [[:alpha:]]  大小写字母
  [a-zA-Z0-9]     [[:alnum:]]  数字和大小写字母
          [[:space:]]  空白字符
          [[:punct:]]  标点符号

    

 7.bash配置文件

全局配置文件:/etc/profile,/etc/bashrc和(etc/profile.d/*.sh这里面是各种shell脚本)
个人配置文件:~/.bash_profile,~/.bashrc

profile类文件用来在登入系统时设定环境变量,运行命令或脚本的
bashrc类文件是用来登入系统时设定本地变量,定义命令别名的

登录式shell读取配置文件过程:
  /etc/profile->/etc/profilce.d/*.sh->~/.bash_profile->~/.bashrc->/etc/bashrc
非登录式shell读取配置文件过程:
  ~/.bashrc->/etc/basrc->/etc/profile.d/*.sh
最终都是以个人shell为标准

8.输入输出重定向

>:覆盖输出
>>:追加输出

2>:错误覆盖输出
2>>:错误追加输出

&>:正确错误都输出到一个文件

[root@bogon ~]# ls -l > a 2> b
##这样正确输出给a,错误输出给b

可以用set -C禁止对已经存在文件使用覆盖重定向,强制覆盖输出使用>|  ,用set +C关闭上述功能。

<:输入重定向

[root@localhost ~]# tr 'a-z' 'A-Z' < a
ABCEDFG

 <<:此处输入文本,后缀即为结束符

[root@localhost ~]# cat <<a
> aaa
> aa
> a
aaa
aa

 |:管道符,将前一个命令执行的结果传递给下一个命令

初学linux,每学到一点东西就写一点,如有不对的地方,恳请包涵!
原文地址:https://www.cnblogs.com/forlive/p/8119314.html