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
。
通过以上操作,就为clear
命令定义了一个名为c
的alias
,那么下次输入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'
为计算器添加数学支持 #
生成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
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
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'
上篇:使用证书安全快捷的连接SSH服务
下篇:nvtop – Linux下一款强大的GPU任务监视器