"숨겨진"파일 플래그를 ls에 알리기


12

Mac OS X lshidden파일 플래그를 인식 할 수 있습니까?

현재 간단한 것은 다음을 ls -lO생성합니다.

$ ls -lO
total 0
drwxr-xr-x@  84 danielbeck  staff  -      2856 29 Mai 22:44 Applications
drwx------+ 158 danielbeck  staff  -      5372 29 Mai 15:27 Desktop
drwx------@ 250 danielbeck  staff  -      8500 30 Mai 20:40 Documents
drwx------+  11 danielbeck  staff  -       374 29 Mai 22:21 Downloads
drwx------@  84 danielbeck  staff  -      2856 29 Mai 22:48 Library
drwx------@   3 danielbeck  staff  hidden  102  3 Apr 20:45 Movies
drwx------@   5 danielbeck  staff  hidden  170  3 Apr 20:45 Music
drwx------+ 215 danielbeck  staff  -      7310 29 Mai 22:54 Pictures
drwxr-x---@   7 danielbeck  staff  hidden  238  3 Apr 20:45 Public
drwxr-xr-x@   4 danielbeck  staff  hidden  136 24 Apr 23:25 Sites

과 정기적으로, 눈에 보이는 파일, 파일 : 그래서 우리는 가시성 세 가지 종류가 hidden실제로 터미널에서 숨겨지지 않은 파일 플래그, 그리고 정말 이름 점으로 시작하는 숨겨진 파일을.

플래그 지정 및 파일 ls처리를 동일 하게 처리 하는 방법 (예 : 별칭 또는 안정적인 셸 함수)을 사용하는 방법이 있습니까 (예 : 기본적으로 숨기고 또는로 표시 ) .hidden.dothiddenls -Als -adefaults read com.apple.Finder AppleShowAllFiles

나는 man chflags특히 hidden플래그가 GUI, 즉 Finder에서 숨길 수 있음을 알고 있습니다.

답변:


8

다음은 옵션이 지정 되지 않은 경우 도트 파일과 유사하게 숨겨진 플래그로 ls파일을 숨기는 OS X를 얻는 단계 입니다.-a/-A

  1. Xcode를 설치하십시오. 아래 Xcode 4.5.1을 사용하고 있습니다.
  2. OS 릴리즈 libutilhttp://www.opensource.apple.comfile_cmds 에서 다운로드하십시오 . 각 패키지 목록 항목의 오른쪽에 다운로드 버튼이 있습니다. 이 안내서는 OS X 10.8.2, YMMV 용으로 작성되었으며, 다른 버전을 사용하는 경우 아래 단계와 정확히 일치합니다.
  3. 두 아카이브를 모두 추출하십시오.
  4. file_cmds.xcodeprojXcode에서를 열고 ls대상 을 빌드하도록 선택하십시오 .

    스크린 샷

  5. file_cmds왼쪽 에서 Xcode 프로젝트를 선택 ls하고 기본 영역에서 대상을 선택하십시오 . 에서 빌드 설정 탭에 대한보기 헤더 검색 경로 에서 헤더의 범주 및 추출한 위치로 폴더의 경로를 추가합니다 libutil.

    스크린 샷

  6. 왼쪽 print.cls폴더에서 파일 을 열고라는 줄을 제거하십시오 #include <membershipPriv.h>. 나중에 파일을 저장하십시오. 이것은 해야 이유가 포함되어 있기 때문에, 뭔가 휴식,하지만 난 아직 그것이 무엇인지 결정하지 않았습니다.

  7. ls.c같은 폴더에서 파일 을 열고 함수 /* Only display dot file if -a/-A set. */에서 주석을 찾으십시오 display. 아래의 상태를 다음과 같이 교체하십시오.

    /* Only display dot file and file with hidden flag if -a/-A set. */
    sp = cur->fts_statp;
    if (((sp != NULL && (sp->st_flags & 0x8000)) || cur->fts_name[0] == '.') && !f_listdot) {
        cur->fts_number = NO_PRINT;
        continue;
    }
    
  8. Cmd- B를 눌러 빌드하십시오.

    성공!

  9. 왼쪽 (폴더 목록 끝)에서 제품 을 선택 하고 마우스 오른쪽 단추를 클릭하십시오 ls. Finder에 표시를 선택하십시오 .

    출력 폴더 생성 스크린 샷

  10. ls실행 파일을 편리한 곳 (예 : 홈 디렉토리)으로 이동하십시오 . 그런 다음 터미널을 열고를 실행 sudo mv $HOME/ls /bin/ls하거나 bin홈 디렉토리에 이름이 지정된 새 폴더를 만들어 이동하십시오. 그 폴더를 PATH나중에 추가하십시오 .

결과 테스트 :

$ mkdir test
$ cd test
$ touch foo bar
$ chflags hidden bar
$ /bin/ls -lO
total 0
-rw-r--r--@ 1 danielbeck  staff  hidden 0 25 Okt 22:25 bar
-rw-r--r--  1 danielbeck  staff  -      0 25 Okt 22:25 foo
$ $HOME/bin/ls -lO
total 0
-rw-r--r--  1 danielbeck  staff  - 0 25 Okt 22:25 foo
$ $HOME/bin/ls -A
bar foo
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.