LINUX.ORG.RU

Как закинуть файл в программу без графического файлового менеджера?

 , , ,


1

1

Помню, когда сидел на linux MX, удалил графический файловый менеджер, так как подсел на ranger. Но столкнулся с проблемой, что не мог скинуть файлы в разные программы (тот-же firefox или telegram). Они все говорили что-то вроде «не найден файловый менеджер» (точно не помню). Ща перешел на limux mint mate. Хотел бы перейти на ranger полностью, но я даже не представляю, как решить проблему с перекидыванием файлов.

PS: хотел удалить сообщение, но нельзя, так что отмечу как решенную, чтоб люди не тратили свое время.

Но столкнулся с проблемой, что не мог скинуть файлы в разные программы (тот-же firefox или telegram). Они все говорили что-то вроде «не найден файловый менеджер» (точно не помню).

А зачем им файловый менеджер, чтобы принять файлы с локальной ФС?

Может вы имели в виду, что они жаловались наоборот при скачивании, т.к. не в чем было файл показать?

Не понимаю.

wandrien ()

все говорили что-то вроде

Когда поймешь точно, что они говорили, тогда и сможешь перекинуть любым файловым менеджером. С большой вероятностью, говорили они о недостаточности прав.

andytux ★★★ ()

Если речь о невозможности сделать drag&drop, то есть dragon.

xaizek ★★★★★ ()
Ответ на: комментарий от andalevor

этот ranger подключать флешки умеет?

Монтирование файловых систем — не задача файлового менеджера. Менеджер файлов управляет файлами, не файловыми системами.

mord0d ★★★★★ ()

Для начала обозначь что ты подразумеваешь под «закинуть», «скинуть», «перекинуть»?

mord0d ★★★★★ ()
Ответ на: комментарий от mord0d

А кто говорит о монтировании? Лично я бы хотел, чтобы файловый менеджер имел графический интерфейс для общения с тем демоном, который монтирует, потому что заводить для этого отдельный интерфейс очень неудобно.

biglpfan ()
Ответ на: комментарий от wandrien

Там юайка нужна, OpenFileDialog когда-то оно в делфях звалось.

PunkoIvan ★★★★ ()
Ответ на: комментарий от mord0d

Монтирование файловых систем — не задача файлового менеджера. Менеджер файлов управляет файлами, не файловыми системами.

Предлагаешь для этого отдельную программу лепить? Это крайне неудобно. Хотя бы потому, что в большинстве случаев люди хотят сразу после монтирования сменного носителя открыть его ФС именно в файловом менеджере. То есть, либо это придётся делать руками, либо делать какой-то протокол для интеграции.

Ну или как в винде/проводнике — после монтирования тупо открывать окно файлового менеджера. Да, для тех, кто файлы умеет только мышой возить, лучше решения, наверное, и нет.

hobbit ★★★★★ ()
Ответ на: комментарий от biglpfan

А кто говорит о монтировании?

Не на твой комментарий был ответ, и вообще не тебе. Смотри внимательно.

mord0d ★★★★★ ()
Ответ на: комментарий от hobbit

Это крайне неудобно.

Do one thing and do it well.

Ты предлагаешь запускать графический файловый менеджер, чтобы примонтировать флэшку, даже если иксы запускать не имеет смысла?

в большинстве случаев люди хотят сразу после монтирования сменного носителя открыть его ФС именно в файловом менеджере

тупо открывать окно файлового менеджера. Да, для тех, кто файлы умеет только мышой возить, лучше решения, наверное, и нет.

Ну то есть ты подписываешься под тем, что современные пользователи Linux ничем не отличаются от пользователей Windows. ☺

mord0d ★★★★★ ()
Ответ на: комментарий от mord0d

Монтирование файловых систем — не задача файлового менеджера. Менеджер файлов управляет файлами, не файловыми системами.

/dev/sdb1 тоже файл, хочу им управлять.

andalevor ★★ ()
Ответ на: комментарий от mord0d

Do one thing and do it well.

Так надо выкинуть файловые менеджеры совсем. cd, cp, rm, mv… хватит всем.

Ты предлагаешь запускать графический файловый менеджер, чтобы примонтировать флэшку, даже если иксы запускать не имеет смысла?

А монтирование флешки это самоцель, взаимодействовать с файлами на флешке не будем? Так примонтируем, да полюбуемся?

Ну то есть ты подписываешься под тем, что современные пользователи Linux ничем не отличаются от пользователей Windows.

