适用于 Linux / Unix / MacOS 的 30 个实用的 Bash Shell 别名
bash shell 别名不过是命令的快捷方式。别名命令允许用户通过输入单个单词来启动任何命令或命令组(包括选项和文件名)。使用别名命令显示所有已定义别名的列表。您可以将用户定义的别名添加到 ~/.bashrc 文件中。使用这些别名可以减少打字时间,提高工作效率,并提高命令提示符下的生产力。
这篇文章展示了如何创建和使用别名,其中包括 30 个 bash shell 别名的实际示例。
有关 bash shell 别名的更多信息
bash shell 的别名命令的一般语法如下:
如何列出 bash 别名
键入以下别名命令:
$ alias
示例输出:
alias ..='cd ..' alias amazonbackup='s3backup' alias apt-get='sudo apt-get' ...
默认情况下,别名命令显示为当前用户定义的别名列表。
如何定义或创建 bash shell 别名
要创建别名,请使用以下语法:在此示例中,通过键入以下命令然后按 ENTER 键,为常用的 clear 命令
创建别名c ,该命令用于清除屏幕:
然后,要清除屏幕,您不必键入 clear,而只需键入字母“c”并按 [ENTER] 键:
$ alias name=value
$ alias name='command'
$ alias name='command arg1 arg2'
$ alias name='/path/to/script'
$ alias name='/path/to/script.pl arg1'
$ alias c='clear'
$ c
如何暂时禁用 bash 别名
可以使用以下语法暂时禁用别名:
## path/to/full/command ##
$ /usr/bin/clear
## call alias with a backslash ##
$ \c
## use /bin/ls command and avoid ls alias ##
$ command ls
如何删除/移除 bash 别名
您需要使用 unalias 命令来删除别名。其语法如下:
在此示例中,删除在前面的示例中创建的别名 c:
您还需要使用文本编辑器从 ~/.bashrc 文件中删除别名(请参阅下一节)。
$ unalias aliasname
$ unalias foo
$ unalias c
如何使 bash shell 别名永久生效
别名 c 仅在当前登录会话期间有效。一旦您注销或重新启动系统,别名 c 将消失。要避免此问题,请将别名添加到您的 ~/.bashrc 文件中,输入:
$ vi ~/.bashrc
输入以下行即可使当前用户的别名 c 永久生效:
alias c='clear'
保存并关闭文件。系统范围的别名(即所有用户的别名)可以放在 /etc/bashrc 文件中。请注意,别名命令内置于各种 shell 中,包括 ksh、tcsh/csh、ash、bash 等。
关于特权访问的说明
您可以在~/.bashrc中添加如下代码:
# if user is not root, pass all commands via sudo # if [ $UID -ne 0 ]; then alias reboot='sudo reboot' alias update='sudo apt-get upgrade' fi
关于操作系统特定别名的说明
您可以使用 case 语句在 ~/.bashrc 中添加如下代码:
### Get os name via uname ### _myos="$(uname)" ### add alias as per os using $_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 shell 别名示例
您可以按如下方式定义各种类型别名,以节省时间并提高生产力。
#1:控制 ls 命令输出
ls命令列出目录内容,您可以为输出添加颜色:
## Colorize the ls output ## alias ls='ls --color=auto' ## Use a long listing format ## alias ll='ls -la' ## Show hidden files ## alias l.='ls -d .* --color=auto'
#2:控制 cd 命令行为
## get rid of command not found ## alias cd..='cd ..' ## a quick way to get out of current directory ## alias ..='cd ..' alias ...='cd ../../../' alias ....='cd ../../../../' alias .....='cd ../../../../' alias .4='cd ../../../../' alias .5='cd ../../../../..'
#3:控制 grep 命令输出
grep 命令是一个命令行实用程序,用于在纯文本文件中搜索与正则表达式匹配的行:
## Colorize the grep command output for ease of use (good for log files)## alias grep='grep --color=auto' alias egrep='egrep --color=auto' alias fgrep='fgrep --color=auto'
#4:启动具有数学支持的计算器
alias bc='bc -l'
#4:生成 sha1 摘要
alias sha1='openssl sha1'
#5:按需创建父目录
mkdir 命令用于创建目录:
alias mkdir='mkdir -pv'
#6:对 diff 输出进行着色
您可以使用 diff 逐行比较文件,并使用名为 colordiff 的工具为 diff 输出着色:
# install colordiff package :) alias diff='colordiff'
#7:使 mount 命令输出美观且可读的格式
alias mount='mount |column -t'
#8:使用快捷键节省时间
# handy short cuts # alias h='history' alias j='jobs -l'
#9:创建一组新命令
alias path='echo -e ${PATH//:/\\n}' alias now='date +"%T"' alias nowtime=now alias nowdate='date +"%d-%m-%Y"'
#10:将 vim 设置为默认
alias vi=vim alias svi='sudo vi' alias vis='vim "+set si"' alias edit='vim'
#11:控制网络工具 ping 的输出
# Stop after sending count ECHO_REQUEST packets # alias ping='ping -c 5' # Do not wait interval 1 second, go fast # alias fastping='ping -c 100 -s.2'
#12:显示开放端口
使用netstat命令快速列出服务器上的所有TCP / UDP端口:
alias ports='netstat -tulanp'
#13:唤醒休眠服务器
LAN 唤醒 (WOL) 是一种以太网网络标准,允许通过网络消息打开服务器。您可以使用以下别名快速唤醒 nas 设备和服务器:
## replace mac with your actual server mac address # 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'
#14:控制防火墙(iptables)输出
Netfilter 是一款适用于 Linux 操作系统的基于主机的防火墙。它包含在 Linux 发行版中,默认情况下处于激活状态。此帖子列出了新 Linux 用户保护其 Linux 操作系统免受入侵者侵害所需的最常见的 iptables 解决方案。
## shortcut for iptables and pass it via sudo# alias ipt='sudo /sbin/iptables' # display all rules # 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
#15:使用 curl 调试 Web 服务器/cdn 问题
# get web server headers # alias header='curl -I' # find out if remote server supports gzip / mod_deflate or not # alias headerc='curl -I --compress'
#16:增加安全网
# do not delete / or prompt if deleting more than 3 files at a time # alias rm='rm -I --preserve-root' # confirmation # alias mv='mv -i' alias cp='cp -i' alias ln='ln -i' # Parenting changing perms on / # alias chown='chown --preserve-root' alias chmod='chmod --preserve-root' alias chgrp='chgrp --preserve-root'
#17:更新 Debian Linux 服务器
apt-get 命令用于通过互联网(ftp 或 http)安装软件包。您还可以通过单个操作升级所有软件包:
# distro specific - Debian / Ubuntu and friends # # install with apt-get alias apt-get="sudo apt-get" alias updatey="sudo apt-get --yes" # update on one command alias update='sudo apt-get update && sudo apt-get upgrade'
#18:更新 RHEL / CentOS / Fedora Linux 服务器
yum 命令是 RHEL / CentOS / Fedora Linux 及其朋友的包管理工具:
## distrp specifc RHEL/CentOS ## alias update='yum update' alias updatey='yum -y update'
#19:调整 sudo 和 su
# become root # alias root='sudo -i' alias su='sudo -i'
#20:通过 sudo 传递 halt/reboot 命令
shutdown命令关闭Linux / Unix系统:
# reboot / halt / poweroff alias reboot='sudo /sbin/reboot' alias poweroff='sudo /sbin/poweroff' alias halt='sudo /sbin/halt' alias shutdown='sudo /sbin/shutdown'
#21:控制 Web 服务器
# also pass it via sudo so whoever is admin can reload it without calling you # 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'
#22:将别名放入我们的备份中
# if cron fails or if you want backup on demand just run these commands # # again pass it via sudo so whoever is in admin group can start the job # # Backup scripts # 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
#23:桌面专用 - 按需播放 avi/mp3 文件
## play video files in a current directory ## # cd ~/Download/movie-name # playavi or vlc alias playavi='mplayer *.avi' alias vlc='vlc *.avi' # play all music files from the current directory # 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' # play files from nas devices # 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' # shuffle mp3/ogg etc by default # alias music='mplayer --shuffle *'
#24:设置系统管理相关命令的默认接口
vnstat 是基于控制台的网络流量监视器。dnstop是用于分析 DNS 流量的控制台工具。tcptrack和 iftop 命令分别显示它在网络接口上看到的有关 TCP/UDP 连接的信息并显示主机在接口上的带宽使用情况。
## All of our servers eth1 is connected to the Internets via vlan / router etc ## 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' # work on wlan0 by default # # Only useful for laptop as all servers are without wireless interface alias iwconfig='iwconfig wlan0'
#25:快速获取系统内存、CPU 使用率和 GPU 内存信息
## pass options to free ## alias meminfo='free -m -l -t' ## get top process eating memory alias psmem='ps auxf | sort -nr -k 4' alias psmem10='ps auxf | sort -nr -k 4 | head -10' ## get top process eating cpu ## alias pscpu='ps auxf | sort -nr -k 3' alias pscpu10='ps auxf | sort -nr -k 3 | head -10' ## Get server cpu info ## alias cpuinfo='lscpu' ## older system use /proc/cpuinfo ## ##alias cpuinfo='less /proc/cpuinfo' ## ## get GPU ram on desktop / laptop## alias gpumeminfo='grep -i --color memory /var/log/Xorg.0.log'
#26:控制家用路由器
curl 命令可用于重新启动 Linksys 路由器。
# Reboot my home Linksys WAG160N / WAG54 / WAG320 / WAG120N Router / Gateway from *nix. alias rebootlinksys="curl -u 'admin:my-super-password' 'http://192.168.1.2/setup.cgi?todo=reboot'" # Reboot tomato based Asus NT16 wireless bridge alias reboottomato="ssh admin@192.168.1.1 /sbin/reboot"
#27 默认恢复 wget
GNU Wget 是一款免费的实用程序,用于从 Web 以非交互式方式下载文件。它支持 HTTP、HTTPS 和 FTP 协议,还可以恢复下载:
## this one saved by butt so many times ## alias wget='wget -c'
#28 使用不同的浏览器测试网站
## this one saved by butt so many times ## alias ff4='/opt/firefox4/firefox' alias ff13='/opt/firefox13/firefox' alias chrome='/opt/google/chrome/chrome' alias opera='/opt/opera/opera' #default ff alias ff=ff13 #my default browser alias browser=chrome
#29:关于 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
现在,您可以使用以下语法连接到 peer1:
$ ssh server10
#30:轮到你分享了……
## set some other defaults ## alias df='df -H' alias du='du -ch' # top is atop, just like vi is vim alias top='atop' ## nfsrestart - must be root ## ## refresh nfs mount / cache etc for Apache ## 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' ## Memcached server status ## alias mcdstats='/usr/bin/memcached-tool 10.10.27.11:11211 stats' alias mcdshow='/usr/bin/memcached-tool 10.10.27.11:11211 display' ## quickly flush out memcached server ## alias flushmcd='echo "flush_all" | nc 10.10.27.11 11211' ## Remove assets quickly from Akamai / Amazon cdn ## alias cdndel='/home/scripts/admin/cdn/purge_cdn_cache --profile akamai' alias amzcdndel='/home/scripts/admin/cdn/purge_cdn_cache --profile amazon' ## supply list of urls via file or stdin alias cdnmdel='/home/scripts/admin/cdn/purge_cdn_cache --profile akamai --stdin' alias amzcdnmdel='/home/scripts/admin/cdn/purge_cdn_cache --profile amazon --stdin'
结论
这篇文章总结了 *nix bash 别名的几种用途:
- 设置命令的默认选项(例如通过将 eth0 设置为 ethtool 命令的默认选项alias ethtool='ethtool eth0')。
- 纠正拼写错误(cd.. 将充当 cd .. via alias cd..='cd ..')。
- 减少打字量。
- 设置系统上存在多个版本的命令的默认路径(例如,GNU/grep 位于 /usr/local/bin/grep 而 Unix grep 位于 /bin/grep。要使用 GNU grep,请使用alias grep='/usr/local/bin/grep')。
- 通过设置默认选项使命令具有交互性,从而为 Unix 添加安全网。(例如 rm、mv 和其他命令)。
- 通过为较旧的操作系统(例如 MS-DOS 或其他类 Unix 操作系统)创建命令来实现兼容性(例如别名 del=rm )。
我分享了我多年来使用的别名,以减少重复输入命令行的需要。如果您知道并使用任何其他可以减少输入的 bash/ksh/csh 别名,请在下面的评论中分享。
结论
希望你喜欢我收集的 bash shell 别名。请参阅
- 自定义 bash shell 环境
- 下载本文中介绍的所有别名
- GNU bash shell 主页