コマンドラインを使用する場合、頻繁に実行するコマンドがいくつかあるでしょう。
これらのコマンドの中には非常に長いものもあり、毎回コピーや入力をするのは面倒です。そのような場合、コマンドのエイリアスを作成できます。
例えば、h を cd ~ のショートカットとして使いたい場合、シェルの設定ファイルに以下のように定義します:
alias h='cd ~'
この行を ~/.zshrc(または ~/.bashrc)に追加してください。
ホームディレクトリにそのようなファイルが見つからない場合は、以下のコマンドで作成できます:
touch ~/.zshrc
以下に便利なエイリアスがあれば、~/.zshrc ファイルに追加してください。
基本
ディレクトリの変更
cs() { cd $@ && la }
alias cd='cs'
alias ..='cd ..'
alias ...='cd ../..'
alias ....='cd ../../..'
alias cb='cd -'
alias d='cd ~/Desktop'
alias dl="cd ~/Downloads"
alias h='cd ~'
alias /='cd /'
# 作業ディレクトリを最前面のFinderウィンドウの場所に変更
cdf() { cd "$(osascript -e 'tell app "Finder" to POSIX path of (insertion location as alias)')" }
ファイルの表示
alias ls='gls --color --group-directories-first -F'
alias l='ls'
alias la='ls -A'
alias ll='ls -AhlS'
alias ds='du -d 1 -h 2>/dev/null | sort -h'
alias pwd='sed "s/ /\\\ /g" <<< ${PWD/#$HOME/"~"}'
alias p='pwd'
alias path='echo -e ${PATH//:/\\n}'
-
ls:glsを使用するには、brew install coreutilsでcoreutilsをインストールする必要があります。treeコマンドと同じ色付けを使用できます。-
--colorオプションはglsコマンドの出力を色付けします。 -
--group-directories-firstオプションはディレクトリを最初に配置します。 -
-Fオプションはディレクトリ名に末尾の/、シンボリックリンクに@などを追加します。
-
-
la,ll:lsはla='ls -A'の前にgls --color --group-directories-first -Fとして定義されています。つまり、la='gls --color --group-directories-first -F -A'となり、llも同様です。-
-Aオプションは.と..を除くすべてのファイルとディレクトリを表示します。 -
-hオプションは人間が読みやすい形式でサイズを表示します。 -
-lオプションはファイルサイズ、所有者、グループ、権限を表示します。 -
-Sオプションはファイルサイズでソートします。
-
-
ds:du -d 1は現在のディレクトリ内のディレクトリのサイズを表示します。-
-hオプションは人間が読みやすい形式でサイズを表示します。 -
2>/dev/nullはエラーメッセージを非表示にします。 -
sort -hはパイプを使用してファイルサイズでソートします。
-
-
pwd:sed "s/ /\\\ /g"はすべてのスペースの前に\を配置します(エスケープのため)。<<<は「here string」です。${PWD/#$HOME/"~"}は現在のディレクトリパスの$HOMEを~に置き換えます。
オプションを指定する場合、ls -A -h -l -S の代わりに ls -AhlS を使用できます。
ファイルの編集
alias v='vi'
alias cp='cp -iv'
alias mv='mv -iv'
alias rm='rm -iv'
alias rf='rm -rf'
-
-iオプションはファイルを上書きする前に確認を求めます。 -
-vオプションはコピー、移動、削除されるファイルの名前を表示します。
検索
fb() { find . -size +$2M -type f -name $1 -exec ls -lhS "{}" +}
rn() { for filename in *.$1; do mv -f "$filename" $(echo "$filename" | sed -e "s/$2//g"); done }
dif(){ diff --color -u $1 $2 }
alias imgopt='open -a ImageOptim .'
alias grep='grep --color'
関数
引数付きのエイリアスを作成できます。これは関数と呼ばれます。関数は function_name() { commands } として定義されます。例えば、fb は2つの引数 $1 と $2 を取ります。$1 は最初の引数で、$2 は2番目の引数です。fb "*.pdf" 10 のように使用して、10 MB より大きい pdf という名前のファイルを検索します。
$1 と $2 に加えて、他の特殊変数もあります。
-
$0は関数名 -
$@はすべての引数 -
$#は引数の数 -
$?は最後のコマンドの終了ステータス -
$$は現在のシェルのプロセスID -
$!はバックグラウンドで実行された最後のコマンドのプロセスID
-
fbは現在のディレクトリで$2MB より大きく、名前が$1のファイルを検索します。-
-size +$2Mオプションは$2MB より大きいファイルを検索します。 -
-type fオプションはファイルのみを検索します(-type dはディレクトリのみを検索します)。 -
-name $1オプションは名前が$1のファイルを検索します。 -
-exec ls -lhS "{}" +オプションは見つかった各ファイルに対してls -lhSコマンドを実行します。
-
-
rnは拡張子が$1のファイルの名前から$2を削除してリネームします。例えば、rn txt asdfはaaasdfff.txtをaaff.txtにリネームします。
-exec <command> {} + は見つかった各ファイルに対して <command> を実行する一般的な構文です。{} はファイル名のプレースホルダーです。+ はコマンドの終わりを示す区切り文字です。
アプリを開く
alias hr='open .'
alias vs='code .'
alias c='open -a CotEditor.app'
alias chrome="open -a 'Google Chrome.app'"
-
hrは現在のディレクトリを開きます。 -
cは CotEditor を開きます。 -
vsは Visual Studio Code を開きます。 -
chromeは Google Chrome を開きます。
その他
## global aliases ##
alias -g C='| pbcopy'
alias -g G='| grep'
alias -g H='| head'
alias -g T='| tail'
alias -g NO='>/dev/null'
alias -g NE='2>/dev/null'
alias -g N='&>/dev/null'
alias his='history'
alias hg='history 0 | grep'
alias rl='exec ${SHELL} -l' # 再読み込み
calc() { python -c "import math; print($*)"}
ZIP 暗号化
zipen(){
zip -er enc.zip "$@"
}
zipen はファイルを ZIP 圧縮し、パスワードで暗号化して enc.zip として保存します。zipen file1 file2 dir1 のように使用します。
"$@" はすべての引数に展開される特殊変数です。例えば、上記の例では "$@" は file1 file2 dir1 に展開されます。
Mac OS 設定
Finder で隠しファイルを表示/非表示
alias show="defaults write com.apple.finder AppleShowAllFiles -bool true && killall Finder"
alias hide="defaults write com.apple.finder AppleShowAllFiles -bool false && killall Finder"
Command + Shift + . を使用して Finder で隠しファイルを表示/非表示にすることもできます。
すべてのデスクトップアイコンを非表示/表示
alias dhide="defaults write com.apple.finder CreateDesktop -bool false && killall Finder"
alias dshow="defaults write com.apple.finder CreateDesktop -bool true && killall Finder"
スクリーンショット設定
alias dwl='defaults write com.apple.screencapture location'
alias ddl='defaults delete com.apple.screencapture location'
alias drl='defaults read com.apple.screencapture location'
dwl ~/path/to/dir でスクリーンショットの保存場所を変更できます。
スリープ設定
alias sleepon='sudo pmset -a disablesleep 0'
alias sleepoff='sudo pmset -a disablesleep 1'
Python
alias wpy='which python'
alias pip='pip3'
alias pin='pip install'
alias puin='pip uninstall'
alias pup='pip install --upgrade pip'
alias pinreq='pip install -r requirements.txt'
alias pf='pip list --format=freeze'
alias pfr='pip list --format=freeze > requirements.txt'
venv のアクティベート、デアクティベート
alias acv='source venv/bin/activate'
alias deac='deactivate'
GitHub
alias g='git'
alias ga='git add'
alias gb='git branch'
alias gc='git commit'
alias gch='git checkout'
alias gcl='git clone'
alias gd='git diff'
alias gf='git fetch'
alias gi='git init'
alias gm='git merge'
alias gps='git push'
alias gpl='git pull'
alias gpom='git push origin main'
alias gst='git status'
新しい GitHub リポジトリを作成して初回コミットを行う
1つのコマンドで新しいリポジトリを作成する関数を定義できます。
# 使用法: ginit private[public]
ginit() {
git init
git add .
git commit -m "🎉 Initial commit"
gh repo create --"$1" --source=. --push
}
gh コマンドを使用するには GitHub CLI をインストールする必要があります。
絵文字付きコミットメッセージ
# Git コミット、全て追加、プッシュ — 一度に実行
gacp() { git add . && git commit -m "$*" && git push origin main }
gini() { gacp "🎉 Initial commit"}
gnew() { gacp "✨ NEW: $@" }
gimp() { gacp "👌 IMPROVE: $@" }
gprg() { gacp "🚧 PROGRESS: $@" }
gmtn() { gacp "🔧 MAINTAIN: $@" }
gfix() { gacp "🐛 FIX: $@" }
ghot() { gacp "🚑 HOTFIX: $@" }
gbrk() { gacp "‼️ BREAKING: $@" }
grem() { gacp "🗑️ REMOVE: $@" }
gmrg() { gacp "🔀 MERGE: $@" }
gref() { gacp "♻️ REFACTOR: $@" }
gtst() { gacp "🧪 TEST: $@" }
gdoc() { gacp "📚 DOC: $@" }
grls() { gacp "🚀 RELEASE: $@" }
gsec() { gacp "👮 SECURITY: $@" }
# コミットタイプを表示
gtyp() {
NORMAL='\033[0;39m'
GREEN='\033[0;32m'
echo "$GREEN gini$NORMAL — 🎉 Initial commit
$GREEN gnew$NORMAL — ✨ NEW
$GREEN gimp$NORMAL — 👌 IMPROVE
$GREEN gprg$NORMAL — 🚧 PROGRESS
$GREEN gmtn$NORMAL — 🔧 MAINTAIN
$GREEN gfix$NORMAL — 🐛 FIX
$GREEN ghot$NORMAL — 🚑 HOTFIX
$GREEN gbrk$NORMAL — ‼️ BREAKING
$GREEN grem$NORMAL — 🗑️ REMOVE
$GREEN gmrg$NORMAL — 🔀 MERGE
$GREEN gref$NORMAL — ♻️ REFACTOR
$GREEN gtst$NORMAL — 🧪 TEST
$GREEN gdoc$NORMAL — 📚 DOC
$GREEN grls$NORMAL — 🚀 RELEASE
$GREEN gsec$NORMAL — 👮 SECURITY"
}
gitignore.io
gitignore.io を使用すると .gitignore ファイルを簡単に作成できます
function gi() { curl -sLw n https://www.toptal.com/developers/gitignore/api/$@ ;}
おまけ: プロンプトのカスタマイズと色付け
PS1="%F{082}%n%f %F{051}%~%f %# "
RPROMPT='%T'
-
PS1はメイン(左側)のプロンプトで、RPROMPTは右側のプロンプトです。 -
%nはユーザー名を意味します -
%~は現在のディレクトリを意味します -
%#は root の場合は#を、そうでない場合は%を表示します。 -
%Tは24時間形式で現在時刻を表示します(12時間形式の場合は%t)。 -
%F{色番号}~%fを使用してプロンプトを色付けできます。色番号はこちらで確認できます。
プロンプト展開の詳細については、このリンクを参照してください。
最初のプロンプトを除いて、すべてのプロンプトの前に空白行を入れたい場合は、以下を追加します。
precmd() { precmd() { echo } }
参考文献
- jupyterbook Development Conventions
- How to Write a Git Commit Message
- Emoji-Log
- gitmoji-cli
- emoji-cheat-sheet
- Complete list of github markdown emoji markup
- Commit message examples