有没有什么是您无法缺少的,将使我的生活变得如此轻松吗?这是我使用的一些工具(“磁盘空间”和“文件夹”特别方便)。

# some more ls aliases
alias ll='ls -alh'
alias la='ls -A'
alias l='ls -CFlh'
alias woo='fortune'
alias lsd="ls -alF | grep /$"

# This is GOLD for finding out what is taking so much space on your drives!
alias diskspace="du -S | sort -n -r |more"

# Command line mplayer movie watching for the win.
alias mp="mplayer -fs"

# Show me the size (sorted) of only the folders in this directory
alias folders="find . -maxdepth 1 -type d -print | xargs du -sk | sort -rn"

# This will keep you sane when you're about to smash the keyboard again.
alias frak="fortune"

# This is where you put your hand rolled scripts (remember to chmod them)
PATH="$HOME/bin:$PATH"


评论

这应该是社区Wiki

变成了社区维基。享受。

用管道输送更多?我敢打赌,您会越来越快乐-F

除了排序之前要多加“排序”之外,由于排序需要完整的输入,因此-F越少,您就可以更快地看到排序,我敢打赌它的运行速度很快。

以防万一有人感兴趣,有一项服务可让您浏览,构建列表并提供别名:alias.sh

#1 楼

我有一个提取档案的小脚本,我在网上找到了它:

extract () {
   if [ -f  ] ; then
       case  in
           *.tar.bz2)   tar xvjf     ;;
           *.tar.gz)    tar xvzf     ;;
           *.bz2)       bunzip2      ;;
           *.rar)       unrar x        ;;
           *.gz)        gunzip       ;;
           *.tar)       tar xvf      ;;
           *.tbz2)      tar xvjf     ;;
           *.tgz)       tar xvzf     ;;
           *.zip)       unzip        ;;
           *.Z)         uncompress   ;;
           *.7z)        7z x         ;;
           *)           echo "don't know how to extract ''..." ;;
       esac
   else
       echo "'' is not a valid file!"
   fi
 }


评论


真好再说一次,关于IDE / Vim的参数可以从内存中了解命令。脚本虽然很棒。绝对会加入.bashrc的欢呼声!

–加雷斯
09年5月5日在1:07

有一个很好的简单的Linux命令“ unp”,Unpacker可以执行此操作以及更多操作。

– Sander Marechal
09年5月10日23:33

该命令缺少一项功能。它无法正确打开boost.org/doc/libs/1_39_0/more/getting_started/…的7z软件包。你知道如何解决这个问题吗?

–LéoLéopoldHertz준영
09年6月2日在20:46

较新版本的tar自动检测存档类型,因此可以仅通过“ tar xvf”提取所有支持的格式。

–莫里亚蒂教授
2010-6-8 17:47



@Sander dtrx也不错。它确保存档提取到其自己的子目录。

–东武
10年7月2日在10:29

#2 楼

由于我使用了许多不同的计算机,因此我的.bashrc始终将命令提示符设置为包括当前登录的服务器的名称。这样,当我深入telnet / ssh三个级别时,我不会在错误的窗口中键入错误的内容。在错误的窗口中,它真的很糟糕rm -rf .! (注意:在家里,telnet在所有机器上都是禁用的。在工作中,ssh并非始终启用,并且我没有对很多机器的root访问权。)

我有一个脚本~/bin/setprompt由我的.bashrc执行,其中包含:

RESET="\[7\]"
NORMAL="\[3[0m\]"
RED="\[3[31;1m\]"
YELLOW="\[3[33;1m\]"
WHITE="\[3[37;1m\]"
SMILEY="${WHITE}:)${NORMAL}"
FROWNY="${RED}:(${NORMAL}"
SELECT="if [ $? = 0 ]; then echo \"${SMILEY}\"; else echo \"${FROWNY}\"; fi"

# Throw it all together 
PS1="${RESET}${YELLOW}\h${NORMAL} \`${SELECT}\` ${YELLOW}>${NORMAL} "


