$ VARIABLEなしで文字列を置き換えるには、bash cliで別名を生成します。

$ VARIABLEなしで文字列を置き換えるには、bash cliで別名を生成します。

$variablesの前に "$"を使用せずに一般的に使用される文字列の別名を作成できますか?

文字列は固定でき、シェルプロンプトの存続期間中に変更する必要はありません。

bash $variablesがあることを知っていますが、$variablesの前に「$」を使用しない解決策を探しているので、入力が速くなります。

コマンド全体を短縮するエイリアスがあることはわかっていますが、コマンドを短くしたくなく、コマンドの一部だけを短くしたいと思います。

たとえば、次のように変更したいと思います。

$ ssh remote_server_1
$ scp remote_server_1
$ my_script.sh remote_server_1

$ ssh remote_server_2
$ scp remote_server_2
$ my_script.sh remote_server_2

これで:

$ aliasthingy r1="remote_server_1"
$ aliasthingy r2="remote_server_2"

$ ssh r1
$ scp r1
$ my_script.sh r1
$ another_script.sh r1

$ ssh r2
$ scp r2
$ my_script.sh r2
$ another_script.sh r2

以下を実行しないでください。

$ export r1="build_server_r1"
$ export r2="build_server_r2"

$ ssh $r1
$ scp $r1
$ my_script.sh $r1
$ another_script.sh $r1

$ ssh $r2
$ scp $r2
$ my_script.sh $r2
$ another_script.sh $r2

その理由は、各r1 r2の前に「$」を付けない方が前に$ r1 $ r2を入力するよりも速いので、「$」を削除できれば良いようです。

ベストアンサー1

SSHの特定のユースケースでは、エイリアスは次のとおりです。~/.ssh/config行く道です。これは、SSHのホストパラメータとオプションセットを減らして表現したものです。以前のエントリは不要ですが、$SSH経由でアクセスされるホスト名を呼び出さないコンテキストでは使用されず、SSHFS、rsyncなどのSSH経由でアクセス可能なホスト名を呼び出す他のコンテキストでも使用されます。

Host r1
HostName remote_server_1
UserName vassilis

Host r2
HostName remote_server_2
UserName vp

Host r2test
HostName remote_server_2
UserName guest

実際にコマンドラインエイリアスが必要な他のユースケースでは、zshには次のように定義されたグローバルエイリアスがあります。alias -g。バッシュにはそんなことはありません。

alias -g r1=remote_server_1
ssh r1

グローバルエイリアスの主な問題は、意味がなくてもどこでもトリガーされることです。

% echo r1
remote_server_1

ただし、単語の一部である場合は実行されないため、scp r1:/some/path .動作しません。

シェルコマンドラインのどこでも動作させるには、変数を定義してから入力します$。キーボードで入力するのが本当に難しい場合は、使いやすいキーにマッピングできます。たとえば、M-vを挿入するには、$次の場所に配置します.bashrc

readline_insert () {
  READLINE_LINE="${READLINE_LINE:0:$READLINE_POINT}${1}${READLINE_LINE:$READLINE_POINT:}"
  ((READLINE_POINT += ${#1}))
}
bind -x '\ev: readline_insert \$'

おすすめ記事