LINUX.ORG.RU

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

 , , , ,


1

1

допустим такой сценарий:
1) есть флешка с установочным образом(только терминал!)
2) также на флешке(или на компе) текстовой файл(файлы) со списком команд
3) компьютер подключенный к интернету

нужно копировать вставить команды из файла в консоль

★★

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

Вроде screen и tmux позволяют копировать и вставлять в консоли.

Лично я не пробовал.

Deleted
()

Ниhера не понял. Кто на ком стоял? Определитесь с терминологией, а то «консоль», «терминал» и пр. могут трактоваться весьма вольно.

И почему команды надо копировать, а не запустить их как скрипт?

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

Установочный образ с только с терминалом эт чо , сервер? А так копировать или вставлять можно с одной консоли в другую (их же 6) , или из одного окна терминала в другое.

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

не все команды нужны, иногда нужно в произвольном месте добавить что то «консоль», «терминал» - голый «сервер»

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

пробовал в одном tty открыть текст и копировать из него команды на другой tty
не получается или не осилил

Sapetuko ★★
() автор топика

может быть куча решений.
навскидку:
1) сделать из текстового файла bash-скрипт
2) mc (mcedit) - в нем есть буфер для копипасты
3) gpm и ctrl+insert / shift+insert

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

Лорчую screen/tmux. Открываешь, сплитишь, в одном pane оставляешь сосноль, в другом vim filename и начинаешь.

Можешь попробовать средсвами vim или GNU/emacs, но не совсем то будет.

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

как то сложновато(я можно сказать нуб)

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

Во , тоже вспомнил про gpm , это вроде мыша консольная.

symon2014 ★★
()

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

Несколько вариантов тебе подсказали. Но, если у тебя есть рядом полноценный компьютер с настроенной системой, то я бы предложил ещё вариант доступа по ssh. Установщик - это по сути уже запущенный Linux с программой установки. Переключаешься в консоль, устанавливает и запускаешь ssh сервер и вводи свои команды с другого компьютера.

На серверах часто вообще нет монитора, установку делают либо по сети, либо подготовкой настроенного образа.

aquadon ★★★★★
()

все зависит от того, есть у тебя ГУЙ или нет.

если есть, то: как открываешь файл с командами? в гуевой аппликухе или тут же в консоли?

если в гуевой, то в ней копируешь в буфер, а в консоли Shift+Insert

если без гуевой, то cat file.txt выведет содержимое файла в консоль. дальше - копируешь своим терминалом (мышкой выделить, меню-скопировать или как-то так, может ПКМ скопирует), вставлять тоже Shift+Insert

если ты совсем без гуев, то либо ты пользуешься текстовым редактором, либо нет.

если не пользуешься, то, подозреваю, что с помощью tail и head можно «вычленить» нужную тебе строку из списка команд, и направить ее в какой-нибудь bash.

если пользуешься редактором, то… ну тут нужно вспомнить, какие редакторы в буфер умет копировать и как, а дальше - Shift+Insert

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

есть xclip tmux screen vim nano
вроде как должно работать но не работает)

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

вот это интересно, спасибо работает

все совсем не так как я думал) пошел читать про head и tail

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

сделал commands.txt с таким содержимым:
ls
nano ./text.txt
top
echo «23» > ./text1.txt

очевидно что
head -n 1 commands.txt | tail -n 1 | bash
должен запустить ls, что оно и делает
а вот
head -n 2 commands.txt | tail -n 1 | bash
head -n 3 commands.txt | tail -n 1 | bash
уже не работают

а вот это опять работает
head -n 4 commands.txt | tail -n 1 | bash

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

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

если тебе нужно выполнить весь файл целиком, то ты бы так и написал.

в этом случае

$ bash commands.txt 

и нии тут всем мозги. формулируй свои хотелки четко

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

ругаться то зачем?
я понимаю что вопросы нубские, но и я в свою очередь не заставляю кого бы то не было отвечать на них..
если подскажут - хорошо, буду благодарен, нет, ну нет так нет..

к сути - я и написал что ваш вариант работает, НО
команды ls и echo работают
а top и nano не работают

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

но я вас понимаю) сам бываю грубоват когда ко мне лезут с нубскими вопросами по моему профилю

Sapetuko ★★
() автор топика

