10 个实用的 Bash alias

alias 即“别名”,为便于理解,你可以将其看成是一个命令的快捷方式。使用 alias 的最大好处是,可以简化输入,从而为你节省时间,并提高效率。定义的 alias 可以保存到 ~/.bashrc 文件中,以后在命令行中就可以直接使用了。

TechRepublic 介绍了 10 个 Bash alias,个人觉得都很实用:

  1. ssh 别名 - alias server_name='ssh -v -l USERNAME IP ADDRESS',更改 server_name、USERNAME 及 IP 地址以适应你的需要。对于经常要使用 ssh 登录远程 shell 的同学来说,这是一个值得收藏的别名。
  2. ls 别名 - alias ll='ls -l',另一个 alias la='ls -a'。意思很明显,在此就不多作解释了。
  3. rm 别名 - alias rm='rm -i',这个别名让你更加安全地执行删除操作。
  4. df 别名 - alias df='df -h',让你以 MB 或 G 为单位查看磁盘的空间。
  5. Firefox 别名 - alias ff1='/home/jlwallen/firefox/firefox'alias ff2='/home/jlwallen/firefoxb3/firefox',适合使用两个 Firefox 版本的朋友,如一个稳定版,另一个为测试版。
  6. 书签别名 - alias fftr='/home/jlwallen/firefox/firefox http://linuxtoy.org',用于打开一个指定的网址。
  7. 文件别名 - alias emenu='aterm nano -e ~/.e16/menus/user_apps',如常常需要编辑的配置文件。
  8. apt-get update 别名 - alias update='sudo apt-get update',使用其他 Linux 发行版的同学可以换一下其中的 sudo apt-get update。
  9. rpm 批量安装别名 - alias brpm='rpm -ivh ~/RPM/*rpm',便于同时安装多个 rpm 包。
  10. 长路径别名 - alias astart='cd ~/GNUstep/Library/AfterStep/start',对于需要经常访问的路径特别长的目录也可为其定义别名。

更新

一些读者的补充:

  • fcicq:

    alias convmv-utf8=”convmv -f gbk -t utf-8 –notest”
    alias nano=”nano -w”
    alias emerge=”sudo emerge”
  • lostsnow:

    alias ..=”cd ..”

  • zhuqin:

    不想用 alias 时,可在该 alias 的命令前加 \。

[via TechRepublic]

版权声明: 允许非商业性转载,但转载时必须标明作者及原文链接.
本文网址: http://linuxtoy.org/archives/10-bash-alias.html

