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
. 이는 ~모든 파일/폴더(거의 모든 파일/폴더에는 최소한 하나의 읽기 권한이 있어야 함)에 있어야 하지만 전체 행에는 없어야 합니다.
우리가 얻고자 하는 줄이 첫 번째 줄이 되면 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
다음 과 같이 인코딩합니다.엑스코딩 사용자에프지연)이며 기계 구문 분석에 더 안전합니다.
$ 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 */