30个帮你提高效率的BASH别名
alias其实就是一个命令的快捷方式,为了将复杂的命令简化成简洁的样子。比如我们常用的ll
命令其实就是ls -l
命令的alias,这里的ll
就是一个alias。
显示alias
使用alias
显示当前所有别名,默认情况下将显示当前用户定义的所有alias
$ 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方法如下:
alias 名称=值
alias 名称='命令'
alias 名称='命令 参数1 参数2'
alias 名称='/路径/脚本'
alias 名称='/路径/脚本.pl 参数1'
我们常用clear
命令来清屏,但每次输入clear
有点长,那么就可以为其定义一个简洁的alias
。
alias c='clear'
通过以上操作,就为clear
命令定义了一个名为c
的alias
,那么下次输入c
命令就相当于执行了clear
命令。
提示:可以将alias
定义添加到~/.bashrc
文件中以保证每次重启都会生效。
临时禁用alias
对于已经定义的alias
可以使用以下方法临时禁用。
## 命令完整目录
/usr/bin/clear
## 使用反斜杠忽略alias
\c
## 使用/bin/ls命令并忽略ls的alias
command ls
删除alias
想要删除已经定义的alias
,就需要使用unalias
命令,使用实例如下:
## 使用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
# 如果用户不是root,则可以使用sudo权限执行命令 #
if [ $UID -ne 0 ]; then
alias reboot='sudo reboot'
alias update='sudo apt-get upgrade'
fi
有关操作系统的特殊alias
下面是一个关于操作系统的特殊alias定义实例
### 使用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命令输出
## 以彩色形式输出ls结果 ##
alias ls='ls --color=auto'
## 使用长列表格式 ##
alias ll='ls -la'
## 显示隐藏文件 ##
alias l.='ls -d .* --color=auto'
控制cd命令行为
## 摆脱未找到的命令 ##
alias cd..='cd ..'
## 快速跳出当前目录方法 ##
alias ..='cd ..'
alias ...='cd ../../../'
alias ....='cd ../../../../'
alias .....='cd ../../../../'
alias .4='cd ../../../../'
alias .5='cd ../../../../..'
设置grep命令输出
## 以彩色形式显示输出,对于一些日志文件的浏览有帮助##
alias grep='grep --color=auto'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
为计算器添加数学支持
alias bc='bc -l'
生成sha1摘要
alias sha1='openssl sha1'
按需创建父目录
alias mkdir='mkdir -pv'
以彩色形式显示diff输出
# 提前安装了colordiff :)
alias diff='colordiff'
美化mount命令输出且便于识别
alias mount='mount |column -t'
简化命令以节省时间
alias h='history'
alias j='jobs -l'
创建一组新命令
alias path='echo -e ${PATH//:/\\n}'
alias now='date +"%T"'
alias nowtime=now
alias nowdate='date +"%d-%m-%Y"'
将vim设为默认值
alias vi=vim
alias svi='sudo vi'
alias vis='vim "+set si"'
alias edit='vim'
设置ping命令输出
# 发送计数ECHO_REQUEST数据包后停止 #
alias ping='ping -c 5'
# 不要等待间隔 1 秒,快速执行 #
alias fastping='ping -c 100 -s.2'
显示当前打开端口
alias ports='netstat -tulanp'
唤醒休眠服务器
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)输出
## 简化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服务器问题
# 获取WEB服务的headers #
alias header='curl -I'
# 判断远端服务是否支持gzip/mod_deflate #
alias headerc='curl -I --compress'
增加安全网络
# 防止删除根目录(/),和同时删除超过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服务
# 基于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服务
alias update='yum update'
alias updatey='yum -y update'
调整sudo和su
alias root='sudo -i'
alias su='sudo -i'
通过sudo停止或重启系统
alias reboot='sudo /sbin/reboot'
alias poweroff='sudo /sbin/poweroff'
alias halt='sudo /sbin/halt'
alias shutdown='sudo /sbin/shutdown'
设置WEB服务
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
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文件
## 播放当前目录内容
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 *'
为系统管理相关命令设置默认接口
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信息
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'
控制家用路由器
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
alias wget='wget -c'
使用不同的浏览器进行网站测试
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 客户端配置文件。它提供了更多选择。举个例子:
Host server10
Hostname 1.2.3.4
IdentityFile ~/backups/.ssh/id_dsa
user foobar
Port 30000
ForwardX11Trusted yes
TCPKeepAlive yes
使用以下命令快速连接server10
ssh server10
一些别的分享
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'