此脚本将提示设置为主机名,如果最后一条命令成功,则将其设置为主机名,然后是:),如果最后一条命令失败,则将其设置为:(

评论


$?支票是个很好的主意,我喜欢。

–德罗伯特
09年5月7日17:00

我还将在提示符下显示状态,但请保留数值,如果非零,则将其涂成红色,否则将其涂成绿色。

–pgs
09年6月1日于10:01

有趣....

–imapollo
13年4月25日在9:23

#3 楼

联机帮助页的颜色较少,使联机帮助页更易于阅读:

export LESS_TERMCAP_mb=$'\E[01;31m'
export LESS_TERMCAP_md=$'\E[01;31m'
export LESS_TERMCAP_me=$'\E[0m'
export LESS_TERMCAP_se=$'\E[0m'
export LESS_TERMCAP_so=$'\E[01;44;33m'
export LESS_TERMCAP_ue=$'\E[0m'
export LESS_TERMCAP_us=$'\E[01;32m'


也可以通过安装最多并将其用作MANPAGER env变量来获得彩色的联机帮助页。如果您不仅要为男性使用此寻呼机,请使用PAGER变量,如下所示:

export PAGER="/usr/bin/most -s"


#4 楼

cd ../../../ ..不再增加,而是增加4
作为参数传递的数字增加了许多dirs,如果默认情况下没有增加1(在stackoverflow的注释链接中找到) .com并进行了一些修改)
up(){
  local d=""
  limit=
  for ((i=1 ; i <= limit ; i++))
    do
      d=$d/..
    done
  d=$(echo $d | sed 's/^\///')
  if [ -z "$d" ]; then
    d=..
  fi
  cd $d
}


评论


这个版本的up()似乎不必要地复杂。我使用以下版本:up(){cd $(eval printf'../'%.0s {1 .. $ 1})&& pwd; }。如果您愿意,可以删除对“ pwd”的调用。

–马修G
13年11月26日在9:49



我使用这样的东西:#目录导航别名alias .. ='cd ..'alias ... ='cd ../ ..'alias .... ='cd ../../ ..'alias ..... ='cd ../../../ ..'

–马特·肯尼菲克(Matt Kenefick)
14-10-23在18:39



#5 楼

我处理许多不同的计算机,因此我最喜欢的一个是我经常需要通过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"


历史记录可能非常有用,但是默认情况下,在大多数发行版中,每个shell都会使您的历史记录消失退出,开始时没有多大用处。我喜欢拥有10,000行的历史记录:

export HISTFILESIZE=20000
export HISTSIZE=10000
shopt -s histappend
# Combine multiline commands into one in history
shopt -s cmdhist
# Ignore duplicates, ls without options and builtin commands
HISTCONTROL=ignoredups
export HISTIGNORE="&:ls:[bf]g:exit"


这样,如果我知道我之前做过一些事情但不记得具体内容,那么请快速回答一下。

我经常发现自己通过history | grep foo管道输出以获取输出的特定列,就像在awk中查找每个磁盘的大小一样。为了简化操作,我在.bashrc中创建了一个函数df -h | awk '{print }'

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


我现在可以运行fawk,这样可以节省很多键入时间。

如果需要指定定界符(例如,df -h|fawk 2表示awk -F:),则此函数显然无法处理。要点,稍有改动的版本可以在字段号之前处理任意/etc/passwd参数(但仍需要标准输入)。

评论


我也使用ssh别名和ssh键...这使一切变得如此简单

– devin
2009年5月30日15:14

+1获取历史记录控制提示。

– Rene Saarsoo
09年6月25日在22:39

您可以将主机名别名放入.ssh / config中,以达到相同的效果。在这种情况下,添加带有“用户名dinomite”的条目“主机cloudius”

– Sirex
2012年10月30日23:16

#6 楼

GPG加密的bashrc

我确定我们都有想要放入bashrc中的内容,我们不希望它们被sudoer轻松读取。我的解决方案是:

if [ -f ~/.bash_private.gpg ]; then
   eval "$(gpg --decrypt ~/.bash_private.gpg 2>/dev/null)"
fi


