Как `ls` удаленную папку?

10

Этот использует Samba:

 $ ls smb://192.168.5.4/wdtvlivehub/abc
 ls: cannot access smb://192.168.5.4/wdtvlivehub/abc: No such file or directory

Мне как-то удалось это сделать;

  1. Просмотр к удаленному каталогу. ( pcmanfm 0.9.9 )
  2. Открытие текущей папки в терминале.
  3. Выполнение, pwdчтобы получить/home/myuser/.gvfs/wdtvlivehub on 192.168.5.4
  4. Делать ls /home/myuser/.gvfs/wdtvlivehub on 192.168.5.4работал.

... Что будет более элегантным способом?

octosquidopus
источник
Есть ли возможность монтировать удаленную файловую систему?
beatgammit
Да, это может быть.
octosquidopus

Ответы:

5

Ваш текущий метод использования ~/.gvfs/хорош, но для этого вам не нужен pcmanfm - вы можете использовать его gvfs-mount для подключения к общему ресурсу. Кроме того, такие инструменты, как gvfs-lsи gvfs-cpпримут ваш smb: // URI.

$ gvfs-mount smb://HOST/SHARE/

$ gvfs-ls smb://HOST/SHARE/

В последних версиях gvfs расположение $XDG_RUNTIME_DIR/gvfs/(aka /run/user/$UID/gvfs/), и имена подкаталогов стали более машиночитаемыми:

$ ls /run/user/$UID/gvfs/smb-share:server=HOST,share=SHARE/

В старых версиях:

$ ls ~/.gvfs/"SHARE on HOST"/

(Не забудьте процитировать пробелы в путевых именах.)


Специально для Samba вы можете использовать smbclientпрограмму или смонтировать общий ресурс на уровне VFS с помощью mount -t cifs. (Последний, к сожалению, ограничен root.)

$ smbclient //host/share

# mount -t cifs //host/share /mnt

(Для других типов файловых систем, таких как SFTP и FTP, sshfsи curlftpfsсуществуют соответственно.)

grawity
источник
Я упомянул pcmanfm, потому что это, скорее всего, то, как я попаду в папку, прежде чем выполнять ее с помощью скрипта. Впрочем, gv-ls кажется именно тем, что я искал. Похоже, он мог бы даже заменить lsлокальные каталоги ради согласованности.
octosquidopus
Стоит уточнить, что «gvfs-ls smb: // host / share /» работает, как описано, без необходимости монтировать диск сначала с помощью gvfs-mount. Другими словами, команды в первом блоке кода не обязательно должны использоваться для достижения желаемого результата.
Джон Т
@JohnT: Должно быть, это совпадение. Я обычно получаю The specified location is not mounted.
Гравитация
@ Grawity - я обычно уже просматривал местоположение в Nautilus или аналогичном и аутентифицировался таким образом, что может иметь какое-то отношение к нему.
Джон Т
@JohnT: Да, Nautilus использует ту же GVFS, и GTK автоматически устанавливает местоположения gvfs, к которым вы пытаетесь получить доступ. Если общий ресурс отображается на боковой панели Nautilus, то он «подключен» прямо сейчас.
Гравитация
10

Вы можете использовать команду smbclient , например:

smbclient -N //192.168.5.4/wdtvlivehub/abc -c ls
Румпель
источник
4
Отлично, но как я могу добиться того же вывода, что и с обычным ls(без столбцов и форматирования, просто список файлов)? Это важно, потому что я хочу передать вывод другой команде.
octosquidopus