Googleでこれを調べましたが、これまでに誰もこれを尋ねていないようです。エイリアスを設定してプログラムのコマンドライン引数として使用できる方法はありますか?コマンドラインパラメータとしてbashエイリアスを使用する方法
ssh myserver
とmyserver
例えば
が私のサーバー一般的に
Googleでこれを調べましたが、これまでに誰もこれを尋ねていないようです。エイリアスを設定してプログラムのコマンドライン引数として使用できる方法はありますか?コマンドラインパラメータとしてbashエイリアスを使用する方法
ssh myserver
とmyserver
例えば
が私のサーバー一般的に
のIPアドレスになるように定義され、いや、あなたのシェルは、あなたのためのコマンドラインパラメータを置き換えることはありません。
特定のの例では、実際にはいくつかの選択肢があります。あなたの~/.ssh/config
ファイルを編集し、エントリを追加するようにできます。
Host myserver
HostName 1.2.3.4
そして、あなたはssh myserver
を実行したときに、今、sshは実際に1.2.3.4
をホストに接続します。
また見え~/.hosts
ファイルを維持することができるように:システムのリゾルバを使用しています
myserver 1.2.3.4
今は何も - ssh
を含んで - 1.2.3.4
にmyserver
を変換します。
実際には方法があります。しかし、2つのエイリアスを定義する必要があります。
まず:Bashのマニュアルの状態(LESS=+/'^ALIASES' man bash
)
ALIASES 別名値の最後の文字が空白の場合、エイリアスに続く次のコマンドワードはまた、エイリアス展開のためにチェックされています。
documented in POSIX spec。リンクについてThanks to @gniourf_gniourf:
単語を置き換える別名の値が<空白>で終わる場合、シェルは別名置換については、次のコマンドワードをチェックしなければなりません。このプロセスは、有効なエイリアスではない、またはエイリアス値が<ブランク>で終わらない単語が見つかるまで続きます。
あなたはこれら二つの別名を定義するのであれば、(末尾のスペースに保管して下さい):別名を持つ
$ alias ssh='ssh '
$ alias myserver='192.168.0.1'
$ set -x
$ ssh myserver
+ ssh 192.168.0.1
クリア:
$ unalias ssh
$ unalias myserver
注1: ksh
およびzsh
マニュアルにも記載されています
注2:dash
(文書が見つかりません)で正しく動作していることがテストされています。
[この動作はPOSIXで指定されています](http://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_03_01):_単語を置き換えるエイリアスの値が
@gniourf_gniourfコメントとリンクをありがとう。 –
larsks' helpful answer簡潔な説明とssh
使用に固有の役に立つソリューションが含まれています。より一般的な説明とそれを補完する:BinaryZebra's helpful answerで説明別名チェーンの例外を除いて
、エイリアスは、一般的にのみコマンドとして名を使用することができ、少なくとも直接ではなく、引数コマンドではありません。
するコマンドとして非リテラル(値のプレースホルダ)を使用引数、あなたは以下のオプション(例えば、ブレース展開をグロブ、または算術展開などの他のshell expansionsを脇に残して)持っている:
を参照番号変数;例えば、myserver=1.2.3.4
として以前に定義された、例えば、ssh "$myserver"
である。 ~/.bashrc
にあります。
command substitutionを使用してください。すなわち、stdout出力が引数値として機能するコマンド。例えば:ssh "$(echo '1.2.3.4')"
しかし、あなたはまた、定義済みの引数を指定して、コマンドのラッパーを提供するために、シェル機能を使用することができます。例えば、
# Define the function, typically in ~/.bashrc
# "[email protected]" safely passes all arguments through to `ssh`.
# (If the arguments must partly go *before* the predefined argument, more work is needed.)
sshmyserver() {
ssh 1.2.3.4 "[email protected]"
}
# Use the function, optionally with arguments.
sshmyserver
シェルは、このような問題の環境変数、つまり 'myServer = 192.168.0.1'を使用します。 'ssh" $ myServer "'のように参照されます。一般に、エイリアス定義で時間を無駄にしないで、再利用可能なサービスを提供する '関数'を書くことを学びます。がんばろう。 – shellter
@shellter:_environment_変数ではなく_shell_変数を意味することを除いて、良いアドバイス。 – mklement0
@ mklement0:そうですね、あなたは意味論について正しいです。明確にしてくれてありがとう!皆さんお元気で。 – shellter