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
。 :)
答え2
ここで解決策を見つけました。lsが指定されたディレクトリに関する情報のみを表示し、サブファイルまたはフォルダの内容に関する情報を表示しないようにするにはどうすればよいですか?
基本的にそれはすべてで、情報を表示するようにls -ldO foo
追加するだけです。| awk '{ print $5 }'
答え3
引用したとおり@タイロ、@sopigal試してみることをお勧めしますstat
。 「ユーザーフラグ」を%Xf
次のようにエンコードします。XコーディングユーザーF遅延)であり、機械解析にはより安全です。
$ stat -f "%Xf" ~/Library
8000
ユーザーフラグの16進値は次の位置にありますgrep UF /usr/include/sys/stat.h
。 macOS 10.11以降:
#define UF_SETTABLE 0x0000ffff /* mask of owner changeable flags */
#define UF_NODUMP 0x00000001 /* do not dump file */
#define UF_IMMUTABLE 0x00000002 /* file may not be changed */
#define UF_APPEND 0x00000004 /* writes to file may only append */
#define UF_OPAQUE 0x00000008 /* directory is opaque wrt. union */
/* #define UF_NOUNLINK 0x00000010 */ /* file may not be removed or renamed */
#define UF_COMPRESSED 0x00000020 /* file is hfs-compressed */
/* UF_TRACKED is used for dealing with document IDs. We no longer issue
notifications for deletes or renames for files which have UF_TRACKED set. */
#define UF_TRACKED 0x00000040
#define UF_HIDDEN 0x00008000 /* hint that this item should not be */