2011-06-21 10:31:01 +0000 2011-06-21 10:31:01 +0000
37
37

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

shシェル(bashではありません)を使って、Linux/UNIXのどのコマンドがカレントディレクトリを表示しますか?

$ *showmewhereiam*
/sys/kernel/debug
$

回答 (4)

60
60
60
2011-06-21 10:32:09 +0000

pwdを試してみてください。

$ pwd
/home/<username>
```.
11
11
11
2011-06-21 12:48:02 +0000

一般的な答えは pwd ですが、これは指定されたディレクトリにどのようにして到達したか、ルートにシンボリックリンクが含まれているかどうかによって異なる結果が得られる可能性があることに注意してください。

例えば、real という名前のディレクトリがあり、そのディレクトリへのシンボリックリンクが virtual という名前であり、cd ディレクトリに virtual した場合、実際のディレクトリは 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 コマンドを独自の内部バージョンに置き換えることが多いことに注意してください。

1
1
1
2017-02-20 09:13:21 +0000
$ pwd
/your/current/directory
$

pwdprint作業ディレクトリ から来ています。

Linuxのマニュアルページから。

名前

pwd - カレント/ワーキングディレクトリの名前を表示する

シノプシス

pwd [OPTION]…

説明

現在の作業ディレクトリの完全なファイル名を表示する。

-L , –logical シンボリックリンクを含む場合でも環境からPWDを使用する

-P . –physical

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

–help

ヘルプを表示して終了

–version

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

注. あなたのシェルは独自のバージョンの pwd を持っているかもしれません。あなたのシェルは独自のバージョンの pwd を持っているかもしれませんが、通常はここで説明したバージョンよりも優先されます。サポートしているオプションの詳細については、お使いのシェルのドキュメントを参照してください。

(…)

1
1
1
2011-06-21 13:24:23 +0000

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

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

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

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

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

編集:ただ、OPではbashではなくshに興味があると書いてあるのに気づきました。まあ、これが役に立つことを願っています。

関連する質問

6
10
11
5
4