简洁的 Bash Programming 技巧续篇

简洁的 Bash Programming 技巧系列文章专门介绍Bash编程中一些简洁的技巧,帮助大家提高平时 Bash 编程的效率。继上一篇文章发布后,收到很多读者的反响,所以我决定继续将自己学到的一些新的技巧更新在这篇续篇中,当然也希望其它同学也能一起分享你们的技巧。续篇中有部分的内容已经偏离bash编程了,而是命令行下的技巧,题目我暂时不改,请见谅。

1. bash中alias的使用

alias其实是给常用的命令定一个别名,比如很多人会定义一下的一个别名:

alias ll='ls -l'

以后就可以使用ll,实际展开后执行的是ls -l。现在很多发行版都会带几个默认的别名,比如:

alias grep='grep --color=auto'  # 带颜色显示
alias ls='ls --color=auto' # 同上
alias rm='rm -i'  # 删除文件需要确认

alias在某些方面确实提高了很大的效率,但是也是有隐患的,这点可以看我以前的一篇文章终端下肉眼看不见的东西。那么如何不要展开alias,而是用本来的意思呢?答案是使用转义:

\ls
\grep

在命令前面加一个反斜杠后就可以了。

查看全文

简洁的 Bash Programming 技巧

简洁的 Bash Programming 技巧这一系列文章专门介绍Bash编程中一些简洁的技巧,帮助大家提供 Bash 编程的效率,目前该系列已经有三篇文章,有兴趣的同学可以继续阅读其它两篇续篇(一)(二)

下面这几条是我自己在写shell代码的时候,比较喜欢的几种写法,抛砖引玉。

1. 检查命令执行是否成功

第一种写法,比较常见:

echo abcdee | grep -q abcd

if [ $? -eq 0 ]; then
    echo "Found"
else
    echo "Not found"
fi

简洁的写法:

if echo abcdee | grep -q abc; then
    echo "Found"
else
    echo "Not found"
fi

当然你也可以不要if/else,不过这样可读性比较差:

[Sun Nov 04 05:58 AM] [kodango@devops] ~/workspace 
$ echo abcdee | grep -q abc && echo "Found" || echo "Not found"
Found

2. 将标准输出与标准错误输出重定向到/dev/null

第一种写法,比较常见:

grep "abc" test.txt 1>/dev/null 2>&1

常见的错误写法:

grep "abc" test.txt 2>&1 1>/dev/null

查看全文