UNIXETC

30个帮你提高效率的BASH别名

目录

alias其实就是一个命令的快捷方式,为了将复杂的命令简化成简洁的样子。比如我们常用的ll命令其实就是ls -l命令的alias,这里的ll就是一个alias

显示alias #

使用alias显示当前所有别名,默认情况下将显示当前用户定义的所有alias

1
2
3
4
5
6
$ alias
alias ..='cd ..'
alias ipython='winpty ipython.exe'
alias ll='ls -l'
alias ls='ls -F --color=auto --show-control-chars'
alias ts='date +%s'

定义新的alias #

定义新的alias方法如下:

1
2
3
4
5
alias 名称=alias 名称='命令'
alias 名称='命令 参数1 参数2'
alias 名称='/路径/脚本'
alias 名称='/路径/脚本.pl 参数1'

我们常用clear命令来清屏,但每次输入clear有点长,那么就可以为其定义一个简洁的alias

1
alias c='clear'

通过以上操作,就为clear命令定义了一个名为calias,那么下次输入c命令就相当于执行了clear命令。

提示:可以将alias定义添加到~/.bashrc文件中以保证每次重启都会生效。

临时禁用alias #

对于已经定义的alias可以使用以下方法临时禁用。

1
2
3
4
5
6
## 命令完整目录 
/usr/bin/clear
## 使用反斜杠忽略alias
\c
## 使用/bin/ls命令并忽略ls的alias 
command ls

删除alias #

想要删除已经定义的alias,就需要使用unalias命令,使用实例如下:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
## 使用alias
$ ll
total 10
-rw-r--r-- 1 bbq 197121  411 Jun 10  2023 id_ed25519
-rw-r--r-- 1 bbq 197121   96 Jun 10  2023 id_ed25519.pub
-rw-r--r-- 1 bbq 197121 1957 Aug 14 18:36 known_hosts
-rw-r--r-- 1 bbq 197121 1109 Aug  6 15:23 known_hosts.old
## 删除alias
$ unalias ll
## 提示alias不存在了
$ ll
bash: ll: command not found

提示:如果你将alias添加到~/.bashrc文件中,记得也要删除。

设置永久alias #

上文中所示,使用alias命令定义的别名,在当前用户注销后就会失效,并且一个用户定义的别名,并不能被其他用户使用。

为了能永久保存定义的alias,可以将所有定义添加到用户目录下的~/.bashrc文件,这样的话后续每次电脑重启后这些定义仍会继续生效。

~/.bashrc只能保证单用户使用自己设定的alias,想要设置系统级alias以便于所有用户使用,那么就需要将alias添加到系统级的配置文件如/etc/bashrc中即可。

使用特殊权限执行命令 #

以下是一个使用特殊权限(root)执行命令的示例,将以下代码添加至~/.bashrc

1
2
3
4
5
# 如果用户不是root,则可以使用sudo权限执行命令 #
if [ $UID -ne 0 ]; then
    alias reboot='sudo reboot'
    alias update='sudo apt-get upgrade'
fi

有关操作系统的特殊alias #

下面是一个关于操作系统的特殊alias定义实例

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
### 使用uname获取系统名称 ###
_myos="$(uname)"
 
### 根据系统使用 $_myos 添加别名 ###
case $_myos in
   Linux) alias foo='/path/to/linux/bin/foo';;
   FreeBSD|OpenBSD) alias foo='/path/to/bsd/bin/foo' ;;
   SunOS) alias foo='/path/to/sunos/bin/foo' ;;
   *) ;;
esac

30个BASH alias示例 #

以下是一些常用功能的别名定义示例,可以参考使用以提高效率。

设置ls命令输出 #

1
2
3
4
5
6
7
8
## 以彩色形式输出ls结果 ##
alias ls='ls --color=auto'
 
## 使用长列表格式 ##
alias ll='ls -la'
 
## 显示隐藏文件 ##
alias l.='ls -d .* --color=auto'

控制cd命令行为 #

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
## 摆脱未找到的命令 ##
alias cd..='cd ..'
 
## 快速跳出当前目录方法 ##
alias ..='cd ..'
alias ...='cd ../../../'
alias ....='cd ../../../../'
alias .....='cd ../../../../'
alias .4='cd ../../../../'
alias .5='cd ../../../../..'

设置grep命令输出 #

1
2
3
4
## 以彩色形式显示输出,对于一些日志文件的浏览有帮助##
alias grep='grep --color=auto'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'

为计算器添加数学支持 #

1
alias bc='bc -l'

生成sha1摘要 #

1
alias sha1='openssl sha1'

按需创建父目录 #

1
alias mkdir='mkdir -pv'

以彩色形式显示diff输出 #