2 руки, 2 ноги, одна голова. Хотя читая ваши посты…

andalevor ★★ ()
Ответ на: комментарий от andalevor

/dev/sdb1

 % ls /dev/sda1
ls: /dev/sda1: No such file or directory

 % ls /dev/sd*
zsh: no matches found: /dev/sd*

хочу им управлять

Ты можешь его переместить, переименовать и даже удалить. Попробуй!

mord0d ★★★★★ ()
Последнее исправление: mord0d (всего исправлений: 2)
Ответ на: комментарий от andalevor

cd, cp, rm, mv… хватит всем.

Мне хватает, да.

взаимодействовать с файлами на флешке не будем?

Это может быть не флэшка, а, например, AudioCD, который не представлен в виде файлов.

2 руки, 2 ноги, одна голова.

Проблемы мышей кота не волнуют.

mord0d ★★★★★ ()
Ответ на: комментарий от mord0d

Мне хватает, да.

Опишите последовательность действий для того чтобы скопировать файл на флешку, мне интересно сравнить с количеством действий для выполнения этой задачи в любом GUI файловом менеджере.

andalevor ★★ ()
Ответ на: комментарий от hobbit

Предлагаешь для этого отдельную программу лепить? Это крайне неудобно. Хотя бы потому, что в большинстве случаев люди хотят сразу после монтирования сменного носителя открыть его ФС именно в файловом менеджере

Уже в Norton commander было «user menu». Например, у меня монтирование выглядит вот так.

andytux ★★★ ()
Ответ на: комментарий от andalevor

В mc по клавише F2 есть «глобальное» меню пользователя и есть «локальное», если в текущем каталоге находится файл .mc.menu
У меня в /mnt лежит простейший файл

shell_patterns=0

m	Mount current dir
	mount /dev/%f %f

u	Unmount current dir
	umount %f

e	Eject current disk
	eject %f

i	Info mount 
	echo "Current mount point:"
	echo
	mount | grep dev/sd
	echo
	echo "Press Enter to continue"
	read aaaa

l	List fdisk partition
	echo "Fdisk list partition:" 
	/sbin/fdisk -l
	echo "Press Enter to continue"
	read aaaa

Соответствено, жмем f2, затем m и выбранный файл монтируется. Потом f2+u для размонтирования

sigurd ★★★★★ ()
Последнее исправление: sigurd (всего исправлений: 2)
Ответ на: комментарий от andytux

У меня тоже mount повешен на F2+m. И 15 лет назад это было идеальное решение.

Вот только в современных линуксах ручное монтирование не особо удобная вещь. Флешек запросто может быть воткнуто несколько, флешки бывают с таблицей разделов и без, диски с NTFS требуют отдельной опции монтирования. Выбор подходящего девайса при этом превращается в квест. Для размонтирования тоже в каких-то случаях нужен sudo, в каких-то не нужен.

Хотелка выше тоже, конечно, не очень удачно сформулирована. Сейчас для ФМ актуально не столько монтировать носители, сколько удобным образом показывать список автосмонтированных носителей с возможностью их тут же размонтировать. В клонах проводника это, как правило, сделано, из двухпанельников нормально работает, имхо, только в Double Commander.

А есть ещё такие недофайловые недосистемы, которые полноценно смонтировать в принципе невозможно, можно лишь сымитировать монтирование. Самый яркий пример — уродский MTP. Из эргономичных ФМ в линуксе с MTP нормально работает опять-таки Double Commander.

Вот что, на мой взгляд, требуется от файлового менеджера по работе с файловыми системами.

hobbit ★★★★★ ()
Последнее исправление: hobbit (всего исправлений: 2)

Не понятно, зачем удалять фм, а потом искать костыльное решение. Если привык мышью таскать файлы из окна в окно, то ты явно погорячился.

anonymous ()
Ответ на: комментарий от anonymous

Ну я в Linux тоже так-то не специализд. ☺ Кое-какие навыки остались, но я стараюсь не мараться.

mord0d ★★★★★ ()
Ответ на: комментарий от hobbit

У меня в udev-правиле две строчки:

 ACTION=="add", SUBSYSTEM=="block", KERNEL=="sd[c-z][0-9]", RUN+="/bin/systemctl start usb_mount@%k.service"
 ACTION=="remove", SUBSYSTEM=="block", KERNEL=="sd[c-z][0-9]", RUN+="/bin/systemctl stop usb_mount@%k.service"

