web-dev-qa-db-ja.com

BASHでディレクトリを更新するにはどうすればよいですか?

コンパイラによって生成されたファイルを含むディレクトリがあります。再構築のたびに、このディレクトリはクリーンアップされ、構築プロセスの後、lsは空の出力を提供します。私がディレクトリからcd出た後、そこに戻ると、lsは正しく機能します。質問は次のとおりです。

  1. ディレクトリを更新する他のよりエレガントな方法はありますか?
  2. ファイルを削除して再作成すると、実際にはどうなりますか?実際のディレクトリコンテンツを表示するためにcdが必要なのはなぜですか?
27
Roman

スクリプトは、ディレクトリだけでなく、ディレクトリも削除している可能性があります。したがって、その中にcdを入れてディレクトリを削除すると、実際には存在しないディレクトリに対してlsを実行します。

_cd .._とcd (directory)を使用すると、(新しく作成された)ディレクトリに移動して戻り、ファイルは期待どおりに存在します。

最良の代替手段は、ディレクトリの内外でcdingを実行する代わりに、lsコマンドにディレクトリ名を追加し、親ディレクトリから実行することです。したがって、lsだけでなく_ls YourSubdirectory_を使用します。

10
Kent

もっと短い方法もあります:cd .

49
wjr

奇妙に見えますが、短く、ディレクトリを更新します:

cd `pwd`

それらはバックティックであり、pwdを囲む単一引用符ではないことに注意してください。

10
user339088

エイリアスを作成しますrefresh = "cd .. && cd-"これはディレクトリを上に移動し、前のディレクトリにcdします

あなたが再びリストが必要になると確信しているなら、あなたは持つことができます

alias refresh="cd .. && cd - && ls -lrt"

ailasが作成されたら、次のようにして〜/ .bashrcファイルにエイリアスを保存します

alias | grep refresh >> ~/.bashrc

次回ログインしたときに利用できるようにします。

2
SK176H

@Kentの発言またはディレクトリを削除せず、その内容のみを削除します。これにより、ディレクトリにとどまることができ( "cd .. && cd -"なしで)、 "ls"は期待どおりに動作します。

2
ckujau

ディレクトリを削除しなかった方がよいでしょうが、cd ..; cd -の代わりにcd $PWDを実行できます。

2
Teddy