티스토리 뷰
macOS에서는 2가지 방법으로 파일 상태를 확인할 수 있다.
1. 파일 및 폴더 숨긴 상태 변경 (chflags)
2. 파일 및 폴더 속성 변경 (xattr)
macOS Finder에서 숨긴 파일은 파일을 숨기는 역할도 하지만, 연결 프로그램을 연결할 때 숨겨진 .app 파일은 선택할 수 없다.
이로 인해 불편함이 생겨날 수 있으며 시스템과 관련된 파일이 아니라면 반드시 파일을 보이게 설정하는 것이 바람직하다.
macOS Finder에서 아래 그림과 같이 숨겨진 상태를 가지고 있는 파일은 이름과 아이콘이 반투명으로 표현된다.
만약 숨김 파일이 보이지 않는다면 다음 글을 통해 숨겨진 파일을 볼 수 있게 설정하도록 하자.
파일 및 폴더 숨긴 상태 변경 (chflags)
Spotlgiht에서 terminal.app을 실행하자.
특정 파일 및 폴더를 숨겨진 상태로 설정하고 싶다면 다음 명령어를 이용하자.
chflags hidden <file or path>
만약 숨겨진 상태를 해제(삭제)하고 싶다면 위 명령어 일부 hidden을 nohidden으로 변경하면 된다.
chflags nohidden <file or path>
특정 폴더와 폴더 안에 있는 모든 파일들의 상태를 바꾸고 싶다면 -R 옵션을 추가한다.
-R 은 recrusive 의미를 담고 있다.
chflags -R nohidden <file or path>
명령어 사용 후 반드시 파인더를 재실행 해야 한다.
kilall Finder
파일 및 폴더 속성 변경 (xattr)
xattr은 파일 및 폴더에 대한 속성(attributes)을 설정할 수 있는 명령어이다.
chflags 명령어를 이용하여 특정 파일 및 폴더를 nohidden으로 설정하여도 파일 및 폴더 속성에 의해 파일 상태가 계속 숨겨진 파일에서 변경할 수가 없는 경우가 있다.
파일 속성을 변경하여 숨겨진 파일의 상태를 확인하고 숨겨진 파일에서 숨겨지지 않는 파일로 설정해보자.
특정 폴더에 들어 있는 파일의 상태를 확인하려면 다음과 같은 명령어를 사용한다.
test_folder엔 아무 속성도 없지만 test_folder_hide 폴더는 com.apple.FinderInfo 라는 속성을 가지고 있다.
이 밖에도 파일 및 폴더에 적용된 속성은 더 많을 수도 있다.
$ ls -lae@ <folder path>
drwxr-xr-x 5 max staff 160 12 28 13:50 .
drwxr-xr-x 9 max staff 288 12 28 13:49 ..
-rw-r--r--@ 1 max staff 6148 12 28 14:05 .DS_Store
com.apple.FinderInfo 32
drwxr-xr-x 2 max staff 64 12 28 13:49 test_folder
drwxr-xr-x@ 2 max staff 64 12 28 13:49 test_folder_hide
com.apple.FinderInfo 32
적용된 속성을 더 세밀하게 알아보려면 다음 명령어를 사용한다.
test_folder를 조회하면 적용된 속성이 없어 아무 것도 나오지 않았다.
$ xattr -l <file or folder path>
$ xattr -l test_folder
test_folder_hide를 세밀하게 알아보자 역시 다음 명령어를 사용한다.
출력된 값에서 com.apple.FinderInfo는 속성 이름이다. (attribute name)
여러 개의 값들이 출력됬는데 당황하지말고 32byte hex data가 출력된 것이라 생각하면 된다.
9번째 Offset에 40 이란 값이 존재하는데 이 값으로 인해 해당 파일이 계속 숨긴 상태를 유지하고 있는 것이다.
이 값은 이전에도 말했다시피 chflags로 변경할 수도 설정할 수도 없다.
$ xattr -l <file or folder path>
$ xattr -l test_folder_hide
com.apple.FinderInfo:
00000000 00 00 00 00 00 00 00 00 40 00 00 00 00 00 00 00 |........@.......|
00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000020
파일의 숨겨진 상태를 해제하기 위해서는
숨겨지지 않은 폴더에서는 아무 속성도 없었으니 test_folder_hide에 적용된 com.apple.FinderInfo 속성을 삭제하면 된다.
$ xattr -d <attribute name> <file or folder path>
$ xattr -d com.apple.FinderInfo test_folder_hide
다시 파인더를 재시작하자
killall Finder
파인더를 살펴보면 test_folder_hide 폴더에 숨긴 상태가 지워진 것을 확인할 수 있다. (선명하게 보이는 아이콘 및 이름)
ls -lae@ 명령어를 통해 적용된 속성 값을 확인해봤지만 속성이 삭제되어 적용된 속성값이 없는 것을 확인할 수 있다.
$ ls -lae@ <folder path>
drwxr-xr-x 5 max staff 160 12 28 13:50 .
drwxr-xr-x 9 max staff 288 12 28 13:49 ..
-rw-r--r--@ 1 max staff 6148 12 28 14:05 .DS_Store
com.apple.FinderInfo 32
drwxr-xr-x 2 max staff 64 12 28 13:49 test_folder
drwxr-xr-x@ 2 max staff 64 12 28 13:49 test_folder_hide
직접 파일 및 폴더를 대상으로 com.apple.FinderInfo 속성에 40이란 값을 주어 다시 파일을 숨겨진 상태로 설정할 수도 있다.
xattr -wx <attribute name> <32byte hex data> <file or folder path>
xattr -wx com.apple.FinderInfo '00 00 00 00 00 00 00 00 40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00' test_folder_hide
파인더를 재시작해보면 파일의 상태가 숨겨진 것으로 확인할 수 있다.
리눅스에서도 xattr 명령어는 사용이 가능하다.