1
2
# 提前安装了colordiff :)
alias diff='colordiff'

美化mount命令输出且便于识别 #

1
alias mount='mount |column -t'

简化命令以节省时间 #

1
2
alias h='history'
alias j='jobs -l'

创建一组新命令 #

1
2
3
4
alias path='echo -e ${PATH//:/\\n}'
alias now='date +"%T"'
alias nowtime=now
alias nowdate='date +"%d-%m-%Y"'

将vim设为默认值 #

1
2
3
4
alias vi=vim
alias svi='sudo vi'
alias vis='vim "+set si"'
alias edit='vim'

设置ping命令输出 #

1
2
3
4
# 发送计数ECHO_REQUEST数据包后停止 #
alias ping='ping -c 5'
# 不要等待间隔 1 秒,快速执行 #
alias fastping='ping -c 100 -s.2'

显示当前打开端口 #

1
alias ports='netstat -tulanp'

唤醒休眠服务器 #

1
2
3
alias wakeupnas01='/usr/bin/wakeonlan 00:11:32:11:15:FC'
alias wakeupnas02='/usr/bin/wakeonlan 00:11:32:11:15:FD'
alias wakeupnas03='/usr/bin/wakeonlan 00:11:32:11:15:FE'

设置防火墙(iptables)输出 #

1
2
3
4
5
6
7
8
9
## 简化sudo权限执行iptables命令#
alias ipt='sudo /sbin/iptables'
 
# 显示所有规则 #
alias iptlist='sudo /sbin/iptables -L -n -v --line-numbers'
alias iptlistin='sudo /sbin/iptables -L INPUT -n -v --line-numbers'
alias iptlistout='sudo /sbin/iptables -L OUTPUT -n -v --line-numbers'
alias iptlistfw='sudo /sbin/iptables -L FORWARD -n -v --line-numbers'
alias firewall=iptlist

使用curl调试Web服务器问题 #

1
2
3
4
5
# 获取WEB服务的headers #
alias header='curl -I'
 
# 判断远端服务是否支持gzip/mod_deflate #
alias headerc='curl -I --compress'

增加安全网络 #

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# 防止删除根目录(/),和同时删除超过3个文件 #
alias rm='rm -I --preserve-root'
 
# 添加提示确认 #
alias mv='mv -i'
alias cp='cp -i'
alias ln='ln -i'
 
alias chown='chown --preserve-root'
alias chmod='chmod --preserve-root'
alias chgrp='chgrp --preserve-root'

更新Debian服务 #

1
2
3
4
5
6
# 基于Debian的系统可用  #
alias apt-get="sudo apt-get"
alias updatey="sudo apt-get --yes"
 
# 将更新升级合为一个命令
alias update='sudo apt-get update && sudo apt-get upgrade'

更新RHEL / CentOS / Fedora服务 #

1
2
alias update='yum update'
alias updatey='yum -y update'

调整sudo和su #

1
2
alias root='sudo -i'
alias su='sudo -i'

通过sudo停止或重启系统 #

1
2
3
4
alias reboot='sudo /sbin/reboot'
alias poweroff='sudo /sbin/poweroff'
alias halt='sudo /sbin/halt'
alias shutdown='sudo /sbin/shutdown'

设置WEB服务 #

1
2
3
4
5
6
alias nginxreload='sudo /usr/local/nginx/sbin/nginx -s reload'
alias nginxtest='sudo /usr/local/nginx/sbin/nginx -t'
alias lightyload='sudo /etc/init.d/lighttpd reload'
alias lightytest='sudo /usr/sbin/lighttpd -f /etc/lighttpd/lighttpd.conf -t'
alias httpdreload='sudo /usr/sbin/apachectl -k graceful'
alias httpdtest='sudo /usr/sbin/apachectl -t && /usr/sbin/apachectl -t -D DUMP_VHOSTS'

备份相关的alias #

1
2
3
4
5
6
7
8
alias backup='sudo /home/scripts/admin/scripts/backup/wrapper.backup.sh --type local --taget /raid1/backups'
alias nasbackup='sudo /home/scripts/admin/scripts/backup/wrapper.backup.sh --type nas --target nas01'
alias s3backup='sudo /home/scripts/admin/scripts/backup/wrapper.backup.sh --type nas --target nas01 --auth /home/scripts/admin/.authdata/amazon.keys'
alias rsnapshothourly='sudo /home/scripts/admin/scripts/backup/wrapper.rsnapshot.sh --type remote --target nas03 --auth /home/scripts/admin/.authdata/ssh.keys --config /home/scripts/admin/scripts/backup/config/adsl.conf'
alias rsnapshotdaily='sudo  /home/scripts/admin/scripts/backup/wrapper.rsnapshot.sh --type remote --target nas03 --auth /home/scripts/admin/.authdata/ssh.keys  --config /home/scripts/admin/scripts/backup/config/adsl.conf'
alias rsnapshotweekly='sudo /home/scripts/admin/scripts/backup/wrapper.rsnapshot.sh --type remote --target nas03 --auth /home/scripts/admin/.authdata/ssh.keys  --config /home/scripts/admin/scripts/backup/config/adsl.conf'
alias rsnapshotmonthly='sudo /home/scripts/admin/scripts/backup/wrapper.rsnapshot.sh --type remote --target nas03 --auth /home/scripts/admin/.authdata/ssh.keys  --config /home/scripts/admin/scripts/backup/config/adsl.conf'
alias amazonbackup=s3backup

