标签:bash
bash的基础特性
1、命令别名(alias)
通过alias命令实现:
(1) alias
显示当前shell进程所有可用的命令别名;
(2) alias NAME=‘VALUE‘
定义别名NAME,其相当于执行命令VALUE;
注意:在命令行中定义的别名,仅对当前shell进程有效;如果想永久有效,要定义在配置文件中;
[root@master ~]# alias ssssssss=‘ls /‘ [root@master ~]# ssssssss bin data etc lib lost+found mnt proc sbin srv tmp var boot dev home lib64 media opt root selinux sys usr
仅对当前用户:~/.bashrc
[root@master ~]# vim .bashrc # .bashrc # User specific aliases and functions alias rm=‘rm -i‘ alias cp=‘cp -i‘ alias mv=‘mv -i‘ # Source global definitions if [ -f /etc/bashrc ]; then . /etc/bashrc fi
对所有用户有效:/etc/bashrc
Note: 编辑配置给出的新配置不会立即生效;
bash进程重新读取配置文件:
source /path/to/config_file
. /path/to/config_file
source .bashrc
撤消别名:unalias
unalias [-a] name [name ...]
Note: 如果别名同原命令的名称,则如果要执行原命令,可使用"\COMMAND";
2、glob (globbing)
bash中用于实现文件名“通配”
通配符:*, ?, []
(1) *
任意长度的任意字符
a*b:
aab, ab, a123b,
abc
[root@master ~]# touch aaaa abc asddsc acccc
[root@master ~]# cp a*c test
[root@master ~]# ll test/ total 48 -rw-r--r-- 1 root root 0 Jul 5 07:24 abc -rw-r--r-- 1 root root 0 Jul 5 07:24 acccc -rw-r--r-- 1 root root 0 Jul 5 07:24 asddsc -rw-r--r-- 1 root root 41433 May 21 2015 install.log -rw-r--r-- 1 root root 3422 May 24 2015 WorldCount.jar
(2) ?
任意单个字符
a?b:
aab
ab, a12b, abc
[root@master ~]# ll a*c -rw-r--r-- 1 root root 0 Jul 5 07:24 abc -rw-r--r-- 1 root root 0 Jul 5 07:24 acccc -rw-r--r-- 1 root root 0 Jul 5 07:24 asddsc
[root@master ~]# cp a?c Music/
[root@master ~]# ll Music/ total 0 -rw-r--r-- 1 root root 0 Jul 5 07:26 abc
(3) []
匹配指定范围内的任意单个字符
[0-9]
[a-z]:不区分字符大小写
[root@master ~]# ll a*c -rw-r--r-- 1 root root 0 Jul 5 07:28 a2c -rw-r--r-- 1 root root 0 Jul 5 07:24 abc -rw-r--r-- 1 root root 0 Jul 5 07:24 acccc -rw-r--r-- 1 root root 0 Jul 5 07:24 asddsc
[root@master ~]# ll a[0-9]c -rw-r--r-- 1 root root 0 Jul 5 07:28 a2c
[root@master ~]# ll a[a-z]c -rw-r--r-- 1 root root 0 Jul 5 07:24 abc
[root@master ~]# ll a[A-Z]c -rw-r--r-- 1 root root 0 Jul 5 07:24 abc
(4) [^]
匹配指定范围外的任意单个字符
[^0-9] 除了数字
[root@master ~]# ll a*c -rw-r--r-- 1 root root 0 Jul 5 07:28 a2c -rw-r--r-- 1 root root 0 Jul 5 07:24 abc -rw-r--r-- 1 root root 0 Jul 5 07:33 a%c -rw-r--r-- 1 root root 0 Jul 5 07:24 acccc -rw-r--r-- 1 root root 0 Jul 5 07:24 asddsc
[root@master ~]# ll a[^0-9]c -rw-r--r-- 1 root root 0 Jul 5 07:24 abc -rw-r--r-- 1 root root 0 Jul 5 07:33 a%c
[root@master ~]# ll a[^a-z0-9]c -rw-r--r-- 1 root root 0 Jul 5 07:33 a%c
专用字符集合:
[:digit:]:任意数字,相当于0-9
[:lower:]:任意小写字母
[root@master ~]# ll a*c -rw-r--r-- 1 root root 0 Jul 5 07:28 a2c -rw-r--r-- 1 root root 0 Jul 5 07:37 aAc -rw-r--r-- 1 root root 0 Jul 5 07:24 abc -rw-r--r-- 1 root root 0 Jul 5 07:33 a%c -rw-r--r-- 1 root root 0 Jul 5 07:24 acccc -rw-r--r-- 1 root root 0 Jul 5 07:24 asddsc
[root@master ~]# ll a[[:lower:]]c -rw-r--r-- 1 root root 0 Jul 5 07:24 abc
[:upper:]: 任意大写字母
[:alpha:]: 任意大小写字母
[:alnum:]:任意数字或字母
[:space:]:
[:punct:]:标点符号
练习:
1、显示/var目录下所有以l开头,以一个小写字母结尾,且中间出现至少一位数字的文件或目录;
ls -d /var/l*[0-9]*[[:lower:]]
2、显示/etc目录下,以任意一位数字开头,且以非数字结尾的文件或目录;
ls -d /etc/[0-9]*[^0-9]
3、显示/etc/目录下,以非字母开头,后面跟了一个字母及其它任意长度任意字符的文件或目录;
ls /etc/[^[:alpha:]][[:alpha:]]*
4、复制/etc目录下,所有以m开头,以非数字结尾的文件或目录至/tmp/mageedu目录中;
cp -a /etc/m*[^0-9] /tmp/mageedu
5、复制/etc目录下,所有以.d结尾的文件或目录至/tmp/magedu.com目录中;
cp -a /etc/*.d /tmp/magedu.com
6、复制/etc目录下,所以有.conf结尾,且以m,n,r,p开头的文件或目录至/tmp/mageedu.com目录中;
cp -a /etc/[mnrp]*.conf /tmp/mageedu.com
3、bash的快捷键
Ctrl+l: 清屏,相当于clear命令;
Ctrl+a:跳转至命令开始处;
Ctrl+e:跳转至命令结尾处;
Ctrl+c:取消命令的执行;
Ctrl+u: 删除命令行首至光村所在处的所有内容;
Ctrl+k: 删除光标所在处至命令行尾部的所有内容;
总结:写得不好,有错误请指出!谢谢!
本文出自 “梁小明的博客” 博客,请务必保留此出处http://7038006.blog.51cto.com/7028006/1812426
标签:bash
原文地址:http://7038006.blog.51cto.com/7028006/1812426