Если надо прямо из текстового редактора, выкинь этот выкидыш Nano, возьми нормальный. Например в Vim. Копируешь команду в буфер (навести курсора на строку с командой и нажать yy). Затем выполняешь вот такую команду:

:'<,'>w !sh

То есть в целом вот так: yy:'<,'>w !sh

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

Для удобства можно в виме это замапить на какую-нибудь клавишу, например из F1-F12. Тогда достаточно будет просто навести курсор на строку и нажать одну клавишу.

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

Прошу прощения, yy не будет работать. но будет работать визуальное выделение. V (большая) и enter.

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

достаточно поставить курсор на нужную строку в vim и

.w !bash

ну и

Line numbers may be specified with:             :range E14 {address}                                  
        {number}        an absolute line number                                                       
        .               the current line                          :.                                  
        $               the last line in the file                 :$                                  
        %               equal to 1,$ (the entire file)            :%                                  
        't              position of mark t (lowercase)            :'                                  
        'T              position of mark T (uppercase); when the mark is in                           
                        another file it cannot be used in a range                                     
        /{pattern}[/]   the next line where {pattern} matches     :/                                  
        ?{pattern}[?]   the previous line where {pattern} matches :?                                  
        \/              the next line where the previously used search                                
                        pattern matches                                                               
        \?              the previous line where the previously used search                            
                        pattern matches                                                               
        \&              the next line where the previously used substitute                            
                        pattern matches                                                               

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

У ls и echo есть законченность выполнения , а у nano и top только открытие , их надо или в фон запускать или завершать как нибудь. (имхо)

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

это .w !bash и это :'<,'>w !sh через vim работают но все непрозрачно, например если нужно установить что то или удалить или что нибудь еще нестандартное
вобщем неполноценно или правильнее - доработать нужно

я ожидал что можно легко взять копировать команду из текстового файла... выше писали про - head -n 2 commands.txt | tail -n 1 | bash но он тоже не выполняет команды типа top или nano.. для примера

Sapetuko ★★
() автор топика

Запускаешь gpm и копируешь мышкой. Без мышки твой лучший вариант наверно будет взять tmux.

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

извини за грубость

я тут попробовал и понял, что я не знаю, как выполнить nano или top из pipe

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

c gpm пока разбираюсь, как то оно не так работает или я делаю не так
tmux я тоже ставил, терминалы делаются а вот копирование из одного(там открыт текстовой файл) на другой не работает почему то

Sapetuko ★★
() автор топика

В твоём случае (ничего не настроено) проще всего с tmux будет.

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

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

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

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

  1. запускаешь tmux tmux
  2. добавляешь панель справа ctrl+b %
  3. возвращаешься на первую панель ctrl+b o
  4. получаешь список команд: cat commands.txt
  5. включаешь режим копирования: ctrl+b [
  6. стрелочками ставишь курсор на начало нужной строки
  7. переходишь в режим выделения текста: space
  8. стрелочками выбираешь нужный текст для копирования
  9. копируешь выбранный тобой текст: enter
  10. переключаешься на вторую панель ctrl+b o
  11. вставляешь скопированный текст: ctrl +b ]

в итоге у тебя на левой панели открыт список команд и из него ты их копируешь, а на правой - выполняешь команды по списку

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

с 5ого пункта неполучается, режим копирвания включается(курсор ходит по всему экрану, а сам ничего не копирует)

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

Все верно. Ты должен поставить курсор на начало строки, которую хочешь скопировать и нажать пробел. Включится режим, в котором ты будешь стрелочками же выбирать, что именно из этой строки ты копируешь (выбранный текст будет менять цвет)

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

А там случайно не can't find window 5?

Если ты случайно вместо % нажал 5, то tmux попытается перейти на окно с номером 5, не найдет его и выдаст вот такую ошибку.

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

посыпаю голову пеплом, я жал 5
теперь нормальные 2 панели с терминалами, но все равно пробел или ентер ничего не меняют
и сверху в углу - [0/0] - все время

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

благодарю за помощь, это работает, сложно как то все сделано с терминалами, в плане - копировать вставить

Sapetuko ★★
() автор топика

Всем спасибо за расширение моего кругозора в контексте работы с консольными командами)

Sapetuko ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.