有用的bash别名和生成最常用命令的列表

我发现这篇文章讨论一个快速的方法来sorting你的bash历史,并看看你使用哪个命令最多:

cut -f1 -d" " .bash_history | sort | uniq -c | sort -nr | head -n 30 

它真的会打开你的眼睛,你应该为哪些任务创build别名,以及应该完全清除哪些任务。

我很高兴看到推荐的命令行别名的ServerFault列表,节省您的时间在工作 。 你有什么?

在我们之间,我敢打赌,我们可以每天至less保存10分钟以内的每个阅读这篇文章的用户。 (减去第一天,他们浪费所有的时间阅读ServerFault,而不是当然做他们的工作!)

我处理了很多不同的机器,所以我最喜欢的是我需要经常SSH连接的每台机器的别名。

 alias claudius="ssh dinomite@claudius" 

设置一个好的.ssh/config和ssh密钥以使机器间的跳跃更容易,这也是非常有用的。

另一个我最喜欢的别名是移动目录:

 alias ..="cd .." alias ...="cd ../.." alias ....="cd ../../.." alias .....="cd ../../../.." 

还有一些针对ls (和拼写错误)的常用变体:

 alias ll="ls -l" alias lo="ls -o"alias lh="ls -lh" alias la="ls -la" alias sl="ls" alias l="ls" alias s="ls" 

我几乎总是想要egrep

 alias grep="egrep" 

从所有部分获取手册页

 alias man="man -a" 

我经常发现自己通过awk输出pipe道以获得输出的某一列,如在df -h | awk '{print $2}' df -h | awk '{print $2}'来查找每个磁盘的大小。 为了更容易,我在.bashrc中创build了一个函数fawk

 function fawk { first="awk '{print " last="}'" cmd="${first}\$${1}${last}" eval $cmd } 

我现在可以运行df -h|fawk 2 ,这样可以节省很多打字的时间。

我使用了很多Perl,需要知道系统上安装的模块的版本:

 function perlmodver { perl -M$1 -e 'print "Version " . $ARGV[0]->VERSION . " of " . $ARGV[0] . " is installed.\n"' $1 } 

我通常喜欢打字,因为恐怕我会忘记所有关于我使用的命令。 我知道我可能是错的,但是如果我只是把Commandline中的每个命令粘贴到我的.bashrc中,我都不会知道这个系统。

请注意,我不是说我是最伟大的,我知道关于Linux的所有知识,远不止于此,我只是说我喜欢学习,记住我学到的知识。

这并不是说我不明白如何省时的别名(特别是对于较大的function,但是你必须看看脚本是否更好),但是,我个人不喜欢使用它们(至less并不总是)。

这就是说,Commandlinefu有一个别名的特殊标签 。 这是值得的。

我也觉得这是一个很好的例子:

  alias less='less -FSRX' 

这只会在输出大于屏幕时使用较less。

我所有的时间最喜欢的:

 alias server_name='ssh -v -l username ip_address' 

它不需要解释,是吗? 🙂

alias lt='ls -lhart'

  • l = long:h =人类可读大小:a = all:r =反向sorting:t =时间sorting
  • 将最新的文件放在提示符右上方的底部

alias active='grep -v -e "^$" -e"^ *#"'

  • 只显示非空白或注释掉的行
  • 例如:active /etc/httpd/conf/httpd.conf

alias svi='sudo vim'

alias scr='screen -Rd'

我不得不承认我有一些这样的..

 alias sl=ls 

尝试打击我的错别字:-)

我也有

 alias aliases='xterm -e vim ~/.bash_aliases;reload' alias reload='. ~/.bash_aliases' 

所以它很好,很容易添加新的。

 alias cd..='cd ..' 
 for host in `awk '{ print $1 }' ~/.hostsILogIntoAllTheTime`; do alias $host='ssx '$host done 

input主机名以login到主机。 注意:ssx是一个别名本身:

 ssx='ssh -Y' 

与共享密钥相结合,这是非常光滑的。

我发现恼人的整个apt-get和apt-cache的东西在debian / * buntu,特别是与sudo前缀,所以我有:

 alias apti='sudo apt-get install' alias aptr='sudo apt-get remove' alias apts='apt-cache search' 

创build.tar.gz

 alias tarc="tar czvf" 

提取.tar.gz

 alias tarx="tar xzvf" 

列表.tar.gz

 alias tart="tar tzvf" 

另见

  • 什么有用的东西可以添加到一个.bashrc?
  • 交互式shell提示? (一些答案包括别名)

我发现这个页面正在寻找一种方法来使用awk向我显示一个csv(tsv实际)文件的第n列。 上面的fawk函数几乎就是我想要的。 我稍微修改,添加一个可选的第二个参数,即文件名,所以我可以像awk一样正常使用它,而不仅仅是通过pipe道。

 function fawk { first="awk '{print " last="}' $2" cmd="${first}\$${1}${last}" echo $cmd eval $cmd } 

谢谢!

这不是一个别名,但看到别名SSH连接的人可能是有用的。

Openssh软件包有一个名为ssh-argv0的​​二进制文件,它通过符号链接工作。

所以,如果你做这样的事情:

 sudo ln -s /usr/bin/ssh-argv0 /usr/local/bin/[email protected] 

在$ PATH中有/ usr / local / bin,现在可以以用户“user”的身份连接到ssh.server.com,在shell提示符下编写它:

  $ [email protected] 

斯蒂芬斯+1回答。 唯一一个他没有覆盖的,我也使用的是别名我需要定期访问的各种点文件,如:

 alias dotz='vi ~/.zshrc' 

再加上一个即时添加别名function:

 function add-alias { echo "alias $1=\047$2\047" >> ~/.zshrc }