chflags hidden foo.txt
とを実行して、フォルダ/ファイルの隠しフラグを設定または設定解除できることを知っていますchflags nohidden foo.txt
。
しかし、フォルダ/ファイルが現在隠されているかどうかを知る方法はありますか?
フォルダ/ファイルがドットで始まるかどうかを確認したくありません。
ベストアンサー1
~によるとls マニュアルページ、フラグを表示するには、lsを使用して-O
オプションを結合できる必要があります。-l
たとえば、
ls -Ol foo.txt
-rw-r--r-- 1 harry staff - 0 18 Aug 19:11 foo.txt
chflags hidden foo.txt
ls -Ol foo.txt
-rw-r--r-- 1 harry staff hidden 0 18 Aug 19:11 foo.txt
chflags nohidden foo.txt
ls -Ol foo.txt
-rw-r--r-- 1 harry staff - 0 18 Aug 19:11 foo.txt
編集:OPが望んでいたものに対するより具体的な解決策を提供するために(以下の説明を参照)、フォルダが非表示になっていることを確認するには、オプションを-a
lsに渡してフォルダ自体を表示できます。その後、出力をsed -n 2p
次にパイプできます。スタックオーバーフロー) 対応する出力に必要なラインを取得します。一例:
mkdir foo
chflags hidden foo
ls -aOl foo | sed -n 2p
drwxr-xr-x@ 2 harry staff hidden 68 18 Aug 19:11 .
編集2:ファイルであってもフォルダであろうと動作しなければならないコマンドの場合は、少しハックな操作をする必要があります。
必要な出力行は、ls -al
そのエントリがファイルかフォルダなのかによって異なります。フォルダには総数が表示されますが、ファイルには表示されないためです。この問題を解決するには、grepで文字を見つけることができますr
。これは〜すべてのファイル/フォルダ(ほぼすべてのファイル/フォルダには少なくとも1つの読み取り権限が必要です)になければなりませんが、行全体には含まれません。
取得したい行が最初の行になったらhead -n 1
(または必要に応じてsed sed -n 1p
)、最初の行を取得できます。
したがって、ディレクトリを例にすると、次のようになります。
mkdir foo
chflags hidden foo
ls -aOl foo | grep r | head -n 1
drwxr-xr-x@ 2 harry staff hidden 68 18 Aug 19:11 .
そしてファイルを使うと:
touch foo.txt
chflags hidden foo.txt
ls -aOl foo.txt | grep r | head -n 1
-rw-r--r-- 1 harry staff hidden 0 18 Aug 19:11 foo.txt
編集3:grepより良い方法については、以下のTyiloの回答を参照してくださいr
。 :)