我有一个GPG代理,因此只需每隔几个小时输入一次我的私钥密码。您仍然必须对系统用户有所信任,因为您定义的变量,函数和别名可以从RAM中提取。但是,我主要将其用于笔记本电脑。如果被盗,我不希望有人轻易看到类似的东西:

alias MYsql='mysql -uadmin -psecret'
wglatest(){ wget -O https://admin:secret@server.com/latest; }


评论


在这种情况下,您还加密历史吗?为什么不加密$ home

– Rqomey
2012年7月4日15:10

@Rqomey,重点是我不必加密我的历史记录,因为我的密码不会显示在我的.bash_history中,因为它们被别名或函数隐藏了。在其中,您会看到类似MYsql <垃圾收集.sql而不是mysql -uadmin -psecret <垃圾收集.sql的信息

–布鲁诺·布鲁诺斯基(Bruno Bronosky)
13年4月5日在18:54

#7 楼

这是一个很棒的资源:

向我们展示您的.bashrc

#8 楼

我曾经在各处进行设置,但后来意识到最好记住“手动”操作,因为这意味着我会:1)完全了解正在发生的事情,以及2)即使这些功能都可以使用我的自定义.bashrc尚未安装。

这些天,我唯一使用的别名是减少重复输入非常长的行(例如alias myhost='ssh -T user@my.remote.host screen -dAr'

评论


同意存储长期有用的命令。我发现尽管我经常在失控的服务器上运行“磁盘空间”(即php到处都是核心转储)。

–加雷斯
09年5月4日在1:24

是的,实际上,我每天晚上都运行类似的命令(du / home / * --max-depth 1 | sort -n> /home/.sizes),这样我就可以大致了解用户的空间消耗共享机。

– pjz
09年5月4日在1:36

不过,将自定义配置部署在您经常使用的系统上非常容易。

–东武
2010-11-15 17:59

正如对ssh别名的跟进一样,这是我一直在做的事情。尽管DNS中断,但我总是使用IP进行此操作。

– jwbensley
13年5月11日13:52

#9 楼

一个那里的衬板和微小的脚本可能会永远持续下去。我建议使用bash并自己编写东西。 http://www.commandlinefu.com上有一些不错的bash短信息。这里有几件事。

#use extra globing features. See man bash, search extglob.
shopt -s extglob
#include .files when globbing.
shopt -s dotglob
#When a glob expands to nothing, make it an empty string instead of the literal characters.
shopt -s nullglob
# fix spelling errors for cd, only in interactive shell
shopt -s cdspell
# vi mode
set -o vi

s() { # do sudo, or sudo the last command if no argument given
    if [[ $# == 0 ]]; then
        sudo $(history -p '!!')
    else
        sudo "$@"
    fi
}

prompt_command() {
    p=$PWD  # p is much easier to type in interactive shells
    # a special IFS should be limited to 1 liners or inside scripts.
    # Otherwise it only causes mistakes.
    unset IFS
}
PROMPT_COMMAND=prompt_command


# smart advanced completion, download from
# http://bash-completion.alioth.debian.org/
if [[ -f $HOME/local/bin/bash_completion ]]; then
    . $HOME/local/bin/bash_completion
fi


extract () { # extract files. Ignore files with improper extensions.
    local x
    ee() { # echo and execute
        echo "$@"
         ""
    }
    for x in "$@"; do
        [[ -f $x ]] || continue
        case "$x" in
            *.tar.bz2 | *.tbz2 )    ee "tar xvjf" "$x"  ;;
            *.tar.gz | *.tgz ) ee "tar xvzf" "$x"   ;;
            *.bz2 )             ee "bunzip2" "$x"   ;;
            *.rar )             ee "unrar x" "$x"   ;;
            *.gz )              ee "gunzip" "$x"    ;;
            *.tar )             ee "tar xvf" "$x"   ;;
            *.zip )             ee "unzip" "$x"     ;;
            *.Z )               ee "uncompress" "$x" ;;
            *.7z )              ee "7z x" "$x"      ;;
        esac
    done
}


