RH033 Unit 4 Bash shell

  1. bash 说明

    bash即文字模式,相当于dos下的提示字元。

    [root@localhost root]#

    C:\Users\Administrator.SD-20100125BYGO>

    全称Bourne again shell

  2. bash演变

    编译语言

    image 

  3. file globbing

    在档案里一次处理多个档案

    *代表任意

    ?代表单一字符

    [a-z]代表里面的内容

    [^a-z],代表除了里面的内容

    [root@localhost root]# mkdir /root/tmp

    [root@localhost root]# cd /root/tmp

    [root@localhost tmp]# ls

    [root@localhost tmp]# touch test1.txt test2.txt test3.txt test4.mp3 test5.mp3

    [root@localhost tmp]# ls

    test1.txt test2.txt test3.txt test4.mp3 test5.mp3

    [root@localhost tmp]# ls -l

    总用量 0

    -rw-r--r-- 1 root root 0 7月 26 16:58 test1.txt

    -rw-r--r-- 1 root root 0 7月 26 16:58 test2.txt

    -rw-r--r-- 1 root root 0 7月 26 16:58 test3.txt

    -rw-r--r-- 1 root root 0 7月 26 16:58 test4.mp3

    -rw-r--r-- 1 root root 0 7月 26 16:58 test5.mp3

    [root@localhost tmp]# ls *.txt

    test1.txt test2.txt test3.txt

    [root@localhost tmp]# ls *.mp3

    test4.mp3 test5.mp3

    [root@localhost tmp]# ls test??.txt

    ls: test??.txt: 没有那个文件或目录

    [root@localhost tmp]# ls test?.txt

    test1.txt test2.txt test3.txt

    [root@localhost tmp]# ls test[1-2].*

    test1.txt test2.txt

    [root@localhost tmp]# ls test[^1-2].*

    test3.txt test4.mp3 test5.mp3

    [root@localhost tmp]#

     

  4. tab 键

    tab补齐命令,补齐命令唯一的命令

    如果有多个命令,则需按两次TAB key。

    [root@localhost tmp]# ls

    2006 2006123 test1.txt test2.txt test3.txt test4.mp3 test5.mp3

    [root@localhost tmp]# rm 2006

    2006 2006123

    [root@localhost tmp]# rm 2006

  5. history,指令的历史功能

    输入history 查询以前使用的命令

    再使用“!序号”,执行指定序号那条命令

    [root@localhost root]# ping 61.X.X.67

    PING 61.X.X.67 (61.X.X.67) 56(84) bytes of data.

    64 bytes from 61.X.X.67: icmp_seq=1 ttl=251 time=13.3 ms

    64 bytes from 61.X.X.67: icmp_seq=2 ttl=251 time=11.0 ms

    --- 61.X.X.67 ping statistics ---

    2 packets transmitted, 2 received, 0% packet loss, time 999ms

    rtt min/avg/max/mdev = 11.087/12.221/13.355/1.134 ms

    [root@localhost root]# ^67^97[r1]

    ping 61.X.X.97

    PING 61.X.X.97 (61.X.X.97) 56(84) bytes of data.

    64 bytes from 61.X.X.97: icmp_seq=1 ttl=251 time=40.6 ms

    64 bytes from 61.X.X.97: icmp_seq=2 ttl=251 time=170 ms

    --- 61.X.X.97 ping statistics ---

    2 packets transmitted, 2 received, 0% packet loss, time 1010ms

    rtt min/avg/max/mdev = 40.689/105.399/170.110/64.711 ms

    [root@localhost root]#

    [r1]将上条命令的67更改为97执行

  6. 使用tilde ~

    使用~回到家目录,只有root账号有权限登陆到其他用户的家目录。

    [root@localhost lu]# pwd

    /home/lu

    [root@localhost lu]# cd ~

    [root@localhost root]# cd ~lu

    [root@localhost lu]# pwd

    /home/lu

    [root@localhost lu]#

  7. 使用变数和curly braces({})

    使用变数时,前面要加$

    [root@localhost root]# echo $HOME

    /root

    [root@localhost root]# cd $HOME

    [root@localhost root]#

    [root@localhost root]# echo "Hostname:$(hostname)"

    Hostname:localhost.localdomain

    [root@localhost root]#

     

    使用{}进行排列组合

    [root@localhost tmp]# touch {a,b}

    [root@localhost tmp]# ls -l

    总用量 0

    -rw-r--r-- 1 root root 0 7月 26 17:15 2006

    -rw-r--r-- 1 root root 0 7月 26 17:15 2006123

    -rw-r--r-- 1 root root 0 7月 26 22:54 a

    -rw-r--r-- 1 root root 0 7月 26 22:54 b

    -rw-r--r-- 1 root root 0 7月 26 16:58 test1.txt

    -rw-r--r-- 1 root root 0 7月 26 16:58 test2.txt

    -rw-r--r-- 1 root root 0 7月 26 16:58 test3.txt

    -rw-r--r-- 1 root root 0 7月 26 16:58 test4.mp3

    -rw-r--r-- 1 root root 0 7月 26 16:58 test5.mp3

    [root@localhost tmp]# touch a{a,b}

    [root@localhost tmp]# ls -l

    总用量 0

    -rw-r--r-- 1 root root 0 7月 26 17:15 2006

    -rw-r--r-- 1 root root 0 7月 26 17:15 2006123

    -rw-r--r-- 1 root root 0 7月 26 22:54 a

    -rw-r--r-- 1 root root 0 7月 26 22:54 aa

    -rw-r--r-- 1 root root 0 7月 26 22:54 ab

    -rw-r--r-- 1 root root 0 7月 26 22:54 b

    [root@localhost tmp]# ls {a,b}

    a b

  8. 数学运算

    使用数学运算,$[]

    [root@localhost root]# echo $a

    3

    [root@localhost root]# b=5

    [root@localhost root]# echo $b

    5

    [root@localhost root]# c=7

    [root@localhost root]# echo $c

    7

    [root@localhost root]# echo $[$a + $c]

    10

    [root@localhost root]# echo $[$c * $b]

    35

    [root@localhost root]# echo $[$c / $b] //除法,取整

    1

    [root@localhost root]# echo $[$c % $b] //取余数

    2

    [root@localhost root]# echo $[$c ** $b] //次方

    16807

  9. 使用backslash \,处理特殊字元和过长字串

    \叫跳脱字元,escape character

    [root@localhost root]# echo Your cost is $5 00

    Your cost is 00

    [root@localhost root]# echo "Your cost is $5 00"

    Your cost is 00

    [root@localhost root]# echo "Your cost is \$5 00" //加\避免把$当作变量

    Your cost is $5 00

    [root@localhost root]# ls \

    > -l //如果命令很长时,可以使用\,进行换行输入

    总用量 36

    -rw-r--r-- 1 root root 1215 2008-10-02 anaconda-ks.cfg

    drwxr-xr-x 2 root root 4096 7月 24 13:57 doc

    -rw-r--r-- 1 root root 0 7月 24 13:50 funny.txt

    -rw-r--r-- 1 root root 18275 2008-10-02 install.log

    -rw-r--r-- 1 root root 2783 2008-10-02 install.log.syslog

    drwxr-xr-x 2 root root 4096 7月 26 22:54 tmp

  10. 使用quotes,处理字串

    Single quotes(‘)

    Double quotes(“)

    使用单引号可以原样输出,使用双引号除了$,\,’,!

    [root@localhost root]# echo ** 00000 ** //**表示输出所有文件,接着输出0000,再接着输出所有文件

    anaconda-ks.cfg doc funny.txt install.log install.log.syslog tmp 00000 anaconda-ks.cfg doc funny.txt install.log install.log.syslog tmp

    [root@localhost root]# echo \*\* 0000 \*\*

    ** 0000 **

    [root@localhost root]# echo "** 0000 **"

    ** 0000 **

    [root@localhost root]# echo '** 0000 **'

    ** 0000 **

    [root@localhost root]#

  11. 使用history tricks诀窍

    [root@localhost root]# ping X.X.X.78

    PING X.X.X.78 (X.X.X.78) 56(84) bytes of data.

    64 bytes from X.X.X.78: icmp_seq=1 ttl=124 time=8.04 ms

    64 bytes from X.X.X.78: icmp_seq=2 ttl=124 time=15.6 ms

    --- X.X.X.78 ping statistics ---

    5 packets transmitted, 5 received, 0% packet loss, time 4065ms

    rtt min/avg/max/mdev = 7.774/13.423/19.549/4.703 ms

    [root@localhost root]# telnet X.X.X.78[r1]

    [r1]输入telnet后,空格。按ESC,再按“.”。可以将上个命令的参数自动补齐

  12. 切换指令编辑模式

    预设模式下,bash使用emacs-style作为指令编辑模式

    Set –o,查看当前的编辑模式

    Set –o vi,切换到VI模式

    Set +o vi,关闭vi模式

    [root@localhost root]# set -o

    allexport off

    braceexpand on

    emacs on//该种模式

    errexit off

    hashall on

    histexpand on

    history on

    ignoreeof off

    interactive-comments on

    keyword off

    monitor on

    noclobber off

    noexec off

    noglob off

    nolog off

    notify off

    nounset off

    onecmd off

    physical off

    posix off

    privileged off

    verbose off

    vi off //该种模式

    xtrace off

     

    VI模式下,

    如果,该行命令输错,需要删除整行,则按ESC,再按两次D。

    [root@localhost root]# echo 123456

    关闭VI模式

    [root@localhost root]# set -o vi

    [root@localhost root]# set +o vi

    [root@localhost root]# set -o

    allexport off

    braceexpand on

    emacs off

    errexit off

    hashall on

    histexpand on

    history on

    ignoreeof off

    interactive-comments on

    keyword off

    monitor on

    noclobber off

    noexec off

    noglob off

    nolog off

    notify off

    nounset off

    onecmd off

    physical off

    posix off

    privileged off

    verbose off

    vi off

    xtrace off

    [root@localhost root]# set 12345

    [root@localhost root]# ^[[A //按上下键没有提示

    启用了vi后,emacs会自动关闭。再关闭VI后,则两个编辑模式均关闭。

  13. gnome-terminal快捷键

    在图形模式下,进入terminal,按ctrl+shif+T,可以增加多个选项卡。

    image

    Alt +N(序列号),进行切换

    使用ctrl+shift+c,进行复制命令。

    使用ctrl+shift+v,进行粘贴

    使用ctrl+shift+w,关闭标签

你可能感兴趣的:(shell,职场,unit,bash,休闲)