自定义播放avi/mp3文件 #

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
## 播放当前目录内容
alias playavi='mplayer *.avi'
alias vlc='vlc *.avi'
 
## 播放目录中所有内容
alias playwave='for i in *.wav; do mplayer "$i"; done'
alias playogg='for i in *.ogg; do mplayer "$i"; done'
alias playmp3='for i in *.mp3; do mplayer "$i"; done'
 
## 播放NAS设备中文件
alias nplaywave='for i in /nas/multimedia/wave/*.wav; do mplayer "$i"; done'
alias nplayogg='for i in /nas/multimedia/ogg/*.ogg; do mplayer "$i"; done'
alias nplaymp3='for i in /nas/multimedia/mp3/*.mp3; do mplayer "$i"; done'
 
# 默认随机播放ogg/mp3文件 #
alias music='mplayer --shuffle *'

为系统管理相关命令设置默认接口 #

1
2
3
4
5
6
alias dnstop='dnstop -l 5  eth1'
alias vnstat='vnstat -i eth1'
alias iftop='iftop -i eth1'
alias tcpdump='tcpdump -i eth1'
alias ethtool='ethtool eth1'
alias iwconfig='iwconfig wlan0'

快速获取系统内存、CPU使用率和GPU信息 #

1
2
3
4
5
6
7
alias meminfo='free -m -l -t'
alias psmem='ps auxf | sort -nr -k 4'
alias psmem10='ps auxf | sort -nr -k 4 | head -10'
alias pscpu='ps auxf | sort -nr -k 3'
alias pscpu10='ps auxf | sort -nr -k 3 | head -10'
alias cpuinfo='lscpu'
alias gpumeminfo='grep -i --color memory /var/log/Xorg.0.log'

控制家用路由器 #

1
2
alias rebootlinksys="curl -u 'admin:my-super-password' 'http://192.168.2.1/setup.cgi?todo=reboot'"
alias reboottomato="ssh [email protected] /sbin/reboot"

默认恢复wget #

1
alias wget='wget -c'

使用不同的浏览器进行网站测试 #

1
2
3
4
5
6
alias ff4='/opt/firefox4/firefox'
alias ff13='/opt/firefox13/firefox'
alias chrome='/opt/google/chrome/chrome'
alias opera='/opt/opera/opera'
alias ff=ff13
alias browser=chrome

关于ssh别名的说明 #

请勿创建ssh相关别名,而是使用~/.ssh/config OpenSSH SSH 客户端配置文件。它提供了更多选择。举个例子:

1
2
3
4
5
6
7
Host server10
  Hostname 1.2.3.4
  IdentityFile ~/backups/.ssh/id_dsa
  user foobar
  Port 30000
  ForwardX11Trusted yes
  TCPKeepAlive yes

使用以下命令快速连接server10

1
ssh server10

一些别的分享 #

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
alias df='df -H'
alias du='du -ch'
 
alias top='atop'
 
alias nfsrestart='sync && sleep 2 && /etc/init.d/httpd stop && umount netapp2:/exports/http && sleep 2 && mount -o rw,sync,rsize=32768,wsize=32768,intr,hard,proto=tcp,fsc natapp2:/exports /http/var/www/html &&  /etc/init.d/httpd start'
 
alias mcdstats='/usr/bin/memcached-tool 10.10.27.11:11211 stats'
alias mcdshow='/usr/bin/memcached-tool 10.10.27.11:11211 display'
 
alias flushmcd='echo "flush_all" | nc 10.10.27.11 11211'
 
alias cdndel='/home/scripts/admin/cdn/purge_cdn_cache --profile akamai'
alias amzcdndel='/home/scripts/admin/cdn/purge_cdn_cache --profile amazon'
 
alias cdnmdel='/home/scripts/admin/cdn/purge_cdn_cache --profile akamai --stdin'
alias amzcdnmdel='/home/scripts/admin/cdn/purge_cdn_cache --profile amazon --stdin'