Linux の cd コマンドと謎のフラグ

Linux の cd コマンドと謎のフラグ

プラットフォーム:CentOS 6.2シェル:tcsh

cd私はBASHスクリプトをいじっていて、驚くべきことに気づいた。cd -オプション、しかし多くの疑問が残りました...

  1. なぜcd -? これは と重複していないのですかcd ..?

    編集
    [FatalError が指摘しているように、これら 2 つのコマンドは同じことを行いません...したがって、答えは「いいえ」です]

  2. -ブラウザのように、フラグ を使用して履歴をさらに遡ることはできますか?

    たとえば、 と入力するとcd -、前のディレクトリに移動しますが、そのコマンドをもう一度入力すると、直前にいたディレクトリに移動し、一種のループが作成されます。

    複数のレベルに戻るためのショートカットはサポートされていますか?

    編集
    で戻ることができることはわかっていますが、これが、たとえばvscd ..などの、より簡潔なディープ バックへの入り口になることを期待していました。これで、私が尋ねていることが明確になれば幸いです。cd -3cd ../../../

    編集2
    現在のフィードバックに関して言えば、 は特別なディレクトリですが、ターミナルの..組み込みでなどの省略形を使用できない理由や、組み込みで のようにオンにして使用できる履歴 (auto /など)を持つことができない理由がわかりません。これはセキュリティ/プライバシーのリスクになる可能性があることは理解していますが、ほとんどのシェル/ターミナルが行っているコマンド履歴の保存よりも悪いとは思いません。cd../../ ... ../cd ..5pushdpopdcd -3

  3. およびをcd介してアクセスできるのマニュアルページ(どちらのコマンドでも同じ) には、とフラグのみがリストされています。 ただし、 と入力すると が出力されます。 他のフラグと - (戻る) オプションは非標準であると考えてよいでしょうか。man cdhelp cd-L-P

    cd --helpUsage: cd [-plvn][-|<dir>].



  4. -nフラグとフラグは何の-vためにあるのでしょうか?

    どちらもホーム ディレクトリに戻るためのもののようですが、実験を通じてそれが私が理解できたすべてです。

ウェブリソースに関する簡単な説明[1][2]マニュアルページと同じ種類の情報が提供され、私の質問には答えませんでした。

注: 上記の 2 番目の Linux 中心のリソースでは、cdオプションが 2 つしかないと主張されていました (明らかに現在は当てはまりませんCentOS)。そのため、この機能は非標準である可能性があると私は想定しました。

答え1

  1. cd -は と同じではありませんcd ..cd -コマンドは前のあなたがいたディレクトリに戻ります。たとえば、 にいて を実行した場合/home/bob、 を実行cd /var/logするとcd -に戻ります/home/bobcd ..一方、 は常に親ディレクトリに移動します。
  2. そのような履歴を保存したい場合は、 をチェックしてpushdpopd「ディレクトリ スタック」を使用することをお勧めします。

    user@host:/etc/init.d$ pushd /var/log
    /var/log /etc/init.d
    user@host:/var/log$ pushd /tmp
    /tmp /var/log /etc/init.d
    user@host:/tmp$ popd
    /var/log /etc/init.d
    user@host:/var/log$ popd
    /etc/init.d
    

    ディレクトリ ツリー内の複数のレベルに戻る方法については、私が知る限り一般的な方法はありません。..これはシェルの機能ではなく、実際には親ディレクトリを参照する *nix の特別なディレクトリ リンクです。

  3. cdは組み込みコマンドなので、フラグと使用方法はシェルによって異なる場合があります。ただし、一般的に、あるシステムでのオプションは、cdbashのシステムでも同じである必要があります。

  4. 私のbashシェルにはこれらのフラグのどちらもリストされていません... または を使用して実験していますbashtcsh? を使用している場合は、tcsh基本的にまったく異なるコマンドを使用しているため、おそらくそこbashで実行して変更する必要がありますcd

編集:

man ページによるとtcsh:

-p を使用すると、dirs と同様に最終的なディレクトリ スタックを出力します。-l、-n、および -v フラグは、cd でも dirs と同じ効果があり、-p を意味します。

dirs(詳細を読みたい場合は、セクションを確認してください)。基本的には、コマンドの実行後にディレクトリ スタックを印刷するようです。

host:43> pushd /etc/init.d
/etc/init.d ~ 
host:44> pushd /var/log
/var/log /etc/init.d ~ 
host:45> pushd /tmp
/tmp /var/log /etc/init.d ~ 
host:46> cd -p
~ /var/log /etc/init.d ~ 
host:47> cd -v
0       ~
1       /var/log
2       /etc/init.d
3       ~
host:48> popd
/var/log /etc/init.d ~ 
host:49> cd -v
0       ~
1       /etc/init.d
2       ~

どちらもディレクトリ スタックを表示しますが、-v少し読みやすいようです。スタックの最上部 (要素 0) は現在のディレクトリで、1 は 1 回実行した場合に移動する場所popdなどです。

関連情報