评论


我喜欢你的历史-p技巧。

–东武
2010年7月2日,10:50

#10 楼

如果您是系统管理员并且经常使用root特权,请给Bash一个提示:

shopt -o noclobber


如果出现以下情况,这将防止您不小心破坏现有文件的内容:您重定向输出(>文件名)。您始终可以使用> |文件名强制覆盖。

#11 楼

我的bashrc中有以下内容

function __setprompt {
  local BLUE="\[3[0;34m\]"
  local NO_COLOUR="\[3[0m\]"
  local SSH_IP=`echo $SSH_CLIENT | awk '{ print  }'`
  local SSH2_IP=`echo $SSH2_CLIENT | awk '{ print  }'`
  if [ $SSH2_IP ] || [ $SSH_IP ] ; then
    local SSH_FLAG="@\h"
  fi
  PS1="$BLUE[$(date +%H:%M)][\u$SSH_FLAG:\w]\$ $NO_COLOUR"
  PS2="$BLUE>$NO_COLOUR "
  PS4='$BLUE+$NO_COLOUR '
}
__setprompt


在本地计算机上,它看起来像:

[17:57][user:~]$


但是在远程上(通过ssh)是:

[17:57][user@machine:~]$


#12 楼

我已经在我的.bashrc文件中保存了一段时间,并且发现它很有帮助。如果您要登录,则在登录时会自动显示“开始”屏幕,这样,当您的网络连接中断或发生任何故障时,您就不会丢失所做的任何事情。应该放在最后。

if [ "$PS1" != "" -a "${STARTED_SCREEN:-x}" = x  -a "${SSH_TTY:-x}" != x ]
then
STARTED_SCREEN=1 ; export STARTED_SCREEN
[ -d $HOME/lib/screen-logs ] || mkdir -p $HOME/lib/screen-logs

sleep 1
screen -U -RR && exit 0

echo "Screen failed! continuing with normal bash startup"
fi


评论


如果您将登录shell设置为屏幕(并在.screenrc中配置例如bash),那么无论何时使用SSH,屏幕都会自动尝试重新连接到断开连接的屏幕。如果失败,它将创建一个新屏幕。

–丹·乌迪(Dan Udey)
09年5月17日在18:10

@Dan Udey我还没有尝试过您自己提出的建议,但是我发布的Bash仅在ssh登录名和设置shell相同的情况下才启动屏幕,也将在本地登录名上启动。也许是您想要的。这不是我想要的。 :-)

–波特达克
09年5月21日在22:07

如果您担心断开连接,请查看mosh,我一直都在使用它,并强烈推荐它:mosh.mit.edu

– jwbensley
13年5月11日在14:10

#13 楼

无论如何,您需要多少个fortune别名?

我想制作一个cdd别名,该别名可以将我带到目前最有可能在该服务器上工作的任何地方。

PATH重定义确实属于.bash_profile而不是.bashrc

在我通常使用大量screen的服务器上,我的.bashrc将具有:

alias s1="screen -dr chaos1"
alias s2="screen -dr chaos2"
alias s3="screen -dr chaos3"
# ... and so on


screen设置为例如screen -U -S chaos1。)

评论


@chaos“无论如何,您需要多少个财富别名?”。争取胜利。失败(和其他拼写错误)。

–加雷斯
09年5月4日,0:56

请按照以下步骤。 1)在.bashrc中扩展您的PATH。 2)输入“ bash”。 3)输入“ echo $ PATH”。 4)输入“ bash”。 5)输入“ echo $ PATH”。 6)冒昧地侮辱和侮辱别人,因为他们比您更了解sysadmin最佳实践,这使您为之震惊。

–混乱
09年5月4日在6:49

令您印象深刻的是,您有一个合理的理由,尽管不会打扰自己。很容易获得尚未登录路径的非登录Shell。我回想起它的愚蠢之处,最初是读它的,您试图说您不应该在.bashrc或其他内容中设置重要的变量。

–伊恩·凯灵(Ian Kelling)
09年5月4日在7:33

