web-dev-qa-db-ja.com

現在のディレクトリを返すのは、Linux / UNIXのshシェルのどのコマンドですか?

shシェル(bashではなく)を使用して、Linux/UNIXのどのコマンドが私の現在のディレクトリを表示しますか?

$ *showmewhereiam*
/sys/kernel/debug
$
37
Hieu Nguyen

pwdを試してください。

$ pwd
/home/<username>
60
loudandclear

一般的な答えはpwdですが、特定のディレクトリへの到達方法、およびルートにシンボリックリンクが含まれているかどうかによって、結果が異なる場合があることに注意してください。

たとえば、realというディレクトリとvirtualというディレクトリへのシンボリックリンクがあり、cdvirtualディレクトリにすると、実際のディレクトリがpwdであっても、virtualはそのrealディレクトリ名を表示します。

実際の基本ディレクトリを表示するには、pwd -Pまたはreadlink -fを使用します(任意のパスの場合):

$ mkdir real 
 $ ln -s real virtual 
 $ cd virtual 
 $ pwd 
/home /username/tmp/virtual
$ pwd -P 
/home /username/tmp/real
$ readlink -f。
/home /username/ tmp/real

多くの場合、シェルはpwdコマンドを独自の内部バージョンに置き換えます。したがって、私のシステム(RHEL6)では、_pwd(1)のマニュアルページでは--physical-Pと同様に機能すると示唆していますが、bashを実行しているため、しません:

$ pwd --physical 
 bash:pwd:-:無効なオプション
 pwd:使用法:pwd [-LP] 
 $/bin/pwd --physical 
/home /username/tmp/real
$/usr/bin/env pwd --physical 
/home /username/ tmp/real
11
Mark Booth
$ pwd
/your/current/directory
$

pwd印刷作業ディレクトリに由来します。

Linuxのmanページから:

pwd - 現在のディレクトリまたは作業ディレクトリの名前を表示します。

あらすじ

pwd[オプション] ...

説明

現在の作業ディレクトリのフルファイル名を表示します。

- L - 論理

シンボリックリンクが含まれていても、環境からのPWDを使用する

- P - 物理的

すべてのシンボリックリンクを避ける

- help

このヘルプを表示して終了する

- バージョン

バージョン情報を出力して終了する

注意:あなたのシェルはそれ自身のバージョンのpwdを持っているかもしれません。サポートしているオプションの詳細については、シェルのドキュメントを参照してください。

(...)

1
simhumileco

他の人が言ったように、pwdは通常十分に仕事をします。しかし、私を助けてくれたアイデアを追加したいと思います。

現在一般的に使用されているすべてのシェルで、コマンドプロンプトの外観をカスタマイズできます。私は、私のコンピューターの名前と作業ディレクトリの両方を表示するようにカスタマイズします。そうすれば、私はいつも自分がどこにいるか知っています。 (コンピューター名の部分は、使用しているターミナルウィンドウがリモートサーバーへのSSHに使用されているかどうかを認識するのに役立ちます。)たとえば、Plasticoと呼ばれるラップトップで新しいターミナルウィンドウを開くと、次のように表示されます。

Plastico ~> cd Desktop/
Plastico ~/Desktop> cd ~/Sites/raygunrobot.com
Plastico ~/Sites/raygunrobot.com> cd /usr
Plastico /usr> 

ホームディレクトリが~に短縮されていることがわかります。ターミナルプロンプトでこれを行うと、非常に便利です。Finderウィンドウを見るよりも、自分がどこにいるのかが一目でわかります。

Tcshでは、set Prompt = 'Plastico %~%# 'をホームディレクトリの.tcshrcファイルに追加してこれを行います。 export PS1="Plastico $PWD $ "を.profileファイルに追加して、kshでも実行しました。しかし、Linuxユーザーであるため、おそらくBashを使用しますが、これはあまり経験がありません(私はそのような変人です)。しかし、 のように見えます .bashrcファイルにPS1="Plastico \w $ "を追加することでそれができるかもしれません。

Edit:bashではなくshに興味があるOPステートに気付いただけです。しかたがない;関係なく、これが役立つことを願っています。

1