ls
検索できない非常に混乱した動作に直面しました。ディレクトリにコンテンツがあることを示しますが、コンテンツが作成されたディレクトリにある場合にのみ表示されます。
お見せします:
ciprian Documents $ pwd
/Users/ciprian/Documents
ciprian Documents $ ls ../Downloads/rss22/
22rss-USB/
ciprian Documents $ ls ../Downloads/rss22/22rss-USB/
HTML/
ciprian Documents $ cd ../Downloads/rss22
ciprian rss22 $ ls
ciprian rss22 $ ls 22rss-USB/
gls: cannot access '22rss-USB/': No such file or directory
cd
編集した後は、../Downloads/rss22
内容が空白のように見えます。 I次のIの場合、ここの最初のケースのようにcd ~/Desktop
空白になります。ls ../Downloads/rss22/
私にとって、これは次のツールがあるかもしれないことを示唆しています。../Downloads/rss22
~へ Documents
。ところで、どのように表示すべきかわかりません。ls -a ~/Documents
このフォルダに関する内容は表示されません。
どうしたの?
これらのファイルは、アーカイブから部分抽出を試みて作成されます。unzip 22rss-USB.zip "22rss-USB/HTML/**/*" -d ../Downloads/rss22/
ちなみに私はアップルシステム私はそれが重要ではないと思いますが(Unixですか?)私はBash 5.1.16(デフォルトのzshで変更されています)を使用しています。
:pwd の出力はシェル組み込みtype pwd
コマンドです。
cd -P ../Downloads/igarss22/
これは私が期待どおりに表示されることを示しています。これに関する詳細情報はどこで確認できますか?man cd
については何も表示されません-P
。
今、その後cd -P ../Downloads/igarss22/
ciprian Documents $ cd -P ../Downloads/igarss22
ciprian igarss22 $ pwd
/Users/ciprian/Library/CloudStorage/OneDrive/Downloads/igarss22
正しい。だから私はこれを忘れていました。~/Documents
私のOneDriveの下のフォルダへのシンボリックリンク。
$ ll ~/ | grep Doc
lrwxr-xr-x 1 ciprian 38 May 19 2022 Documents -> /Users/ciprian/OneDrive/Documents
どんな魔法と変化のためにMacOS v12(モントレー)、実際に住んでいます/Users/ciprian/Library/CloudStorage/OneDrive
。
何が起こったのかまだわかりません。
答え1
違いは物理的処理と論理的処理にあります..
。
明らかに、2つの別々のDownloads
ディレクトリがあります。
- 一つは
/Users/ciprian/Downloads
- もう一つは
/Users/ciprian/Library/CloudStorage/OneDrive/Downloads
一部のシェル(すべてのPOSIXシェルを含む)には、コマンドで「ユーザーが示すように正確に現在のパスを取得し、右端の要素を切り取り、結果のパスに変更」として処理するbash
オプションがあります。シンボリックリンクを使用すると、これは論理的な「私たちが来た場所に戻る」役割を果たします。 (シンボリックリンクとユーザーが呼び出した)から(次にこの時点の新しいパスは)次に戻ります。そこ。これを使用すると、得られる明示的な動作です。..
cd
/Users/ciprian/Library/CloudStorage/OneDrive/Documents
~/Documents
/Users/ciprian
~
/Users/ciprian/Downloads
cd -L
他のプログラムは通常これを行いません。実際のパスに従うので、ディレクトリをからに変更することは../Downloads
常に/Users/ciprian/Library/CloudStorage/OneDrive/Documents
に変更することを意味します/Users/ciprian/Library/CloudStorage/OneDrive/Downloads
。cd -P
シェルのこの(バグ付き)機能が気に入らない場合は、それを無効にするシェル固有の方法があるかもしれません。bash
シェルの場合、または同様のシェル起動スクリプトにまたはをset -P
追加すると、明示的に使用されない限り、すべてのコマンドはそのオプションで機能します。set -o physical
~/.bashrc
bash
cd
-P
-L
ノート。文書はBashの内部コマンドであるため(SHELL BUILTIN COMMANDSセクション)-P
にあります。man bash
cd
答え2
もう1つの可能性はOneDriveに関連しています。リクエストに応じてファイルそしてフォルダリダイレクトオプションはMacOSとWindowsで利用できますが、OneDrive for Businessに限定することができます。
- https://support.microsoft.com/en-us/office/save-disk-space-with-onedrive-files-on-demand-for-mac-529f6d53-e572-4922-a585-e7a318c135f0
- https://learn.microsoft.com/en-us/sharepoint/redirect-known-folders-macos
どちらのオプションも、One Drive対応ディレクトリツリーからフォルダとファイルのローカルコピーを削除して、ローカルボリュームのスペースを節約する機能を提供します。
ローカルファイルは次のことができます。手動One Driveクライアントで利用可能な「スペースクリア」操作を使用して削除します。ただし、上記の機能のいずれかまたは両方を使用すると、3か月間アクセスしなかったファイル/フォルダのローカルコピーが削除されると思います。
これらのリソースのクラウドコピーへのポインタは保持され、デフォルトのファイル管理アプリケーション(Explorer / Finderなど)またはOneDriveクライアントを使用してアクセスすると、OneDriveはすぐにダウンロードしてローカルで使用できるようにします。
問題は、これがクラウドポインタとしてのみ存在するファイルとフォルダを一覧表示しますが、ファイルを開くかディレクトリナビゲーションなどの操作を実行するときに同期をトリガーしないほとんどの* nixシェルでは機能しないことです。 )。
これは、WSL の bash シェルから OneDrive for Business サポート ディレクトリにアクセスするときによく発生する問題です。
これらのファイルとフォルダはローカルデバイスに再同期する必要があります。今後シェルで処理するか、次を使用する必要があります。常にこの端末にありますローカルで利用可能でスペースを最適化するために削除されないようにするオプション。