也许有人应该启动“我应该在.bashrc还是.bash_profile中设置PATH变量”?

–加雷斯
09年5月4日在8:03

@Ian Kelling:我实际上是在说,每个登录名应执行一次的操作属于.bash_profile,而每个shell实例化应执行一次的操作都属于.bashrc。

–混乱
09年5月4日在11:43

#14 楼

除其他外,我将一些默认值设置得更小,防止意外关闭终端并启用历史记录的向前导航:

# ignore case, long prompt, exit if it fits on one screen, allow colors for ls and grep colors
export LESS="-iMFXR"

# must press ctrl-D 2+1 times to exit shell
export IGNOREEOF="2"

# allow ctrl-S for history navigation (with ctrl-R)
stty -ixon


评论


为导出IGNOREEOF =“ 2” +1

–马丁M.
2009年6月9日在22:27

#15 楼

我有一些地方:

# stop the pc speaker ever annoying me :)
setterm -bfreq 0

# don't put duplicate lines in the history. See bash(1) for more options
HISTCONTROL=ignoredups
# ... and ignore same sucessive entries.
HISTCONTROL=ignoreboth

# Expand the history size
HISTFILESIZE=10000 
HISTSIZE=100

# commands with leading space do not get added to history
HISTCONTROL=ignorespace

# am I on the internet?
alias p4='ping 4.2.2.2 -c 4'

# pwsafe
alias pw='pwsafe -p'

# ls aliases
alias ll='ls -l'
alias la='ls -A'
alias l='ls -CF'
alias lt='ls -laptr' #oldest first sort
alias labc='ls -lap' #alphabetical sort

# cd aliases
alias ..='cd ..'
alias ...='cd ../..'
alias ....='cd ../../..'

# cd into the old directory
alias bd='cd "$OLDPWD"'

# install a package and automatically respond yes to confirmation prompt
alias ins="sudo aptitude install"

# remove a package and its configuration files
alias remp="sudo aptitude purge"

# search for a package - apt-cache and aptitude search in different ways
# so have both
alias searchc="apt-cache search"
alias search="aptitude search"
alias show="aptitude show"


评论


您的HISTCONTROL行相互覆盖,因为它只是一个shell变量。 ignoreboth结合了ignorespace和ignoreups。

– Annika Backstrom
2009年5月27日14:34

尝试cd-而不是bd

–ptman
2010年7月2日,9:15

#16 楼

尾部/ var / log中的所有日志

alias logs="find /var/log -type f -exec file {} \; | grep 'text' | cut -d' ' -f1 | sed -e's/:$//g' | grep -v '[0-9]$' | xargs tail -f"


#17 楼

要为所有grep命令(例如grep,egrep和zgrep)提供颜色,我的.bashrc文件中应包含以下内容

export GREP_OPTIONS='--color=auto'


#18 楼

“文件夹”别名很棒!我对其进行了少许修改,以使带有空格的目录不会导致错误。

alias folders='find . -maxdepth 1 -type d -print0 | xargs -0 du -sk | sort -rn'


评论


文件夹按磁盘使用情况排序,很好

–dotjoe
2010年7月8日在21:50

#19 楼

我会回应@pjz关于手动了解事物而不是进行设置的评论。尤其是如果您像往常一样访问许多计算机。

所以我绝对知道set -o vi是因为我知道bash中的vi编辑命令,而我不知道emacs命令(除了,Ctrl + A会干扰screen)。在我自己的盒子上,我把它放在.bashrc

我也发现我必须包括export EDITOR=vim,因为许多最新的发行版默认都将nano缺省设置为nano,这最讨厌让需要您使用的实用程序扔进去。当我期待vi时编辑一些东西。 :-/

我也更改了提示。很久很久以前,我发现添加最后一个错误代码就足够有用,以至于我喜欢它。我喜欢提示中的完整路径名。还有当前的screen号。包括当前用户名和主机名是很有意义的。我的提示是PS1='\u@\h $PWD $WINDOW [$?] $ '

评论


\ w应该为您提供完整的路径名(例如,除非当'/ home / me'变为'〜'时,您位于主目录层次结构中:-)

