2017-06-13 9 views
0

LinuxでBourneシェルを使用していますが、自分の.profileにショートカットを作成して、サブディレクトリ間をすばやくジャンプしようとしています。Linuxディレクトリのショートカットを変更します。

ショートカット「cds」を作成して、最初のディレクトリから2番目のディレクトリにジャンプしたいと考えています。これらは、彼の例のためのサンプルディレクトリです。

/ウェブ/サイト/ DEV1/CSS
/ウェブ/サイト/ test1の/ CSS

使用法:CDは、エコーの作品test1の

cds() { 
    echo `pwd` | sed -e "s/$1/$2/g" 
    cd `pwd` | sed -e "s/$1/$2/g" 
    pwd 
} 

をDEV1が、CDラインにはありません。なぜそれがうまくいかず、どうやって動かせるのか教えていただけますか?ご協力いただきありがとうございます。あなたはechoから

echo `pwd` | sed -e "s/$1/$2/g" 

出力を行うあなたの機能で

+0

スタックオーバーフローは、プログラミングおよび開発に関する質問のサイトです。この質問は、プログラミングや開発に関するものではないので、話題にはならないようです。ヘルプセンターの[ここではどのトピックを参照できますか](http://stackoverflow.com/help/on-topic)を参照してください。おそらく、[Super User](http://superuser.com/)や[Unix&Linux Stack Exchange](http://unix.stackexchange.com/)の方が良いかもしれません。他の場所で話題になっていると感じたら、[マイグレーションを依頼する](0120)を参照してください。 – jww

答えて

1

は、sedにパイプされており、変更が行われています。 sedはその出力を標準出力に出力します。

しかし、cdは、出力には何も書き込まれませんので、あなたは、現在のディレクトリ(pwd)にINGの、その後のディレクトリを置き換えるためのsedに(空の)出力をパイプcdです。代わりにsedによってパイプされたpwdの出力の引数でcdを呼び出すことができます。

ここではあなたの代わりにするコードです:

cds() {   
    cd $(pwd | sed -e "s/$1/$2/g") 
    pwd 
} 

まず、これはすなわちpwd | sed -e "s/$1/$2/g"$()内のコードを評価します。 pwdは現在のパスをstdoutに出力し、sedは引数で指定されたパスの一部を置き換えます。したがって、$(pwd | sed -e "s/$1/$2/g"は新しいディレクトリに評価されます。次に、cdがそのディレクトリに移動します。

+0

レッスンとその答えをありがとう。それは動作し、私は今なぜ私が知っている。 –

関連する問題