表达式

Shell 中表达式

Curly braces

花括号({..})展开以创建模式,语法为:

{ pattern1, pattern2, patternN }
text{ pattern1, pattern2, patternN }
text1{ pattern1, pattern2, patternN }text2
command something/{ pattern1, pattern2, patternN }

典型用法如下:

$ echo I like {tom,jerry} # I like tom jerry

$ echo file{1,2,3}.txt # file1.txt file2.txt file3.txt

$ echo file{1..5}.txt # file1.txt file2.txt file3.txt file4.txt file5.txt

生成的文件名不需要存在。您还可以为括号内的每个模式运行命令。通常,您可以键入以下内容列出三个文件:

$ ls /etc/{resolv.conf,hosts,passwd}
$ rm -v hello.{sh,py,pl,c}

Wildcards(通配符)

Bash 支持如下的通配符:

  • * - Matches any string, including the null string

  • ? - Matches any single (one) character.

  • […] - Matches any one of the enclosed characters.

要显示存储在 /etc 目录中的所有配置(.conf)文件,请输入:

ls /etc/*.conf

要显示所有 C 项目头文件,请输入:

ls *.h

要显示所有 C 项目.c 文件,请输入:

ls *.c

您可以将通配符和花括号结合使用:

ls *.{c,h}

样本输出:

f.c  fo1.c  fo1.h  fo2.c  fo2.h  fo3.c	fo3.h  fo4.c  fo4.h  fo5.c  fo5.h  t.c

To list all png file (image1.png, image2.png…image7.png, imageX.png), enter:

ls image?.png

要列出所有以字母 a 或 b 开头的文件配置文件,请输入:

ls /etc/[ab]*.conf

别名

别名不过是命令的快捷方式。

alias name='command'
alias name='command arg1 arg2'

创建一个名为 c 的别名以清除终端屏幕,输入:

alias c='clear'

要清除终端,请输入:

c

创建一个名为 d 的别名以显示系统日期和时间,输入:

alias d='date'
d

样本输出:

Tue Oct 20 01:38:59 IST 2009

使用 alias 命令创建并列出别名,然后使用 unalias 命令删除别名。语法为:

unalias alias-name
unalias c
unalias c d

要列出当前定义的别名,请输入:

alias
alias c='clear'
alias d='date'

如果需要取消取消对名为 d 的命令的使用,请输入:

unalias d
alias

如果给出了-a 选项,那么除去所有别名定义,输入:

unalias -a
alias

Example ~/.bashrc script:

# make sure bc start with standard math library
alias bc='bc -l'
# protect cp, mv, rm command with confirmation
alias cp='cp -i'
alias mv='mv -i'
alias rm='rm -i'

# Make sure dnstop only shows eth1 stats
alias dnstop='dnstop -l 5  eth1'

# Make grep pretty
alias grep='grep --color'

# ls command shortcuts
alias l.='ls -d .* --color=tty'
alias ll='ls -l --color=tty'
alias ls='ls --color=tty'

# Centos/RHEL server update
alias update='yum update'
alias updatey='yum -y update'
# vi is vim
alias vi='vim'

# Make sure vnstat use eth1 by default
alias vnstat='vnstat -i eth1'
上一页
下一页