SOはるかに簡単になります。ここに私が使用するものがあります( 'diskspace'& 'folders'は特に便利です)。
# 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"
アーカイブを抽出する小さなスクリプトがあります。ネット上のどこかで見つけました。
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
}
私は非常に多くの異なるマシンを使用しているため、私の.bashrc
は常に、特に現在ログインしているサーバーの名前を含むようにコマンドプロンプトを設定します。このようにして、Telnet/Sshの3つのレベルの深さで、間違ったウィンドウに間違ったものを入力しません。それは本当に間違ったウィンドウでrm -rf .
に吸い込まれます! (注:自宅では、すべてのマシンでtelnetが無効になっています。職場では、sshが常に有効であるとは限らず、多くのマシンへのrootアクセス権がありません。)
~/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} "
このスクリプトは、プロンプトをホスト名に設定し、最後のコマンドが成功した場合は:)
、最後のコマンドが失敗した場合は:(
を続けます。
マンページの色を少なくすると、マンページが少し読みやすくなります。
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環境変数として使用することでも取得できます。このページャーを男性だけでなく使用したい場合は、次のようにPAGER変数を使用します。
export PAGER="/usr/bin/most -s"
引数として渡された数値として多くのディレクトリを上に移動します(デフォルトで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
}
私はさまざまなマシンを扱っているので、私のお気に入りの1つは、頻繁にSSHで接続する必要がある各マシンのエイリアスです。
alias claudius="ssh dinomite@claudius"
マシン間のホッピングをさらに簡単にするために、適切な .ssh/config
および ssh keys を設定することも役立ちます。
私のお気に入りのエイリアスのもう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
で記憶力を引き出すことができます。
df -h | awk '{print $2}'
のように、出力の特定の列を取得するためにawk
を介して出力をパイピングしていることがよくありました。これを簡単にするために、.bashrcに関数fawk
を作成しました。
function fawk {
first="awk '{print "
last="}'"
cmd="${first}\$${1}${last}"
eval $cmd
}
df -h|fawk 2
を実行できるようになりました。これにより、タイピングの手間が大幅に削減されます。
区切り文字を指定する必要がある場合(例:、awk -F:
for /etc/passwd
)、この関数は明らかにそれを処理できません。 this Gist の少し改良されたバージョンは、フィールド番号の前の任意のawk
引数を処理できます(ただし、標準入力からの入力が必要です)。
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:[email protected]/latest; }
これはこのための素晴らしいリソースです:
私はこれらをいたるところにセットアップしていたが、1)何が起こっているのかを完全に理解し、2)これらの機能にアクセスできることを意味するので、「手動」で行う方法を覚えておく方が良いことに気付いたカスタム.bashrcがインストールされていません。
私が最近エイリアスを使用しているのは、本当に長い行の繰り返しタイピングを減らすことです(例:alias myhost='ssh -T [email protected] screen -dAr'
)
そこにあるワンライナーと小さなスクリプトは永遠に続く可能性があります。私は男バッシュと自分で物事を書くことをお勧めします。 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
}
あなたがシステム管理者であり、多くのルート権限で作業している場合のBashに関する小さなヒント:
shopt -o noclobber
これにより、出力(> filename)をリダイレクトした場合に、既存のファイルの内容が誤って破棄されるのを防ぐことができます。 > | filenameでいつでも強制的に上書きできます。
私は私の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:~]$
私はこれをしばらく.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
私はいくつかのビットを持っています:
# 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"
とにかく、fortune
のエイリアスはいくつ必要ですか?
私は、現在そのサーバーで作業している可能性が最も高い場所に移動するcdd
エイリアスを作成するのが好きです。
PATH
再定義は、実際には.bash_profile
ではなく.bashrc
に属しています。
screen
sの大規模なセットを日常的に使用するサーバーでは、.bashrc
は次のようになります。
alias s1="screen -dr chaos1"
alias s2="screen -dr chaos2"
alias s3="screen -dr chaos3"
# ... and so on
(screen
sは、たとえばscreen -U -S chaos1
で設定されました。)
特に、いくつかのデフォルトをlessに設定し、誤って端末を閉じないようにし、履歴を順方向にナビゲートできるようにします。
# 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
/ 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"
Grep、egrep、zgrepなどのすべてのgrepコマンドに色を付けるには、.bashrcに次のようにします
export GREP_OPTIONS='--color=auto'
「フォルダ」エイリアスは素晴らしいです!スペースを含むディレクトリでエラーが発生しないように少し変更しました。
alias folders='find . -maxdepth 1 -type d -print0 | xargs -0 du -sk | sort -rn'
私はそれらを設定するのではなく手動で知ることについての@pjzのコメントをエコーします。特に、いつものように、多数のマシンにアクセスする場合。
したがって、私が間違いなく知っているのはset -o vi
です。これは、bashのvi編集コマンドを知っていて、emacsのコマンドを知らないためです(Ctrl + Aはscreen
に干渉します)。私は自分の箱に.bashrc
に入れました
私はexport EDITOR=vim
を含める必要があることもわかりました。なぜなら、私がviを期待していたときに、何かを編集する必要のあるユーティリティによって投入されるのが最も煩わしい最近のディストリビューションのデフォルトはnanoだからです。 :-/
プロンプトも変更します。私はずっと前に、最後のエラーコードを追加することは私がそれを好きになるのに十分便利であることを発見しました。そして、プロンプトの完全パス名が好きです。そして現在のscreen
の数も。また、現在のユーザーとホスト名を含めることは理にかなっています。私のプロンプトはPS1='\u@\h $PWD $WINDOW [$?] \$ '
です
ここに鉱山があります:
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'
Shell-fu.org の.bashrc collection
Bashでウィンドウサイズが変更されたかどうかを確認します(ターミナルウィンドウのサイズを変更した場合、行編集がおかしくなるのを防ぎます)。
shopt -s checkwinsize
これは私のお気に入りです。 overwriteの代わりに、履歴にappendをbashします。通常、bashを起動すると履歴がメモリに読み込まれ、bashを閉じると履歴が書き込まれます。つまり、2つのシェルをロードし、両方を使用してから両方を閉じると、最後に閉じたシェルがすべての変更を上書きします。
このスニペットを使用すると、まず最初に(バッファー全体で上書きするのではなく)変更を追加し、すべてのコマンドの後に変更を書き出します。実際には、更新中の.bash_historyがライブで取得されるため、新しい端末を起動すると、実行中の他のセッションの履歴からのすべてのコマンドが得られます。
shopt -s histappend
Prompt_COMMAND='history -a'
ここに私のお気に入りのいくつかがあります:
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'
From Automating Linux and Unix Administration by Kirk Bauer(素晴らしい本!)
PS1='\n[\u@\h]: \w\n$?> '
最初の改行は私のものです。以前の出力とプロンプトの間に明確な線を入れたいです。残りは:
\ u =ユーザー名
\ h =ホスト
\ w =作業ディレクトリ
$? =最後の戻りコード
私はこれを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
}
これらは私のお気に入りです:
export HISTFILESIZE=1000000000
export HISTSIZE=1000000
私は決して忘れないコマンドラインの履歴があるのが好きです。
残念ながら、しばらくの間、私は.bashrcを読み取れなかったcronからシェルを起動し、すべてを500行に切り刻んで、1年以上の歴史を破壊しました。したがって、これらは/ etc/bashrcに置くことをお勧めします。
これは私のお気に入りの1つです。
alias ssh='if [ "$(ssh-add -l)" = "The agent has no identities." ]; then ssh-add; fi; /usr/bin/ssh "$@"'
認証を忘れた場合は、ssh-add after sshセッションを実行して入力を無駄にすることなく認証できます。
カップル良いもの
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'
# vi ~/.bashrc # red/green terminal colors regarding exit code
export Prompt_COMMAND='PS1="`
if [[ \$? = "0" ]];
then echo "\\[\\033[0;32m\\]";
else echo "\\[\\033[0;31m\\]";
fi`[\u@\h \w]\[\e[m\] "'
export PS1
IP_ADDRESS_BASH=`ip addr | grep -w inet | gawk '{if (NR==2) {$0=$2; gsub(/\//," "); print $1;}}'`
PS1="\h $IP_ADDRESS_BASH \w % "
次に、ログインしたマシンのIPが表示されます。
$ 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
私は多くのマシンで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 ; }
mkdircd () { mkdir -p "$@" && eval cd "\"\$$#\""; }
ecb () { emacsclient -n -a emacs $@ & } # open in emacsclient in the background
ecp () { emacsclient -n $(which $@) & } # open a given file found in a $PATH in emacsclient
ecr () { Sudo_EDITOR="emacsclient -a emacs" sudoedit $@; } # start emacsclient or emacs and open the file as root
eCf () { emacs --batch --eval "(byte-compile-file \"$@\")"; } # byte-compile file
eCa () { emacs --batch --eval "(batch-byte-compile-if-not-done)" *.el; } # byte-compile all el files in the current directory and it's children
。 $ HOME/bin/git-Prompt/ git-Prompt.sh
毎日のCLI GrindからEdgeを取り除くために使用するいくつかのエイリアス...
# I find myself doing this a lot
alias hg='history | grep '
# Likewise this, plus I'm always mistyping it...
alias findy='find . -name'
# sometimes you're just not sure you want to delete something...
alias trash='mv -t ~/.local/share/Trash/files --backup=t'
alias vb='vim ~/.bashrc'
# I find typing 'cd ..' less than optimal
alias up='cd ..'
alias 2up='cd ../../'
alias 3up='cd ../../../'
alias 4up='cd ../../../../'
# re-map caps lock key to be Ctrl
# (works on Linux, at least)
xmodmap -e "remove lock = Caps_Lock"
xmodmap -e "add control = Caps_Lock"
# helpful history settings:
export HISTCONTROL=ignoredups
export HISTCONTROL=ignoreboth
export HISTIGNORE=ls:ll:la:l:cd:pwd:exit:mc:su:df:clear:cls
仕事でSolarisシステムを使用する必要がある場合があります。
ただし、システムはPuppetを介して一元管理され、パスワードファイル(シェル設定を含む)が含まれます。
俺の .bashrc
したがって、次のようになります。
%!/bin/bash
exec /bin/tcsh
:)
サイズ変更後にGNU画面のウィンドウサイズを修正するには:
shopt -s checkwinsize
ディレクトリの権限を表示するには、ショートカットls -ld
:
alias lld='ls -ld'
履歴表示:
alias h='history | zgrep'
そして、自分のzgrep
スクリプトの内容。エイリアスに直接詰め込む方法を理解できませんでした。
#!/bin/sh
grep "${*-.}"
私は画面にハマっていて、マシンへのSSH接続に次のショートカットを使用しています。このスクリプトでは、p hostname
と入力してホストにSSHで接続して画面を実行するか、o hostname
と入力してローカルマシンで同じように実行画面を実行します。
まず、実行中のスクリプトと同じ名前のSSHサーバーに接続するスクリプト。これをsimple_ssh
と呼びます:
#!/bin/sh
BASENAME=$(basename $0)
if [ "$SCREEN" = "1" ]; then
export SCREEN=0
exec screen -RD scr$BASENAME -s $0
Elif [ "$SCREEN" = "2" ]; then
exec ssh $BASENAME "$@" -t 'screen -RD'
fi
exec ssh $BASENAME "$@"
これをパスのmars
にシンボリックリンクすると、mars
がssh mars
のショートカットになります。
adam@pluto:bin$ ln -s simple_ssh mars
adam@pluto:bin$ mars
adam@mars:~$
$SCREEN
環境変数を使用すると、接続でGNU screenを自動的に実行できます。SCREEN=1
は、ローカルでscreenを実行します(たとえば、screenがホストにインストールされていない場合)およびSCREEN = 2はホスト自体で実行します。
これをショートカットするには、いくつかのエイリアスを使用します。
alias o='SCREEN=1 exec'
alias p='SCREEN=2 exec'
次のような~/.ssh/config
ファイルを指定して、スクリプトを使用してすべてのホストのシンボリックリンクを作成します。
Host mars
HostName mars.example.com
User abackstrom
スクリプト、sshconfig2simplessh
:
#!/bin/sh
BASENAME=$(basename "$0")
USAGE="Usage: $BASENAME /path/to/bin"
if [ -z "$1" ] ; then
echo $USAGE
exit 0
fi
if [ ! -d "$1" ] ; then
echo "$1 is not a directory" >&2
exit 1
fi
cd "$1"
HOSTS=$(grep '^Host ' < ~/.ssh/config | cut -d' ' -f2)
for Host in $HOSTS ; do
if [ ! -e "$Host" ]; then
echo ln -s simple_ssh "$Host"
ln -s simple_ssh "$Host"
fi
done
Fedora
alias install=Sudo yum install
Debian
alias install=Sudo apt-get update && Sudo apt-get install