33 Comments

  1. 1 cdok Commented @ 2008-07-11 11:51 am

    不錯!

  2. 2 fcicq Commented @ 2008-07-11 12:05 pm

    alias convmv-utf8="convmv -f gbk -t utf-8 --notest"
    alias nano="nano -w"
    alias emerge="sudo emerge"

  3. 3 princelai Commented @ 2008-07-11 12:13 pm

    http://blogs.techrepublic.com.com/10things/?p=352&tag=rbxccnbtr1
    这是原帖,我昨天看的

  4. 4 ll Commented @ 2008-07-11 12:21 pm

    站长,能不能把RSS改回原来的模式啊?
    现在用RSS看全文还要点“Continue reading →”,很不方便~

  5. 5 liufeng Commented @ 2008-07-11 12:26 pm

    从5往后用处都不是很大。涉及到GUI的直接在桌面上添加快捷方式直接用鼠标点击不是更方便?

    另外,能不能把RSS的全文输出打开?

  6. 6 zhuqin Commented @ 2008-07-11 12:29 pm

    补充一个万一不想用到alias时候的方法:
    在该被alias的命令前加\
    比如上面的rm=rm -i,每次执行都要按回车确认,如果只是一次还好,多了你就知道难受了。这时就可以用\rm来避免不必要的麻烦。

  7. 7 avenger Commented @ 2008-07-11 1:24 pm

    支持 RSS 全文输出。

  8. 8 Fwolf Commented @ 2008-07-11 1:31 pm

    rm的那个alias有时候并不见得就方便,同理还有mv,好像在redhat里是默认别名到-i的。

  9. 9 lostsnow Commented @ 2008-07-11 2:09 pm

    我用的
    alias ..="cd .."
    超爽

  10. 10 Rainux Commented @ 2008-07-11 2:51 pm

    对路长路径,我通常的做法是建立符号链接 short_name 到 $HOME,需要去的时候就 cd ~/short_name 或者 cd -P ~/short_name,-P 参数的意义是进入符号链接指向的物理目录,而不是跟随符号链接。

  11. 11 leemon Commented @ 2008-07-11 3:46 pm

    现在的RSS输出确实不方便,支持全文输出的提议!

  12. 12 z9 Commented @ 2008-07-11 5:30 pm

    支持RSS全文输出!!

  13. 13 fcicq Commented @ 2008-07-11 6:18 pm

    (1) 请勿跑题
    (2) 不要忘记以前的痛苦. http://linuxtoy.org/archives/accuse-scraper.html

  14. 14 sky Commented @ 2008-07-11 6:38 pm

    很好,谢谢!
    这几个还是很实用的

  15. 15 Toy Commented @ 2008-07-11 7:24 pm

    很感谢楼上几位同学的补充。另,rss 问题,目前我只能说抱歉。

  16. 16 netcasper Commented @ 2008-07-11 8:12 pm

    ssh请使用~/.ssh/config文件做配置。不要使用alias.

    这有个反面例子,后面的评论众口一辞,建议使用~/.ssh/config,且有很多例子,可以参考。
    http://www.howtoforge.com/tips-to-make-ssh-scp-usage-more-convenient

  17. 17 davix Commented @ 2008-07-11 8:17 pm

    第1個和第10個,我通常是加在Konsole的bookmarks裏。

  18. 18 davix Commented @ 2008-07-11 8:24 pm

    re netcasper.

    ssh我一般都是 "ssh abc"
    其中abc在.ssh/config中定義:
    Host abc
    Hostname xx.xx.xx.xx
    Port xxx
    再配合密鑰省去輸密碼的過程。

  19. 19 CD Commented @ 2008-07-11 8:32 pm

    这算是什么"实用"?

    LZ也不是新来的了, 别的不说. rm的乱改名就是死罪, 建议用".."的也是死罪

    也不知道LZ和那个建议使用".."的, 是不是把*nix当windows玩了.

    这样做的唯一用处就是让你的大批量脚本不知所措, 行为怪异

  20. 20 雪梨 Commented @ 2008-07-11 8:58 pm

    建议还是不要太多别名自造鸿沟,免得离开自己机器就犯傻,

    别名还是留给不那么重要的吧

    alias acs='apt-cache search -n'
    alias acw='apt-cache show'
    alias l='ls'
    alias la='ls -lha'
    alias ll='ls -lh'
    alias ls='ls --color=auto'

  21. 21 andrewpsy Commented @ 2008-07-11 9:39 pm

    有些和俺的一样,alias是懒人的最爱啊。
    alias ll='ls -l'
    alias la='ls -a'
    alias lla='ls -la'
    alias up='sudo apt-get update'
    alias is='sudo apt-get install'
    alias grade='sudo apt-get dist-upgrade'

  22. 22 zhuqin Commented @ 2008-07-11 9:44 pm

    @toy
    错啦,是\不是/

  23. 23 zhuqin Commented @ 2008-07-11 9:50 pm

    我也来贡献一点自己的alias(用于arch):

    alias cp='cp -v'
    alias grep='grep --color'
    alias l='ls -CF'
    alias la='ls -A'
    alias ll='ls -l'
    alias ls='ls --color'
    alias mv='mv -v'
    alias p='pacman'
    alias pacman='pacman-color'
    alias pgrep='pgrep -l'
    alias po='sudo pacman-optimize && sync'
    alias rm='rm -v'
    alias semacst='sudo emacs --no-splash -nw'
    alias sp='sudo pacman-color'
    alias y='yaourt'
    alias yR='y -Rscn'
    alias yc='y -C'
    alias yqdt='y -Qdt'
    alias yqet='y -Qet'
    alias yqi='y -Qi'
    alias yql='y -Ql'
    alias yqs='y -Qs'
    alias yr='y -Rsn'
    alias ys='y -S'
    alias ysc='y -Sc'
    alias yscc='y -Scc'
    alias ysi='y -Si'
    alias yss='y -Ss'
    alias ysyu='y -Syu --aur'

  24. 24 wanzigunzi Commented @ 2008-07-11 9:57 pm

    df不如用df -Th

  25. 25 Toy Commented @ 2008-07-11 10:03 pm

    @zhuqin:汗,笔误,已修正。

  26. 26 qiang_liu8183 Commented @ 2008-07-12 2:57 am

    也来贡献几个

    alias x='startx'
    alias sd='sudo poweroff'
    alias rb='sudo reboot'
    alias Scc='sudo pacman -Scc'
    alias Syu='sudo pacman -Syu'
    alias ls='ls -a --color=auto'
    alias ll='ls -l'
    alias ..='cd ..'
    alias ubuntu='lftp username:password@ftp.ubuntu.org.cn'

  27. 27 chenxing Commented @ 2008-07-12 9:45 am

    alias convmv-utf8=”convmv -f gbk -t utf-8 –notest”
    这个,有点危险吧,可以先把--notest拿到外面~

  28. 28 robbie Commented @ 2008-07-12 11:30 pm

    加1个

    alias ...='cd ../..'

  29. 29 DS Commented @ 2008-07-13 3:19 pm

    楼上的增强版

    str='..'
    level='./../'
    for i in `seq 1 10`;
    do
    eval "alias '$str=cd $level'"
    level=$level'../'
    str=$str'.'
    done

  30. 30 baj Commented @ 2008-07-14 10:53 pm

    我也帖一个,呵呵:
    alias ..='cd ..'
    alias ...='cd ../..'
    alias cd..='cd ..'
    alias cls='clear'
    alias egrep='egrep --color -n'
    alias fm='free -mt'
    alias gi='gvim'
    alias git-diff='git-diff --color'
    alias grep='grep --colour=auto'
    alias info='pinfo'
    alias ki='kwrite'
    alias l='ls -alF'
    alias l.='ls -a .* -d'
    alias la='ls -la'
    alias ll='ls -l'
    alias ls='ls --color=auto'
    alias mat='matlab -nodesktop -nosplash'
    alias o='less'
    alias pa='ps aux'
    alias pe='ps -e'
    alias pt='pstree'

  31. 31 Rainux Commented @ 2008-07-15 4:10 pm

    好吧,我出必杀了。虽然不是 alias。

    用于在当前目录以及所有子目录中搜索包含特定 pattern 的文件,可以用 pattern 来过滤将要搜索的文件名。

    用法:

    
      grep_for pattern_to_search
      grep_for pattern_to_search \.rb$
      gvim `grep_for pattern_to_search \.rb$ -l`
    
    grep_for() {
        local content=$1
    
        if [ -z "$2" ]
        then
            shift
        else
            local flag=`echo $2 | sed 's/^\(.\).*$/\1/'`
            if [ "$flag" == "-" ]
            then
                shift
            else
                local filter=$2
                shift
                shift
            fi
        fi  
    
        if [ -z "$filter" ]
        then
            find -print0 | grep -zv '\.svn' | xargs -0 grep --color $content $@
        else
            find -print0 | grep -zv '\.svn' | grep -z $filter | xargs -0 grep --color $content $@
        fi
    }
    
  32. 32 Rainux Commented @ 2008-07-15 4:10 pm

    阿哦,排版乱掉了,请自己在 vim 里 gg=G 排版一下吧。

  33. 33 Toy Commented @ 2008-07-15 4:32 pm

    @Rainux: 感谢你的补充,我重新排了一下版。