Да, существует отличный способ сделать тот 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) будут работать прозрачно, также.
Согласно 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
:)
Найденный решением здесь: Как я могу сделать информацию о шоу ls о каталоге указанной только, не информация о ее субфайлах или содержании папки?
Который в основном является ls -ldO foo
и затем Вы просто добавляете | awk '{ print $5 }'
заставить его отобразить информацию.
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 */
ls -Ol fooDir/ | grep hidden
) просмотреть только скрытые файлы/папки. Это все еще покажет все файлы, но если Вы передаете его по каналу через некоторое sed/awk волшебство (кто-то еще должен будет помочь здесь, я боюсь), необходимо смочь получить просто список файлов. – 18.08.2011, 21:22-a
опция к ls. Чтобы просто получить строку, Вам нужно от вывода, можно использовать sed. Например:ls -aOl foo | sed -n 2p
. Это отобразит одну строку вывода. Если это содержит "скрытое" слово, то нечто скрыто. Если это не делает, нечто не скрыто. :) – 18.08.2011, 21:33ls -Old dirname/
покажет Вам свойства самого каталога, не его содержание. – bahamat 19.08.2011, 02:10