エイリアスを自動的に保存するコマンドラインutil/scriptはありますか?例えば。
save-alias my-ip="curl ipecho.net/plain"
これでエイリアスが定義され、〜/ .bashrcまたは〜/ .zshrcで追加/更新されます。
エイリアスを定義して自動的に保存するスクリプトを書くことを考えていました。設定ファイルに毎回手動でエイリアスを追加しなければならないのは面倒です。しかし、おそらく私は車輪の再発明をするつもりであり、皆さんはすでにこの煩わしさに対するいくつかの解決策を持っていると思いました。
.aliasesファイルに新しいエイリアスを追加し、すぐにロードします。重複を2回追加することはないため、同じエイリアスを2回以上定義すると、構成ファイルに重複をスパムする代わりに、以前のバージョンが更新されます。
ALIASES_FILE_PATH=$HOME/.aliases
function save-alias() {
ALIAS_NAME=`echo "$1" | grep -o ".*="`
# Deleting dublicate aliases
sed -i "/alias $ALIAS_NAME/d" $ALIASES_FILE_PATH
# Quoting command: my-alias=command -> my-alias="command"
QUOTED=`echo "$1"\" | sed "s/$ALIAS_NAME/$ALIAS_NAME\"/g"`
echo "alias $QUOTED" >> $ALIASES_FILE_PATH
# Loading aliases
source $ALIASES_FILE_PATH
}
エイリアスに個別のファイルを使用する代わりに、設定ファイル自体(.zshrcまたは.bashrc)にそれらを保存します。また、必要に応じて、他のものをエイリアスの下に保持できるように、設定ファイルの指定された場所にのみエイリアスを追加します。 「#END ALIASES」の前にエイリアスが追加されるため、正確な文字列があることを確認してください。したがって、たとえば、設定ファイルは次のようになります。
plugins=(git)
#and bla bla bla
# ALIASES
alias test-alias="echo I was added automatically"
# END ALIASES
# Yes you can have the bottom of the config file free.
# Because it will store aliases inside ALIASES block
source $ZSH/oh-my-zsh.sh
# and etc
これは、次のコードによって実現されます。
CONFIG_PATH=$HOME/.zshrc
function save-alias() {
ALIAS_NAME=`echo "$1" | grep -o ".*="`
# Checking whether the alias name is empty.
# Otherwise sed command later will match and delete every alias in the file
if [[ -z "$ALIAS_NAME" ]]; then
echo 'USAGE: save-alias alias_name="command" ' 1>&2
echo ' save-alias hello="echo hello world" \n' 1>&2
echo "Wrong format. Exiting..." 1>&2
exit 1
fi
# Deleting dublicate aliases
sed -i "/alias $ALIAS_NAME/d" $CONFIG_PATH
# Quoting command: my-alias=command -> my-alias="command"
QUOTED=`echo "$1"\" | sed "s/$ALIAS_NAME/$ALIAS_NAME\"/g"`
# Appending the command to the config (before "# END ALIASES")
sed -i "/# END ALIASES/i alias $QUOTED" $CONFIG_PATH
#reloading config file.
source $CONFIG_PATH
# instead of reloading the whole config you might want to append
# to a new file as well, then source it and then rm new file
}
echo "alias ${1}" >> $HOME/.bash_aliases
上記のコマンド(「save-alias」として表される)では、以下は失敗します
save-alias test-alias="echo hello world"
引用符が削除され、コマンドが次のように追加されるため、失敗します
alias test-alias=echo hello world
次のエラーで失敗します。
bash: alias: hello: not found
bash: alias: world: not found
解決策は、二重引用符を使用することです。
save-alias test-alias='"echo hello world"'
少し面倒です
コマンドを2回実行すると、同じエイリアスが構成ファイルに2回追加されることがわかります。
alias test-alias="echo hello world"
alias test-alias="oh no the config file is getting spammed"
追加してすぐに利用できるようにするには:
# In your .bashrc or .bash_profile file, add:
newalias() {echo "alias ${1}" >> $HOME/.bash_aliases; source ~/.bash_aliases; }
これは、.bash_aliases
ファイルを使用することを意味しますおよび.bashrc
または.bash_profile
からソースを取得します。
. ~/.bash_aliases
一部の人々は、最初は.bash_aliasesファイルを持っておらず、現在.bashrc
または.bash_profile
でエイリアスが定義されているだけかもしれません。 >>
が現在存在しない場合は.bash_aliases
ファイルを作成するため、これは引き続き機能します。存在しない場合は、ファイルに追加されます。ただし、参照を追加する手動の手順を実行する必要があり、その時点で既存のエイリアスを移動することを検討することもできます。
それは実際には素晴らしいアイデアです。関数を作成します:
addalias() {
echo "alias ${1}" >> $HOME/.bash_aliases
}
これを私の.bashrc
に追加し、ログアウトして再度ログインします。
使用法は次のとおりです。
addalias ..='cd ../../'