Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: Перетаскивание в терминал  (Прочитано 1556 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн thenamera

  • Автор темы
  • Новичок
  • *
  • Сообщений: 13
    • Просмотр профиля
Перетаскивание в терминал
« : 12 Февраля 2018, 12:47:54 »
Имею массу скриптов с конструкцией вида
read filename
что-то_сделать_с_файлом "$filename"
или
read DIRs
for DIR in $(echo "$DIRs")
do
cd "$DIR"
и хочу ими пользоваться, но при перетаскивании файла в терминал путь к файлу берется в кавычки, а не экранируются пробелы, к чему я привык и подо что, собственно, и были написаны скрипты.
Как быть?
~$ read d
'/home/ra/Загрузки'
~$ cd $d
bash: cd: '/home/ra/Загрузки': Нет такого файла или каталога
PS. Терминал GNOME 3.24.2

ТС не появлялся на Форуме более трех месяцев по состоянию на 31/01/2020 (последняя явка: 08/09/2019). Модератором раздела принято решение закрыть тему.
--zg_nico
« Последнее редактирование: 31 Января 2020, 11:33:59 от zg_nico »

Оффлайн ALiEN

  • Администратор
  • Старожил
  • *
  • Сообщений: 7422
  • Luck Tales
    • Просмотр профиля
Re: Перетаскивание в терминал
« Ответ #1 : 12 Февраля 2018, 13:57:52 »
пишите скрипты правильно. Перетаскивать файлы позволяют немногие виды терминалов, тем более консоль. (у меня lxterminal - перетаскивание не работает). И насчет read - не будет работать автоподстановка путей (<ТАВ>).

что-то_сделать_с_файлом "$filename"
command "$1"

как костыль для ваших скриптов, предложу так:
read d ; d=$(echo ${d//\'/}); cd "$d"не сработает, если в самом имени или пути будут одинарные кавычки.
🖥 AsRock B550M Pro4 :: AMD Ryzen 5 3600 :: 16 GB DDR4 :: AMD Radeon RX 6600 :: XFCE
💻 ACER 5750G :: Intel Core i5-2450M :: 6 GB DDR3 :: GeForce GT 630M :: XFCE

Оффлайн thenamera

  • Автор темы
  • Новичок
  • *
  • Сообщений: 13
    • Просмотр профиля
Re: Перетаскивание в терминал
« Ответ #2 : 12 Февраля 2018, 14:31:43 »
За костыль спасибо, но хотелось бы по-человечески.
пишите скрипты правильно
Научите, перепишу.

Оффлайн ALiEN

  • Администратор
  • Старожил
  • *
  • Сообщений: 7422
  • Luck Tales
    • Просмотр профиля
Re: Перетаскивание в терминал
« Ответ #3 : 12 Февраля 2018, 14:55:59 »
thenamera, суть в том, что вместо read для путей и имён файлов, проще использовать аргументы.
Допустим,
argtest.sh
#!/bin/bash
cd "$1" && ls || echo Error

запускаем так
./argtest.sh '/home/user/something/'
в скрипте $1 будет /home/user/something


https://habrahabr.ru/post/126701/
🖥 AsRock B550M Pro4 :: AMD Ryzen 5 3600 :: 16 GB DDR4 :: AMD Radeon RX 6600 :: XFCE
💻 ACER 5750G :: Intel Core i5-2450M :: 6 GB DDR3 :: GeForce GT 630M :: XFCE

Оффлайн thenamera

  • Автор темы
  • Новичок
  • *
  • Сообщений: 13
    • Просмотр профиля
Re: Перетаскивание в терминал
« Ответ #4 : 12 Февраля 2018, 18:35:37 »
проще использовать аргументы
Теми скриптами автоматизировались действия обычного пользователя, которого с трудом удалось отучить пугаться вида терминала.
Алгоритм работы был таков:
1. Пользователем даблкликом запускает необходимый скрипт.
2. Выделяет папки или файлы и тянет их в терминал.
3. Жмёт ввод. Profit.
Всё.

С аргументами придётся делать так:
1. Открыть терминал.
2. Перетянуть скрипт в окно терминала.
3. Выбрать файлы/папки и перетянуть их в терминал.
4. Нажать ввод.
Надеюсь это не напугает пользователей. :)

Спасибо за помощь!

Оффлайн ALiEN

  • Администратор
  • Старожил
  • *
  • Сообщений: 7422
  • Luck Tales
    • Просмотр профиля
Re: Перетаскивание в терминал
« Ответ #5 : 12 Февраля 2018, 18:43:27 »
действия обычного пользователя, которого с трудом удалось отучить пугаться вида терминала
zenity может помочь.
дабл-клик по скрипту, а дальше обычные окошки с кнопочками и полями ввода, никакого терминала. Даже выбор файлов есть.
Тут конкретно не подскажу. Делал когда-то очень давно через zenity скрипты для себя, но потом понял что в командной строке всё намного проще.
🖥 AsRock B550M Pro4 :: AMD Ryzen 5 3600 :: 16 GB DDR4 :: AMD Radeon RX 6600 :: XFCE
💻 ACER 5750G :: Intel Core i5-2450M :: 6 GB DDR3 :: GeForce GT 630M :: XFCE

Оффлайн andytux

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 7530
    • Просмотр профиля
Re: Перетаскивание в терминал
« Ответ #6 : 12 Февраля 2018, 19:11:31 »
thenamera, а если задействовать mc.
Получиться примерно следующее.
Юсер выделяет файлы, в "user menu" выбирает нужный скрипт.
В "user menu" могут быть или команды вызова твоих скриптов или полностью скрипты.

Оффлайн ALiEN

  • Администратор
  • Старожил
  • *
  • Сообщений: 7422
  • Luck Tales
    • Просмотр профиля
Re: Перетаскивание в терминал
« Ответ #7 : 12 Февраля 2018, 19:39:25 »
кстати, еще вариант - в контекстное меню файлов (ПКМ) можно повесить вызов скрипта.
🖥 AsRock B550M Pro4 :: AMD Ryzen 5 3600 :: 16 GB DDR4 :: AMD Radeon RX 6600 :: XFCE
💻 ACER 5750G :: Intel Core i5-2450M :: 6 GB DDR3 :: GeForce GT 630M :: XFCE

Оффлайн svtv1

  • Забанен
  • Старожил
  • *
  • Сообщений: 2652
  • Это Я
    • Просмотр профиля
Re: Перетаскивание в терминал
« Ответ #8 : 12 Февраля 2018, 22:01:20 »
Имею массу скриптов с конструкцией вида
read filename
что-то_сделать_с_файлом "$filename"
или
read DIRs
for DIR in $(echo "$DIRs")
do
cd "$DIR"
и хочу ими пользоваться, но при перетаскивании файла в терминал путь к файлу берется в кавычки, а не экранируются пробелы, к чему я привык и подо что, собственно, и были написаны скрипты.
Как быть?
~$ read d
'/home/ra/Загрузки'
~$ cd $d
bash: cd: '/home/ra/Загрузки': Нет такого файла или каталога
PS. Терминал GNOME 3.24.2
Что надо? Если есть файл, перенаправь (>) его в нужный адресс и он будет открыт. И как это перетащить в терминал, из Х-ов???
В Nautilus, открыть в терминале, не???
"Если достаточно долго сидеть возле реки - мимо проплывет труп твоего врага"

Оффлайн ALiEN

  • Администратор
  • Старожил
  • *
  • Сообщений: 7422
  • Luck Tales
    • Просмотр профиля
Re: Перетаскивание в терминал
« Ответ #9 : 12 Февраля 2018, 22:07:20 »
svtv1, всё намного проще: gnome-terminal при перетаскивании в него файла (да-да, прямо с файлменеджера) подставляет его путь. Отсюда и заковыка ТС с read. Переменная уже сама содержит кавычки. Ну и тем более, что это
действия обычного пользователя, которого с трудом удалось отучить пугаться вида терминала.
« Последнее редактирование: 12 Февраля 2018, 22:09:01 от ALiEN175 »
🖥 AsRock B550M Pro4 :: AMD Ryzen 5 3600 :: 16 GB DDR4 :: AMD Radeon RX 6600 :: XFCE
💻 ACER 5750G :: Intel Core i5-2450M :: 6 GB DDR3 :: GeForce GT 630M :: XFCE

Оффлайн svtv1

  • Забанен
  • Старожил
  • *
  • Сообщений: 2652
  • Это Я
    • Просмотр профиля
Re: Перетаскивание в терминал
« Ответ #10 : 12 Февраля 2018, 23:54:44 »
   ALiEN175
Спасибо, как то так, я ТС и предложил. Но он не отвечает???
"Если достаточно долго сидеть возле реки - мимо проплывет труп твоего врага"

Оффлайн thenamera

  • Автор темы
  • Новичок
  • *
  • Сообщений: 13
    • Просмотр профиля
Re: Перетаскивание в терминал
« Ответ #11 : 28 Февраля 2018, 11:23:20 »
zenity
оказалось наилучшим решением в данном случае.
Ещё раз спасибо!

 

Страница сгенерирована за 0.038 секунд. Запросов: 24.