Символы группы egrep в цитате

Вариант Вима. Vim должен быть редактором по умолчанию.

  1. Выберите длинную команду из истории, используя стрелки вверх/вниз. Я выбрал это:echo "один два три" > new_file.txt
  2. Нажмите комбинацию Ctrl + x Ctrl + e. Это откроет нашу длинную команду внутри Vim. Нажмите Ctrl + g, чтобы отобразить имя временного файла в нижней части окна vim. В моем случае это /tmp/bash-fc.230BC2
  3. Перейдите к другому tty, введите vim /tmp/bash-fc.230BC2 (используя автозаполнение имени файла , конечно). Он скажет вам «Файл подкачки уже существует» — нажмите O, чтобы открыть только для чтения.
  4. Затем внутри vim вам потребуется следующая последовательность клавиш: y$ : ! Ctrl+r " Введите
    Объяснение :
    • y$ - скопировать все символы строки, кроме завершающего символа новой строки.
    • : - перейти в режим командной строки
    • ! - выполнить команду через шелл
    • Ctrl+r " - вставить скопированную строку в командную строку.
    • Enter - выполнить команду

Стоит отметить, что вся эта последовательность клавиш можно сопоставить с одним нажатием клавиши, отредактировав файл .vimrc.

Готово - команда скопирована с одного tty на другой и выполнена.

0
16.08.2017, 15:28
5 ответов

Использование lsb_release:

$ lsb_release -ds
Ubuntu 17.04

или, в сценарии,

sys_descr=$( lsb_release -ds )
printf 'This is a "%s" system\n' "$sys_descr"

lsb_releaseанализирует файл /etc/os-release. Флаг -dдаст вам «описание» системы, что и дает PRETTY_NAMEв /etc/os-release. Флаг -sдаст вам вывод без заголовка.

См. руководства для lsb_releaseи os-release.

3
28.01.2020, 02:13

Используйтеsed:

sed '/^PRETTY_NAME=/!d;s///;s/"//g' /etc/*-release

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

2
28.01.2020, 02:13

С однимвыражением sed:

sed -n 's/PRETTY_NAME="\(.*\)"/\1/p' /etc/*release

Выход:

Ubuntu 16.04.3 LTS

В вашем случае это будет выглядеть так:

SYS_VERSION=$(sed -n 's/PRETTY_NAME="\(.*\)"/\1/p' /etc/*release)
2
28.01.2020, 02:13

Вы можете передать свою команду вcut -d '"' -f2:

SYS_VERSION=$(cat /etc/*-release | egrep  "^PRETTY_NAME=(.*[a-zA-Z]+.*)$" | cut -d '"' -f2)
1
28.01.2020, 02:13

вы можете использоватьawk -F '"' '{print $2}'

1
28.01.2020, 02:13

Теги

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