.bashrcに追加できる便利なものは何ですか?[閉まっている]


141

あなたなしでは生きていけないものがありますか?ここに私が使用しているものがあります(「ディスクスペース」と「フォルダ」は特に便利です)。

# 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"

3
これはコミュニティwikiである必要があります
トロ

1
コミュニティWikiになりました。楽しい。
ガレス

4
もっとパイプされた?私はあなたが少なく以下-Fで幸せになるだろうと賭け
derobert

ソートの前に「ソート」があることを除いて、ソートは完全な入力を必要とするため、-Fを少なくすると、ソートが速く表示されるだけで、かなり速くなります。
GreenKiwi 2009年

1
:念のために誰もがあなたのエイリアスを、ブラウズリストを作成し、ソースすることを可能にするサービスがあり、興味があるalias.sh
Sam152

回答:


81

アーカイブを抽出する小さなスクリプトがあります。ネット上のどこかで見つけました。

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

1
いいね 繰り返しになりますが、メモリからコマンドを知ることに関するIDE / Vimの議論があります。しかし、すばらしいスクリプトです。間違いなく.bashrc乾杯!
ガレス

19
これを行うUnpackerである「unp」という素敵でシンプルなlinuxコマンドがあります。
サンダーマレシャル

コマンドに1つの欠落している機能があります。boost.org/doc/libs/1_39_0/more/getting_started/…で 7zパッケージを正しく開くことができません。問題を解決する方法を知っていますか?
レオレオポルドヘルツ

7
tarの新しいバージョンはアーカイブタイプを自動的に検出するため、「tar xvf」だけでサポートされているすべての形式を抽出できます。
モリアーティ教授

@Sander dtrxもそれで悪くはありません。アーカイブが独自のサブディレクトリに抽出されるようにします。
東武

39

私は非常に多くの異なるマシンを使用しているため.bashrc、特に現在ログインしているサーバーの名前を含むようにコマンドプロンプトを常に設定します。このように、私がtelnet / sshの3つのレベルにいるとき、間違ったウィンドウに間違ったものを入力することはありません。それは本当にrm -rf .間違ったウィンドウに吸い込まれます!(注:自宅では、telnetはすべてのマシンで無効になっています。職場では、sshは常に有効になっているとは限らず、多くのマシンへのルートアクセス権はありません。)

~/bin/setpromptが実行するスクリプトには.bashrc、次のものが含まれています。

RESET="\[\017\]"
NORMAL="\[\033[0m\]"
RED="\[\033[31;1m\]"
YELLOW="\[\033[33;1m\]"
WHITE="\[\033[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} "

このスクリプトは、プロンプトをホスト名に設定し:)、最後のコマンドが成功した:(場合と最後のコマンドが失敗した場合に続きます。


$?チェックはとてもすてきなアイデアです、私はそれが好きです。
デロバート2009年

6
プロンプトにもステータスを表示しますが、数値を保持し、ゼロ以外の場合は赤、それ以外の場合は緑に色付けします。
-pgs

興味深い....
imapollo

25

以下のマンページの色により、マンページが少し読みやすくなります。

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"

24

これ以上cd ../../../ ..ではなくup 4

引数として渡された数が多くなると、デフォルトで1ずつ増加しません(stackoverflow.comのコメント内のリンクにあり、少し変更されています)。

up(){
  local d=""
  limit=$1
  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

次のようなものを使用します。#ディレクトリナビゲーションエイリアスalias ..='cd ..' alias ...='cd ../..' alias ....='cd ../../..' alias .....='cd ../../../..'
マットケネフィック14年

19

私は多くの異なるマシンを扱っているので、私のお気に入りの1つは、頻繁にSSHする必要がある各マシンのエイリアスです:

alias claudius="ssh dinomite@claudius"

また、良いセットアップに便利です.ssh/configし、sshのキーも簡単マシンの中でホッピングを行うこと。

私のお気に入りのエイリアスのもう1つは、ディレクトリを上に移動するためのものです。

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"

履歴は非常に役立ちますが、デフォルトでは、ほとんどのディストリビューションでは、各シェルが終了することで履歴が吹き飛ばされ、最初はあまり保持されません。私は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など、出力の特定の列を取得するために、出力をパイピングすることがよくありましたdf -h | awk '{print $2}'。これを簡単にするためfawkに、.bashrcに関数を作成しました。

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

df -h|fawk 2これで実行できるようになり、入力の手間が省けます。

区切り文字(たとえばawk -F:for /etc/passwd)を指定する必要がある場合、この関数は明らかにそれを処理できません。この要点の少しオーバーホールされたバージョンはawk、フィールド番号の前に任意の引数を処理できます(ただし、stdinからの入力が必要です)。


2
私はsshエイリアスとsshキーも使用します...それはとても簡単になります
-devin

1
履歴管理のヒントについては+1。
レネSaarsoo 09年

2
ホスト名エイリアスを.ssh / configに配置して同じ効果を得ることができます。この場合、「ユーザー名dinomite」でエントリー「ホストcloudius」を追加
Sirex

15

GPG暗号化bashrc

sudoersで簡単に読めないように、bashrcに入れたいものがすべてあると確信しています。これに対する私の解決策は次のとおりです。

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

私はそれを作るGPGエージェントを持っているので、数時間に1回だけ秘密鍵のパスワードを入力するだけです。定義した変数、関数、エイリアスはRAMから抽出できるため、システムのユーザーを信頼する必要があります。ただし、これは主にラップトップで使用します。盗まれた場合、次のようなものを簡単に見られたくありません。

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

その場合も履歴を暗号化しますか?$ homeを暗号化しない理由
Rqomey

@Rqomey、全体のポイントは、エイリアスや関数によって隠されているため、パスワードが.bash_historyに表示されないため、履歴を暗号化する必要がないことです。これであなたは次のように物事を見るMYsql < garbagecollect.sql代わりにmysql -uadmin -psecret < garbagecollect.sql
ブルーノBronosky


12

私はこれをあちこちに設定していましたが、1)何が起こっているのかを完全に理解し、2)これらの機能にアクセスできる場合でもカスタム.bashrcがインストールされていません。