и в /bin скрипт:

 #!/bin/bash
#$1 - действие udev (ACTION=="add" или ACTION=="remove")
#$2 - имя блока (sd[c-z][0-9]) #файл для логов
LOG="/var/log/udev"

#имя блока
DEV=$2
#устройство подключили
if [ "$1" = "add" ]; then
    #отметка в логах
    echo "`date` mounting /dev/${DEV}" >> ${LOG}
    #создаём директорию
    [[ -d /media/${DEV} ]] || mkdir /media/${DEV} >> ${LOG} 2>&1
    #даём на неё права всем пользователям
    chmod a+rwx /media/${DEV}
    #монтируем устройство как рут
    mount /dev/${DEV} /media/${DEV} -o umask=0000 >> ${LOG} 2>&1

#устройство отключили
elif [ "$1" = "remove" ]; then
    #отметка в логах
    echo "`date` unmounting /dev/${DEV}" >> ${LOG}
    #размонтируем
    umount /dev/${DEV} >> ${LOG} 2>&1
    #удаляем директорию
    rmdir /media/${DEV} >> ${LOG} 2>&1
fi

Через systemd завязал это всё и мне хватает за глаза. Воткнул - примонтировало. Вытащил - отмонтировало. Комп домашний, нахрен мне что-то ещё?

anonymous ()
Ответ на: комментарий от hobbit

астрологи объявили неделю mtp количество постов о doublecmd+mtp от хоббита увеличилось вдвое

anonymous ()
Ответ на: комментарий от biglpfan

это типа «я с тобой не разговариваю» ?

Это типа ты ответил на комментарий-ответ про монтирование ответом «не было речи о монтировании».

Я против тебя ничего не имею, но ты меня поставил в тупик своим комментарием. Если мой коммент выглядит как наезд, то это ненамеренно. ☺

mord0d ★★★★★ ()
Ответ на: комментарий от sigurd

Если нет каких-то особых требований, то монтирую в /mnt. Но на монтировании построена добрая половина линукса и далеко не все монтируется в /mnt. Самое банальное, автоматом монтируется обычно в /media. Код отмонтирования:

+ t d
= d /m[en][dt]* | f local
Unmount filesystem from selected
  msg_svc='notify'; SRC='/usr/local'
  sync
  for i in %s; do
	case ${i} in
	  *droid|*reg|ftp*|s*mb*|ssh*) util='fusermount'; key='-u'; msg='2';;
 #	  memtest86*)	util='umount'; key='-d'; msg='3';;
	  memtest86*)	umount /dev/loop0p1 && losetup -d /dev/loop0
			util='umount'; key=''; msg='3';;
	  *)		util='umount'; key=''; msg='1';;
	esac
	dest=%d/"${i}"
	${util} ${key} "${dest}"
	case ${?} in
	  0)	msg_svc=''
		case ${msg} in
		  1)	msg="Unmounted from ${dest}";;
		  2)	msg="Unmounted FUSE-fs from ${dest}";;
		  3)	msg="Unmounted losetup from ${dest}";;
		  *)	;;
		esac;;
	  32)	msg="Not unmounted from ${dest} Target busy"; icon='harddisk-warning'; msg_svc='notify';;
	  *)	msg='255';;
	esac
	[ -n "${msg}" ] && if [ -x "${SRC}/bin/avnotify" ]
		  then	if [ -n "${msg_svc}" ]; then opt="--${msg_svc}="; else opt='--std='; fi
			[ -n "${icon}" ] && opt="--icon=${icon} ${opt}"
			[ -n "${lng}" ] && opt="--lng=${lng} ${opt}"
			avnotify ${opt}"$msg" --
		  else echo "\n$msg"
		fi
  done

andytux ★★★ ()
Ответ на: комментарий от andalevor

Для начала, попроще:

