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


10

我发现这个文章讨论了一个快速的方法来排序您的bash的历史,看到您最常使用哪些命令:

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

对于您应该为哪些任务创建别名以及应该彻底完成哪些任务,它确实让您大开眼界。

我很乐意看到ServerFault推荐命令行别名列表,这些列表可以节省您的工作时间。你有什么?

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


作为记录,在超级用户上有superuser.com/questions/7083/useful-command-line-aliases,其中包含有用的Bash别名负载
Jonik 2010年

Answers:


7

我处理许多不同的机器,因此我最喜欢的之一是我经常需要SSH到的每台机器的别名:

alias claudius="ssh dinomite@claudius"

设置良好的.ssh/configssh的密钥以使机器之间的跳跃更加容易也是有用的。

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

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,以便获得输出的特定列,就像df -h | awk '{print $2}'查找每个磁盘的大小一样。为了简化此操作,我fawk在.bashrc中创建了一个函数:

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
}

3

我通常喜欢键入所有内容,因为恐怕会很快忘记我正在使用的所有命令。我知道我可能是错的,但我不认为我会知道的尽可能多的有关系统的,如果我刚粘贴在每个命令Commandlinefu到我的.bashrc。

请注意,我并不是在说我是最伟大的人,我知道关于Linux的所有知识,而不仅仅是那,我只是在说我喜欢学习,并记住自己从使用中学到的知识。

这并不是说我不喜欢节省时间的别名(特别是对于较大的函数,但是您必须查看脚本是否更好),但是个人而言,我不喜欢使用它们(至少并非总是如此)。

话虽如此,Commandlinefu有一个特殊的别名标签。值得一看。

我也认为这是一个不错的选择:

   alias less='less -FSRX'

仅当输出大于屏幕时才使用较少的内容。


2

我一直以来的最爱:

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

不需要解释,是吗?:-)


5
那不是.ssh / config是什么:-P主机server_name主机名1.2.3.4用户名等
。– vartec

使用bash_completion和tab,tab对我来说似乎很好,而不是设置一堆ssh别名
Clayton Stanley

2

alias lt='ls -lhart'

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

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

  • 仅显示非空白或注释掉的行
  • 示例:活动的/etc/httpd/conf/httpd.conf

alias svi='sudo vim'

alias scr='screen -Rd'


尼斯,尤其是sudo vim
astropanic 2010年

1

我必须承认我有一些这样的..

alias sl=ls

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

我也有

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

因此,添加新内容非常简单。



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

键入主机名以登录到主机。注意:ssx本身就是一个别名:

ssx='ssh -Y'

结合共享密钥,它非常漂亮。


1

我发现把整个apt-get和apt-cache的东西放在debian / * buntu中很烦人,尤其是使用sudo前缀,所以我有:

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

1

创建.tar.gz

alias tarc="tar czvf"

解压.tar.gz

alias tarx="tar xzvf"

列出.tar.gz

alias tart="tar tzvf"


0

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

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

谢谢!


0

这不是别名,但是与别名为ssh连接的人见面可能会很有用。

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

因此,如果您执行以下操作:

sudo ln -s /usr/bin/ssh-argv0 /usr/local/bin/user@ssh.server.com

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

 $ user@ssh.server.com 

0

+1为Drew Stephens回答。他唯一没有提到的我也要使用的别名是我需要定期访问的各种点文件的别名,例如:

alias dotz='vi ~/.zshrc'

通过动态添加别名功能将其更进一步:

function add-alias {
echo "alias $1=\047$2\047" >> ~/.zshrc
}
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.