私は、これらの日のためのエイリアスを使用する唯一の事は本当に長い行の繰り返しタイピングを削減することがある(例えば。alias myhost='ssh -T user@my.remote.host screen -dAr'


2
長く有用なコマンドを記憶することで合意しました。ただし、暴走したサーバーでかなり頻繁に「ディスクスペース」を実行していることがわかります(つまり、PHPはあちこちでコアダンプしています)。
ガレス

ええ、私は実際にそれに似たものを持っています(du / home / * --max-depth 1 | sort -n> /home/.sizes)毎晩実行します共有マシン。
pjz 09年

1
ただし、定期的に使用するシステムにカスタム構成を展開するのは簡単です。
東武

あなたのsshエイリアスのフォローアップのように、これは私がいつもやっていることです。DNSが停止した場合でも、私は常にIPでこれを行います。
jwbensley

9

そこにあるライナーと小さなスクリプトは永遠に続く可能性があります。man 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 "$@"
        $1 "$2"
    }
    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
}

2
あなたのhistory -pトリックが好きです。
東武

9

あなたがシステム管理者であり、root権限で多く作業する場合のBashのちょっとしたヒント:

shopt -o noclobber

これにより、出力(> filename)をリダイレクトした場合に、既存のファイルのコンテンツを誤って破棄することを防ぎます。> | filenameでいつでも上書きを強制できます。


8

私はbashrcに次のものを持っています

function __setprompt {
  local BLUE="\[\033[0;34m\]"
  local NO_COLOUR="\[\033[0m\]"
  local SSH_IP=`echo $SSH_CLIENT | awk '{ print $1 }'`
  local SSH2_IP=`echo $SSH2_CLIENT | awk '{ print $1 }'`
  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:~]$

6

私はこれを.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

ログインシェルをscreenに設定する(および.screenrcでbashを設定する)場合、SSHを入力するたびにscreenは自動的に切断された画面に再接続を試みます。それが失敗すると、新しい画面が作成されます。
ダンウディ2009年

@Dan Udey私はあなたが自分で提案したことを試していませんが、私が投稿したbashはsshログインでのみ画面を起動し、ログインシェルとして設定画面として、ローカルログインでも起動します。おそらくあなたが望むもの。それはちょうど私が欲しいものではありません。:
ボータック2009年

切断が心配な場合は、moshを
jwbensley

5

fortuneとにかく、いくつのエイリアスが必要ですか?

cdd現在、そのサーバーで作業する可能性が最も高い場所に移動するエイリアスを作成するのが好きです。

PATH再定義は本当に属して.bash_profile.bashrcます。

私が日常的に大量のscreensを使用するサーバーでは、次のもの.bashrcがあります。

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

screensは、たとえばで設定されましたscreen -U -S chaos1。)


2
@chaos「とにかく、何個のエイリアスが必要ですか?」。勝つために。失敗のためのfrak(および代替スペル)。
ガレス

以下の手順に従ってください。1).bashrcでPATHを拡張します。2)「bash」と入力します。3)「echo $ PATH」と入力します。4)「bash」と入力します。5)「echo $ PATH」と入力します。6)あなたよりもシステム管理者のベストプラクティスについて多くのことを知っているので、人々を無知にダウンボーティングし、in辱することに頭を打ちます。
カオス

私はあなたがわずかに正当な理由を持っていることに感銘を受けました。パスがまだ拡張されていない非ログインシェルを簡単に取得できます。私はその愚かなことを取り戻します。元々、.bashrcなどに重要な変数を設定すべきでないと言っていたと読みました。
イアンケリング