+ t dlr
= t d | f *.[INin][MRSmrs][AGOago] | f [chs][dr]* | D /mnt
Mount selected to other panel
  # chown <username> /dev/loop0 && mount -o loop *.iso /mnt/*.iso
  msg_svc='notify'; UTIL='mount'; SRC='/usr/local'
  for i in %s; do
	msg='1'; src=%d/${i}; dest=%D/${i}
	[ -z "%t" ] && [ -d %D/%F ] && [ %F != ".." ] && dest=%D/%F && version=$(cat /proc/version | cut -d" " -f3)
	[ ! -e "${dest}" ] && mkdir "${dest}"
	if [ -d "${src}" ]
	  then	if [ -e "/lib/modules/${version}/kernel/fs/overlayfs/overlay.ko" ]
		  then	[ -h "${src}" ] && src=$(readlink -f "$src")
			[ ! -e "${src}work" ] && mkdir "${src}work" 2>/dev/null
			if [ -e "${src}work" ]
			  then key="-t overlay -o lowerdir=${dest},upperdir=${src},workdir=${src}work"
			  else key="-t overlay -o lowerdir=${dest}:${src}"
			fi
			src='none'; msg='2'
		  elif	[ -e "/lib/modules/${version}/kernel/fs/aufs/aufs.ko" ] || [ -e "/lib/modules/${version}/kernel/ubuntu/aufs/aufs.ko" ]
			then key="-t aufs -o br:${src}=rw,create=mfs,sum"; src='none'; msg='3'
		  else	key='--bind'
		fi
	  else	case ${i} in
		  casper-rw)	key="-t aufs -o br:${src}=rw,create=mfs,sum"; src='none';;
		  memtest86-usb.img)	losetup -P /dev/loop0 "${src}"
					key=''; src='/dev/loop0p1'
					;;
		  *.[Ii][Mm][Aa]) key='-o loop,offset=512'; msg='4';;
		  *.[Nn][Rr][Gg]) key='-t udf,iso9660 -o loop,ro,offset=307200'; msg='5';;
		  *.[Ii][Ss][Oo]) key='-o loop,ro'; msg='5';;
		  *)		key='-o loop';;
		esac
	fi
	${UTIL} ${key} "${src}" "${dest}"
	case ${?} in
	  0)	case ${msg} in
		  1)	msg="Mounted ${i}
 to ${dest}"; icon='harddisk';;
		  2)	msg="Mounted ${i}
 to ${dest} as overlay"; icon='harddisk-multi';;
		  3)	msg="Mounted ${i}
 to ${dest} as aufs"; icon='harddisk-multi';;
		  4)	msg="Mounted ${i} to ${dest}"; icon='floppy';;
		  5)	msg="Mounted ${i}
 to ${dest} read-only"; icon='cd';;
		  *)	;;
		esac;;
	  32)	msg="${i} not mounted Bad option"; icon='harddisk-warning';;
	  *)	msg='255';;
	esac
	[ -n "${msg}" ] && if [ -x "${SRC}/bin/avnotify" ]
		  then	if [ -n "${msg_svc}" ]; then opt="--${msg_svc}="; else opt='--std='; fi
			[ -n "${icon}" ] && opt="--icon=${icon} ${opt}"
			[ -n "${lng}" ] && opt="--lng=${lng} ${opt}"
			avnotify ${opt}"$msg" --
		  else echo "\n$msg"
		fi
  done

/dev/sdb1 тоже файл, хочу им управлять

При желании, можно монтировать и его, только нужно изменить «условия видимости».

andytux ★★★ ()
Ответ на: комментарий от mord0d

Ух… Повеяло нулевыми и историями про секретаршу и неотмонтированную дискету.

anonymous ()
Ответ на: комментарий от andalevor

2 руки, 2 ноги, одна голова…

и хвост! В этом и есть твое отличие от истинных линуксоидов, человек.

anonymous ()
Ответ на: комментарий от andytux

Краткое описание.

Монтирует выбранные (выделенные или на котором стоит указатель) на другую панель. Если на другой панели указатель на каталоге, то монтирует в этот каталог (только для одного объекта). В остальных случаях, создается каталог, с именем монтируемого объекта, и в него монтирует. Монтирует образы (iso, ima, img и т.д.), файлы (casper-rw и т.д.), каталоги и т.д. Для каталогов, если находит оверлейную файловую систему, то монтирует с ее помошью. Если не находит, то обычное монтирование каталога. О результатах выводит сообщение. Если найден скрипт avnotify, то сообщение передается ему (на скриншоте сообщение выведено этим скриптом), если не найден, то передается команде echo.

PS. Довольно недавно добавил монтирование образа memtest-86usb.img. Сейчас попалось на глаза, к файлам добавил live-rw и writable. Из любопытства попробовал, /dev/disk/by-label/*, /dev/sda1 - смонтировались.

andytux ★★★ ()
Ограничение на отправку комментариев: только для зарегистрированных пользователей