Вариант Вима. Vim должен быть редактором по умолчанию.
echo "один два три" > new_file.txt
Ctrl + x
Ctrl + e
. Это откроет нашу длинную команду внутри Vim. Нажмите Ctrl + g
, чтобы отобразить имя временного файла в нижней части окна vim. В моем случае это /tmp/bash-fc.230BC2
vim /tmp/bash-fc.230BC2
(используя автозаполнение имени файла , конечно). Он скажет вам «Файл подкачки уже существует» — нажмите O
, чтобы открыть только для чтения. y$ : ! Ctrl+r " Введите
y$
- скопировать все символы строки, кроме завершающего символа новой строки. :
- перейти в режим командной строки !
- выполнить команду через шелл Ctrl+r "
- вставить скопированную строку в командную строку. Enter
- выполнить команду Стоит отметить, что вся эта последовательность клавиш можно сопоставить с одним нажатием клавиши, отредактировав файл .vimrc
.
Готово - команда скопирована с одного tty на другой и выполнена.
Использование 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
.
Используйтеsed
:
sed '/^PRETTY_NAME=/!d;s///;s/"//g' /etc/*-release
Первая команда удаляет все строки, которые не начинаются с PRETTY_NAME=
, вторая удаляет указанный шаблон (пустой шаблон означает использование последнего шаблона ), третья удаляет кавычки.
С однимвыражением 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)
Вы можете передать свою команду вcut -d '"' -f2
:
SYS_VERSION=$(cat /etc/*-release | egrep "^PRETTY_NAME=(.*[a-zA-Z]+.*)$" | cut -d '"' -f2)