Скажите, скрыта ли папка/файл в Mac OS X

Да, существует отличный способ сделать тот ssh ProxyCommand использования и netcat

Поместите что-то вроде этого в свой .ssh/config

Host *.department.university.com
User me
ForwardAgent yes
ProxyCommand ssh unix.university.com nc %h %p

Это войдет непосредственно в любой сервер .department.university.com с помощью хоста перехода/оплота unix.university.com. Вам, возможно, также понадобится строка файла конфигурации для unix.university.com непосредственно.

Вот ссылка, объясняющая, как она работает: http://backdrift.org/transparent-proxy-with-ssh

С этой техникой можно теперь просто записать

ssh unix.department.university.com

и это будет все казаться прямым. Инструменты как rsync, scp, и т.д. (что-либо в стопке ssh) будут работать прозрачно, также.

10
18.08.2011, 23:04
3 ответа

Согласно ls странице справочника, необходимо смочь -O опция, объединенная с -l опция просмотреть флаги с ls. Например:

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: Для команды, которая должна работать независимо от того, является ли это файлом или папкой, мы должны сделать что-то немного больше hacky.

Необходимая строка вывода от ls -al варьируется в зависимости от того, является ли вещью файл или папка, поскольку папки показывают общее количество, тогда как файлы не делают. Для обхождения этого мы можем grep для символа r. Это должно быть в ~all всех файлов/папок (почти у всех должно быть по крайней мере одно разрешение чтения), но не в общей строке.

Поскольку строка, которую мы хотим получить затем, становится первой строкой, мы можем использовать 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: См. ответ Tyilo ниже для более хорошего пути, чем захват для r :)

10
27.01.2020, 20:01
  • 1
    Но делая это с папкой, перечислит флаги для файлов/папок под ним –  Tyilo 18.08.2011, 21:18
  • 2
    Чтобы просто просмотреть скрытые файлы передайте его по каналу через grep (например, ls -Ol fooDir/ | grep hidden) просмотреть только скрытые файлы/папки. Это все еще покажет все файлы, но если Вы передаете его по каналу через некоторое sed/awk волшебство (кто-то еще должен будет помочь здесь, я боюсь), необходимо смочь получить просто список файлов. –   18.08.2011, 21:22
  • 3
    я не хочу список файлов я просто, хочет знать, папка "нечто", скрыт или нет –  Tyilo 18.08.2011, 21:27
  • 4
    Хорошо. Таким образом для просмотра самого каталога добавляют -a опция к ls. Чтобы просто получить строку, Вам нужно от вывода, можно использовать sed. Например: ls -aOl foo | sed -n 2p. Это отобразит одну строку вывода. Если это содержит "скрытое" слово, то нечто скрыто. Если это не делает, нечто не скрыто. :) –   18.08.2011, 21:33
  • 5
    Используя ls -Old dirname/ покажет Вам свойства самого каталога, не его содержание. –  bahamat 19.08.2011, 02:10

Найденный решением здесь: Как я могу сделать информацию о шоу ls о каталоге указанной только, не информация о ее субфайлах или содержании папки?

Который в основном является ls -ldO foo и затем Вы просто добавляете | awk '{ print $5 }' заставить его отобразить информацию.

7
27.01.2020, 20:01
  • 1
    Знайте, что awk повредится, если будет пробел в имени пользователя или groupname (который должен быть крайне маловероятным, но эй). Я добавил более безопасное решение, которое использует stat. –  mrm 17.04.2018, 20:29

Как указано @Tyilo , @Sorpigal предлагает попробовать stat, который кодирует «пользовательские флаги» с помощью%Xf(он X кодирует пользователя f lag )и намного безопаснее для машинного разбора.

$ stat -f "%Xf" ~/Library
8000

Здесь находятся шестнадцатеричные значения для пользовательских флагов: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 */
1
27.01.2020, 20:01

Теги

Похожие вопросы