bash的基礎特性

一 、命令別名(alias)

別名的建立

①不帶參數時顯示當前shell的全部可用的別名,如:git

[root@Centos6-1 ~]# 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'
 

②自定義別名的方法,格式以下:shell

 alias [-p] [name[=value] ... ]vim

    -p:Print all defined aliases in a reusable formatbash

自定義一個命令別名:ssh

[root@Centos6-1 ~]# alias cdnet='cd /etc/sysconfig/network-scripts'
[root@Centos6-1 ~]# cdnet
[root@Centos6-1 network-scripts]# pwd
/etc/sysconfig/network-scripts
[root@Centos6-1 network-scripts]# 

注意:別名對命令的定義僅對當前shell進程有效,若是想永久有效那麼須要定義在配置文件中,有兩種配置文件:spa

一、僅對當前用戶有效的: ~/.bashrc命令行

[root@Centos6-1 ~]# vim ~/.bashrc
# .bashrc

# User specific aliases and functions

alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
alias cdnet='cd /etc/sysconfig/network-scripts'
# Source global definitions
if [ -f /etc/bashrc ]; then
        . /etc/bashrc
fi
[root@Centos6-1 ~]# source .bashrc //想要當即生效須要重讀配置文件或者從新ssh,另外 source還能夠寫成. 如:
[root@Centos6-1 ~]# . .bashrc

 

二、對全部用戶有效:/etc/bashrccode

  修改方式和上面同樣orm

別名的撤銷

撤銷別名使用 unalias命令cdn

用法:

  unalias: unalias [-a] name [name ...]

  Options:
    -a remove all alias definitions.

2、 glob

bash中用於實現文件名通配的機制,經過通配符實現,通配符有如下幾種:

  (1) *  表示任意長度任意字符

    a*b 符合條件的文件名有:aab a123b ab abab....以a開頭以b結尾的

 (2)?  表示任意單個字符

    a?b 符合條件的有:a1b abb acb....以a開頭中間只能有一個字符以b結尾

    a??b 符合條件的有:a11b a12b ....以a開頭中間只能有兩個字符以b結尾

 (3)[]  匹配指定範圍內的任意單個字符

    a[0-9]b 符合條件的有:a1b,a2b,a3b.....

    a[a-z]b 符合條件的有:aab,acb,adb....注意:這裏不區分大小寫

    a[A-Z]b 僅匹配中間是大寫的字符

 (4)[^] 表示取反

    a[^0-9]b 表示匹配數字之外的字符

    a[^A-Z]b 表示匹配小寫字母和數字

    a[^0-9a-z] 表示只匹配特殊字符

專用字符集合表示法

  注意:下面出現的[]並不是上面提到的[],若是要使用下面的專用字符集合還須要再加上一層[],如 [[:digit:]]

  [:digit:]:任意數字,至關於0-9 

  [:lower:]:任意小寫字母,例如  ls a[[:lower:]]b

  [:upper:]:任意大寫字母

  [:alpha:]:任意大小寫字母

  [:alnum:]:任意數字或字母

  [:space:]:全部的空格

  [:punct:]:標點符號

練習題:

(1)顯示/var目錄下全部以l開頭,以一個小寫字母結尾且中間出現至少一位數字的文件或目錄

[root@Centos6-1 ~]# ls -d /var/l*[0-9]*[[:lower:]]

 

(2)顯示/etc目錄下以任意一位數字開頭且以非數字結尾的文件或目錄

[root@Centos6-1 ~]# ls /etc/[0-9]*[^0-9]

 

(3)顯示/etc目錄下以非字母開頭,後面跟了一個字母及其餘任意長度任意字符的文件或目錄

[root@Centos6-1 ~]# ls /etc/[^[:alpha:]][[:alpha:]]*

 

(4)複製/etc目錄下全部以m開頭以非數字結尾的文件或目錄至/tmp/magedu目錄中

[root@Centos6-1 ~]# ls -d /etc/m*[^0-9]
/etc/magic  /etc/makedev.d  /etc/mke2fs.conf  /etc/modprobe.d  /etc/motd  /etc/mtab  /etc/my.cnf
[root@Centos6-1 ~]# cp -a /etc/m*[^0-9] /tmp/magedu

 

(5)複製/etc目錄下全部以.d結尾的文件或目錄至/tmp/magedu.com目錄中

[root@Centos6-1 ~]# ls -d /etc/*.d
/etc/bash_completion.d  /etc/depmod.d       /etc/ld.so.conf.d  /etc/modprobe.d  /etc/profile.d  /etc/rc2.d  /etc/rc5.d  /etc/rsyslog.d   /etc/sudoers.d
/etc/chkconfig.d        /etc/dracut.conf.d  /etc/logrotate.d   /etc/pam.d       /etc/rc0.d      /etc/rc3.d  /etc/rc6.d  /etc/rwtab.d     /etc/xinetd.d
/etc/cron.d             /etc/init.d         /etc/makedev.d     /etc/popt.d      /etc/rc1.d      /etc/rc4.d  /etc/rc.d   /etc/statetab.d  /etc/yum.repos.d
[root@Centos6-1 ~]# cp -a /etc/*.d /tmp/magedu.com

 

(6)複製/etc目錄下全部以.conf結尾且以m,n,r,p開頭的文件或目錄至/tmp/magedu.com目錄中

 

[root@Centos6-1 ~]# ls /etc/[mnrp]*.conf
/etc/mke2fs.conf  /etc/nsswitch.conf  /etc/resolv.conf  /etc/rsyslog.conf
[root@Centos6-1 ~]# cp -a /etc/[mnrp]*.conf /tmp/magedu.com

 

3、bash快捷鍵

Ctrl+l:清屏操做,至關於clear命令

Ctrl+a:跳轉至命令首部(開始處)

Ctrl+e:跳轉至命令結尾處

Ctrl+c:取消命令執行

Ctrl+u:刪除命令行首至光標所在處的全部內容

Ctrl+k:刪除光標所在處至命令行尾部的全部內容

相關文章
相關標籤/搜索