– dr-jan
09年5月5日在13:03

这是我不使用\ w的“除外”位。 :-)

–staticsan
09年5月6日在1:09

#20 楼

进行bash检查以查看窗口大小是否已更改(如果调整终端窗口的大小,可以防止行编辑变得怪异)

shopt -s checkwinsize


这是我的最爱。使bash附加到历史记录而不是覆盖它。通常,当您启动bash时,它将历史记录加载到内存中,而当您关闭它时,它会将历史记录写出。这意味着如果您加载两个shell,请同时使用这两个shell,然后再关闭它们,最后关闭的shell会覆盖所有更改。

此代码段首先导致仅附加更改(而不是使用整个缓冲区),然后在每个命令之后将其写出更改。实际上,您可以实时更新.bash_history,因此,如果您启动一个新的终端,您将拥有其他正在运行的会话的历史记录中的所有命令。

shopt -s histappend
PROMPT_COMMAND='history -a'


#21 楼

Shell-fu.org的.bashrc集合

#22 楼

这是地雷:

export HISTCONTROL=ignoredups
export HISTIGNORE="&:ls:bg:fg"

# set variable identifying the chroot you work in (used in the prompt below)
if [ -z "$debian_chroot" ] && [ -r /etc/debian_chroot ]; then
    debian_chroot=$(cat /etc/debian_chroot)
fi

# shows you if you are in a chroot or in a git repository
PS1='${debian_chroot:+($debian_chroot)}\[3[01;30m\]\h\[3[00m\]:\[3[01;34m\]\W\[3[00m\]$(__git_ps1)$ '


if [ -f /etc/bash_completion ]; then
    . /etc/bash_completion
fi

# two handy single-letter aliases

alias u='ls -hltr'
alias e='du * -cs | sort -nr | head'
alias g='grep -C5 --color=auto'

# creates a temp dir and cds into it
alias td='pushd $(mktemp -d)'

# find <dir> <file name regexp> <file contents regexp>
function fing { find "" -name "" -exec grep -H "" "{}" \; }

# shows "git diff" across any project in any subdirectory
alias git-differ='for g in $(find . -name ".git"); do g=${g%%.git};printf "$g\t\t\t";pu $g >/dev/null && git diff |wc -l; p >/dev/null; done'

# does git house keeping across any project in any subdirectory
alias git-housekeep='for g in $(find . -name ".git"); do g=${g%%.git};echo $g;pu $g && git repack && git gc --auto && p;done'

# Debian update
alias apg='aptitude update && aptitude dist-upgrade && aptitude clean'

# Quick way to serve files in HTTP from the local dir
alias webs='python -m SimpleHTTPServer'


#23 楼

这些是我的最爱:

export HISTFILESIZE=1000000000
export HISTSIZE=1000000


我喜欢拥有一个永远不会忘记的命令行历史记录。

不幸的是,不久前我发射了一个外壳来自cron,它不知道以什么方式读取.bashrc,并将所有内容砍成500行,破坏了一年多的历史。所以我建议将它们放在/ etc / bashrc中。

#24 楼

这是我的最爱:

alias ls='ls -F --color=auto'
alias l='ls'
alias ll='ls -ahl'
alias ..='cd ..'
alias ...='cd ../..'
alias mv='mv -i'

