Передача команды терминала в Gedit для дальнейшего редактирования [дубликат]

На этот вопрос уже есть ответ:

У меня в окне терминала есть сложная команда, которую я хотел бы отредактировать дальше. E. грамм.

echo "This is a complex command I want to edit in an editor"

Как передать эту строку кода - не вывод, а фактический код -, например, Gedit для дальнейшего редактирования? Что-то вроде этого решения, только для редактора на основе графического интерфейса: http://www.commandlinefu.com/commands/view/1446/rapidly-invoke-an-editor-to-wri‌ te-a- long-complex-or-tricky-command

Обратите внимание, что я специально ищу способ редактирования во внешнем редакторе.

7
задан 10 December 2015 в 11:16

3 ответа

bash, zsh и ksh (включая их производные) имеют эту очень аккуратную встроенную команду fc, которая открывает редактор для изменения вашей предыдущей команды. Если переменная FCEDIT не установлена, по умолчанию она вызовет редактор, установленный в EDITOR; если переменная EDITOR не установлена, по умолчанию она вызовет nano.

Что вы можете сделать, это установить FCEDIT=/usr/bin/gedit. Теперь есть хитрость: вы запускаете длинную команду, вы решаете, что хотите изменить ее, поэтому сразу же после ее запуска вызовите fc. Откроется окно gedit с вашей командой, готовой к изменению. Как только вы закончите изменять, сохраните и выйдите, как обычно.

Недостаток? Это оставит след ненужных сообщений gtk в терминале. Лично я использую редакторы командной строки vim или nano, а не gedit - они не оставляют никаких следов, кроме того, их можно использовать в TTY не только в среде GUI. Я настоятельно рекомендую вам переключиться на nano, так как это один из самых простых текстовых редакторов командной строки.

Дополнительная заметка в bash, вы можете сделать то же самое с командной строкой , которую вы сейчас редактируете с помощью ctrl + X < / kbd> + E или ctrl + X - ctrl + E ; вы можете иметь то же поведение в zsh добавляя к вашему .zshrc

autoload -z edit-command-line
zle -N edit-command-line
bindkey '^XE' edit-command-line # binds CTRL+X+E
bindkey "^X^E" edit-command-line # binds CTRL+X - CTRL+E
13
ответ дан 23 November 2019 в 06:09

Используйте gedit -. Таким образом, это будет читать из stdin, таким образом, можно будет использовать

echo 'echo "complex command"'|gedit -

или просто

gedit - <<< 'echo "complex command"'

Этот способ, которым Вы не должны будете создавать отдельный tmpfile.

9
ответ дан 23 November 2019 в 06:09

С этой командой можно достигнуть этого: echo "This is a complex command" > tempfile | gedit tempfile.

Редактирование:

Насколько я понимаю, Вы хотите что-то вроде этого: echo echo "This is a complex command" > tempfile | gedit tempfile. Например, echo ls -d > tempfile | gedit tempfile откроет gedit файл со следующим текстом: "ls-d".

, Который сказал, что я буду совет против редактирования команд на Gedit. Терминал Linux чрезвычайно мощен (у нас есть мощное заполнение клавишей Tab).

3
ответ дан 23 November 2019 в 06:09

Другие вопросы по тегам:

Похожие вопросы: