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


24

コンパイラによって生成されたファイルを含むディレクトリがあります。再構築するたびに、このディレクトリはクリーンになり、ビルドプロセス後にls空の出力が表示されます。私の後cd出しディレクトリの、その後戻ってそれがLsに右に動作します。質問は次のとおりです。

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

回答:


10

スクリプトは、おそらくそこにあるファイルだけでなく、ディレクトリを削除しています。したがって、cdディレクトリに移動してディレクトリが削除されると、ls実際には存在しないディレクトリで実行されます。

cd ..そしてcd (directory)あなた(新しく作成された)ディレクトリにアップし、バックに移動、そして期待どおりのファイルがあります。

最良の代替方法はcd、ディレクトリに出入りする代わりに、lsコマンドにディレクトリ名を追加し、親ディレクトリから実行することです。だから、ls YourSubdirectoryただの代わりにls


45

さらに短い方法があります: cd .


3
面白い。ハチドリのように、これは論理的には動作しないはずですが、まだ動作しているようです。私はあなたがそれを試みたのでそれが働くことを知っていると思います。それに関するドキュメントはありますか?すなわち、もしPOSIX / bash開発チームにいたら、これをバグだと考えたくなるでしょう。この方法で動作するはずだというドキュメントを知っていますか?
G-Manは「Reinstate Monica」と言います

3
ハヤブサのように、これは花の上に美しく浮かびますが、それでもハチドリをむさぼり食います。
マットファウス

はい!とても完璧
chrismarx

1
これがより良い答えです。
-deddebme

あ。私はそれを知っていました!方法がなければなりませんでした。ありがとう!
-andersoyvind

10

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

cd `pwd`

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


2

@Kentが言ったこと、またはディレクトリのみを削除せず、その内容のみを削除します。この方法で、ディレクトリに留まることができます(「cd .. && cd -」なしで)。


2

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


2

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

リスティングが再び必要になると確信している場合は、

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

ailasが作成されたら、エイリアスを〜/ .bashrcファイルに保存してください

alias | grep refresh >> ~/.bashrc

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


Unixではrefresh、すぐに使用できます。
ケノーブ

「そのまま」とはどういう意味ですか?私はそれを見て、「標準」を意味すると解釈しました。今、私はあなたが何を意味するのだろうと思っています。「UNIX」を定義します。Cygwinには「リフレッシュ」コマンド標準がありません(OK、CygwinにはPOSIX / * nix / whateverに標準である多くのものが欠けています)。また、私のLinuxシステムにもありません。
G-Manは「Reinstate Monica」と言います
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.