おそらく、誰かが「.bashrcまたは.bash_profileでPATH変数を設定する必要があります」を開始する必要がありますか?
ガレス

3
@Ian Kelling:私が実際に言っているのは、ログインごとに1回実行されるべき操作は.bash_profileに属し、シェルのインスタンス化ごとに1回実行されるべき操作は.bashrcに属するということです。
カオス

5

とりわけ、以下のデフォルトをいくつか設定し、誤って端末を閉じないようにし、履歴内の前方ナビゲーションを有効にします。

# 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

+1export IGNOREEOF="2"
serverhorror

5

私はいくつかのビットがあります:

# 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"

3
HISTCONTROL行は、単なるシェル変数であるため、互いにオーバーライドします。ignorebothは、ignorespaceとignoreupsを組み合わせます。
アニカバックストローム

4
cd -
BDの

5

/ 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"


4

「フォルダ」エイリアスは素晴らしいです!スペースを含むディレクトリでエラーが発生しないように、少し変更しました。

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

2
ディスク使用量でソートされたフォルダー、いいです
dotjoe

3

設定するのではなく、手動で物事を知ることについて、@ pjzのコメントをエコーし​​ます。特に、私がいつもしているように、多数のマシンにアクセスする場合。

私が間違いなく知っているのはset -o vi、bashのvi編集コマンドを知っていて、emacsのコマンドを知らないからです(Ctrl + Aが干渉しますscreen)。自分の箱に入れて.bashrc

またexport EDITOR=vim、最近のディストリビューションの多くはデフォルトでnanoになっているため、viを期待していたときに、何かを編集する必要のあるユーティリティによって投入されるのが最も面倒です。:-/

プロンプトも変更します。ずっと前に、最後のエラーコードを追加するだけで十分に便利であることがわかりました。そして、プロンプトのフルパス名が好きです。そして現在のscreen数も。そして、現在のユーザーとホスト名を含めることは理にかなっています。私のプロンプトはPS1='\u@\h $PWD $WINDOW [$?] \$ '


\ wはフルパス名を提供する必要があります(たとえば、「/ home / me」が「〜」になったときにホームディレクトリ階層内にいる場合を除きます:
dr-jan

\ wを使用しないのは "except for"ビットです。:
staticsan 09年

3

ウィンドウサイズが変更されたかどうかを確認するためにbashをチェックします(ターミナルウィンドウのサイズを変更した場合に行編集が変にならないようにします)

shopt -s checkwinsize

これは私のお気に入りです。bashを上書きするのではなく、履歴に追加ます。通常、bashを起動すると履歴がメモリにロードされ、閉じると書き込みが行われます。つまり、2つのシェルをロードし、両方を使用してから両方を閉じると、最後に閉じたシェルがすべての変更を上書きします。

このスニペットにより、まずすべての変更を追加するだけで(バッファー全体で上書きするのではなく)、次にすべてのコマンドの後に変更を書き込みます。実際には、.bash_historyのライブ更新が行われるため、新しいターミナルを起動すると、他の実行中のセッションの履歴からすべてのコマンドを取得できます。

shopt -s histappend
PROMPT_COMMAND='history -a'


3

鉱山は次のとおりです。

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)}\[\033[01;30m\]\h\[\033[00m\]:\[\033[01;34m\]\W\[\033[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 "$1" -name "$2" -exec grep -H "$3" "{}" \; }

# 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'

2

これらは私のお気に入りです:

export HISTFILESIZE=1000000000
export HISTSIZE=1000000

私は、決して忘れないコマンドライン履歴を持つことが好きです。

残念ながら、しばらく前にcronからシェルを起動しました。このシェルは何とか.bashrcを読み取らず、すべてを500行に切り詰めて、1年以上の歴史を破壊しました。したがって、これらを/ etc / bashrcに入れることをお勧めします。


2

私のお気に入りのいくつかを次に示します。

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 $1 && cd $1
        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'

2

私はこれを1日に約20回使用して、最後に変更したディレクトリにcdします。

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

これらの2つは、よく使用されるディレクトリの永続的なブックマークを保持します。

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

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

2

以下からの自動化LinuxやUnix管理カークバウアーによって(素晴らしい本!)

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

最初の改行は私のものです。前の出力とプロンプトの間に明確な線を入れたいです。残りは:

\ u =ユーザー名

\ h =ホスト

\ w =作業ディレクトリ

$?=最後の戻りコード


1

いくつかのことを手動で$ 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

1

私は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 $1 ~/.backup/`basename $1`-`date +%Y%m%d%H%M`.backup ; }

@Andrew:最初のコードをOSXで実行できませんでした。プロンプト設定が壊れます。
レオレオポルトヘルツ준영

ここで正常に動作します(10.6.X)
Rev316

1

これは私のお気に入りの1つです。

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

認証を忘れた場合は、sshセッション後に ssh-addを実行して入力を無駄にすることなく、認証を行うことができます。


1

いくつかの良いもの

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'
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.