サンドエイリアスを作成することは可能ですか?


8

次のエイリアスを任意のファイル名で機能させる方法を探しています。

alias dim='cd /home/jason/Documents; vim *the desired file*; cd'

このエイリアスを変更して、任意のファイル名を入力できるようにする方法があるかどうか疑問に思っています。

dim *the desired file*

それでも同じ結果が得られます。基本的に、エイリアス名の後に入力されたものをエイリアス自体に呼び出す方法はありますか?何かのようなもの:

alias dim='cd /home/jason/Documents; vim <what is typed after alias>; cd'

//、これの目的は何ですか?
Nathan Basanese

回答:


8

いいえ、シェルエイリアスを使用してそれを行うことはできません。関数を使用する必要があります。

ここに仕事をするための簡単な関数があります:

dim() {
cd /home/jason/Documents
vim "$1"
cd
}

関数dimは引数としてファイル名を受け取ります。このコードスニペットを~/.bashrcファイルの最後に配置して、次のように実行できます。

dim file.txt

file.txt任意のファイル名に置き換えます。

、現在のシェルセッションからそれを実行するために、最初のファイルを:source~/.bashrc

. ~/.bashrc

3
「$ 1」は何を意味していますか?私は初心者で、コピーして貼り付けて1日と呼ぶのではなく、学習しようとしています。
Jason Basanese 2015

1
@JasonBasanese私はあなたの決定に感謝します:) $1関数への最初の位置パラメータまたは引数を示します..関数またはスクリプトに入力を与える方法としてそれbashを考えます... すべてのプログラミング言語がこれを使用するように...これを使用します... Googleでこのことについて、多くのリソースを見つける...
heemayl

3

エイリアスではなく、代わりに関数を使用してください。

以下からのBashのmanページ

エイリアス

[...]置換テキストで引数を使用するためのメカニズムはありません。引数が必要な場合は、シェル関数を使用する必要があります(以下の関数を参照)。

したがって、関数は次のようになります。

function dim(){cd〜jason / Documents; vim $ *; cd-;}


1
この場合〜/ Documentsは問題なく動作しませんか?この場合、$記号と*記号はどういう意味ですか?とは-CDが必要な後ですか?通常、私はcdと入力するだけでディレクトリに移動します。
ジェイソンバサニーズ2015

「通常、私はcdと入力するだけで、ディレクトリに移動します」–私cdは、あなたのホームディレクトリに移動するプレーンを知っているだけです。cd ..1レベル上がります。cd -元のディレクトリに移動しますcd
Chriki 2015

1
@JasonBasanese:はい〜/ドキュメントはすべてのユーザーに機能します(すべてのユーザーの機能であれば)。入力した最初の引数ではなく、リスト全体をvimに渡すだけの$*ような$1 $2 $3...ものです。そして、Chrikiが言ったcd -ように、前のディレクトリ(関数を呼び出したときのディレクトリ)に戻ります。
CijcoSistems 2015
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.