`-`はCDでのみ使用できますか?

`-`はCDでのみ使用できますか?

cd -現在のディレクトリと以前のディレクトリを切り替えることができます。

以前に他のコマンドの引数として使用されていたようです。 ifがwithと同じ意味であるかどうか-は覚えていません。-cd

私はこれがうまく-いかないことを知りましたls

- CDでのみ使えますか?

答え1

-で定義POSIX ユーティリティ構文ガイド標準入力として:

Guideline 13:
For utilities that use operands to represent files to be opened for either 
reading or writing, the '-' operand should be used to mean only standard input 
(or standard output when it is clear from context that an output file is being 
specified) or a file named -.

ファイルを読み書きするユーティリティの定義を表示できます。cdはこれらのユーティリティに属していないため、-CDではこの指示に従わないでください。

また、POSIX は-独自の意味を定義します。CD:

-
    When a <hyphen> is used as the operand, this shall be equivalent to the 
    command:

    cd "$OLDPWD" && pwd

    which changes to the previous working directory and then writes its name.

答え2

cd -これは、実際にディレクトリを以前のディレクトリに変更するたびに設定される略語ですcd "$OLDPWD" && pwd$OLDPWD

処理は-アプリケーションによって異なります。一部のアプリケーションは、たとえば次のことを-示すために使用されます。STDINgrepawk

他のアプリケーションは、Michaelの回答で指定されているように、選択したすべてのもの-の略語として使用できますsu---login

答え3

これPOSIX ユーティリティ構文ガイド(具体的には#13)ファイル名を読み取ると予想されるユーティリティの場合は-標準入力を表し、ファイル名を書き込むと予想されるユーティリティの場合は-標準出力を表すことを指定します。たとえば、標準出力にcat somefile -内容をコピーし、somefile標準入力から読み取った内容をコピーします。

cdこのコマンドはファイルを読み書きしないため、このガイドは適用されません。cd何か別のことをします。パラメータは-「古いディレクトリ」を意味します。このコマンドcd -はと同じですcd "$OLDPWD" && pwd。この動作は、cdコマンドだけでなく、直接インスピレーションを受けたコマンドにも適用されますpushd

これは-オプションではなくオペランドです。 or-ではなくandで始まるパラメーターのみがオプションです。オペランドという主な意味は、その特別な意味に影響を与えないことです。たとえば、という名前のサブディレクトリに変更されますが、という名前のディレクトリには変更されません。繰り返しますが、呼び出すファイルから読み込むのではなく、標準入力から読み込みます。-----cd -- -P-Pcd -- -cd --cat -- --

答え4

Michaelはこれを述べましたが、su他のアプリケーションではそれを使って何をしたいのか-を意味することができます(stdinで読むのは一般的です)。Gitの使用方法は実際には-次のとおりです。cd、支店変更用。

$ git status
On branch master

$ git checkout foobar
$ git status
On branch foobar

$ git checkout -
$ git status
On branch master

関連情報