mkcd() {
        if [ $# != 1 ]; then
                echo "Usage: mkcd <dir>"
        else
                mkdir -p  && cd 
        fi
}

# Git related
alias gs='git status'
alias gc='git commit'
alias ga='git add'
alias gd='git diff'
alias gb='git branch'
alias gl='git log'
alias gsb='git show-branch'
alias gco='git checkout'
alias gg='git grep'
alias gk='gitk --all'
alias gr='git rebase'
alias gri='git rebase --interactive'
alias gcp='git cherry-pick'
alias grm='git rm'


#25 楼

我每天大约使用20次,以cd进入上次更改的目录:

cl()
{
        last_dir="$(ls -Frt | grep '/$' | tail -n1)"
        if [ -d "$last_dir" ]; then
                cd "$last_dir"
        fi
}


这两个保留了经常使用的目录的永久书签:

rd(){
    pwd > "$HOME/.lastdir_"
}

crd(){
        lastdir="$(cat "$HOME/.lastdir_")">/dev/null 2>&1
        if [ -d "$lastdir" ]; then
                cd "$lastdir"
        else
                echo "no existing directory stored in buffer ">&2
        fi
}


#26 楼

来自Kirk Ba​​uer的《自动化Linux和Unix管理》(很棒的书!)

PS1='\n[\u@\h]: \w\n$?> '


开头的换行符是我的,我希望在上一个输出之间有清晰的界线和提示。其余的是:

\ u =用户名

\ h =主机

\ w =工作目录

$ ? =最后返回码

#27 楼

我将许多东西手动编译到$ HOME / local中,所以我有这个小片段:

for prog in $HOME/local/*
do
    if [ -d "$prog/bin" ]; then
        export PATH=$prog/bin:$PATH
    fi
    if [ -d "$prog/include" ]; then
        export C_INCLUDE_PATH=$prog/include:$C_INCLUDE_PATH
    fi
    if [ -d "$prog/lib" ]; then
        export LD_LIBRARY_PATH=$prog/lib:$LD_LIBRARY_PATH
        export LIBRARY_PATH=$prog/lib:$LIBRARY_PATH
    fi
    if [ -d "$prog/man" ]; then
        export MANPATH=$prog/man:$MANPATH
    fi
    if [ -d "$prog/share/man" ]; then
        export MANPATH=$prog/share/man:$MANPATH
    fi
done


我的服务器上还有我的IRC客户端,它在屏幕上运行,所以我有这个(不是.bashrc的东西,但仍然有用)

#!/usr/bin/env bash

RUNNING=`screen -ls | grep irc`
if [ "" = "$RUNNING" ]; then
   screen -S irc irssi
else
   screen -dr irc
fi


#28 楼

我在很多机器上都使用了bashrc,所以我有这个小片段来确保LS是彩色的。这将在OSX机器上修复它,如果您调整uname行,甚至可以在* BSD上修复它。

if [ "$TERM" != "dumb" ]; then
    if [ `uname` == "Darwin" ]; then
       alias ls='ls -G'
    else
       eval "`dircolors -b`"
       alias ls='ls --color=auto'
    fi
fi


此外,我有一个命令来备份文件,很有用如果您要更改配置文件并想事先进行快速复制。

bu () { cp  ~/.backup/`basename `-`date +%Y%m%d%H%M`.backup ; }


评论


@Andrew:我没有在OSX中运行您的第一个代码。它破坏了我的提示设置。

–LéoLéopoldHertz준영
09年5月31日在9:54

在这里工作正常(10.6.X)

–Rev316
2010-1-27的3:54

#29 楼

这是我的最爱之一:

alias ssh='if [ "$(ssh-add -l)" = "The agent has no identities." ]; then ssh-add; fi; /usr/bin/ssh "$@"'


如果我忘记了身份验证,它可以让我这样做,而不必浪费我在ssh之后进行ssh-add的键入会议。

#30 楼

几个不错的选择

使SSH自动完成ssh的主机名(如果它在您的配置或历史记录中)

complete -o default -o nospace -W "$(/usr/bin/env ruby -ne 'puts $_.split(/[,\s]+/)[1..-1].reject{|host| host.match(/\*|\?/)} if $_.match(/^\s*Host\s+/);' < $HOME/.ssh/config)" scp sftp ssh


一些有用的bash完成设置

bind "set completion-ignore-case on" # note: bind used instead of sticking these in .inputrc
bind "set bell-style none" # no bell
bind "set show-all-if-ambiguous On" # show list automatically, without double tab


Mac OS X的一些有用设置

alias nospotlight='sudo mdutil -a -i off'
alias cleardnscache='sudo killall -HUP mDNSResponder'
alias ldd='otool -L'
alias seq='jot - '
alias eject='drutil eject'