bash的基础特性

一 、命令别名(alias)

别名的创建

①不带参数时显示当前shell的所有可用的别名,如:

[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'

②自定义别名的方法,格式如下:

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

    -p:Print all defined aliases in a reusable format

自定义一个命令别名:

[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进程有效,如果想永久有效那么需要定义在配置文件中,有两种配置文件:

1、仅对当前用户有效的: ~/.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

 

2、对所有用户有效:/etc/bashrc

  修改方式和上面一样

别名的撤销

撤销别名使用 unalias命令

用法:

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

  Options:
    -a remove all alias definitions.

二、 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

 

三、bash快捷键

Ctrl+l:清屏操作,相当于clear命令

Ctrl+a:跳转至命令首部(开始处)

Ctrl+e:跳转至命令结尾处

Ctrl+c:取消命令执行

Ctrl+u:删除命令行首至光标所在处的所有内容

Ctrl+k:删除光标所在处至命令行尾部的所有内容

 

 

 

posted @ 2018-05-06 13:16  想不出来昵称  阅读(243)  评论(0编辑  收藏  举报