Заголовок в строке состояния был изменен escape-последовательностью из хоста «build». Простое завершение соединения ssh не меняет название обратно.
Отправка "\ekTEST\e\\"
на терминал изменит заголовок на "ТЕСТ". Это обратная косая черта ESC k TEST ESC.
echo -en "\ekTEST\e\\"
С практической точки зрения это тоже сработает
echo -e "\ekTEST"
Sed работает с каждой строкой файла, но если в файле нет ни одной строки, sed не работает. Как это часто бывает, awk обеспечивает большую гибкость.
Попробуйте GNUawk
:
gawk -i inplace 'BEGINFILE{print"hello world"} 1' foo
Описанное выше будет работать независимо от того, пусто foo
или нет.
Если у вас нет GNU awk
(gawk
), вам нужно:
awk 'BEGIN{print"hello world"} 1' foo >tmp && mv tmp foo
Перед запуском любого файла в командной строке BEGINFILE{print"hello world"}
пишет hello world
. Это происходит независимо от того, пуст файл или нет.
Для каждой строки в файле 1
является сокращением awk для печати строки.
Для GNU awk -i inplace
является эквивалентом -i
sed.
Если вы действительно хотите использовать sed
, вы можете сделать что-то вроде следующего:
$ echo "FPM" >> foo; sed -i -e '1i\hello world' -e '$ d' foo
Это будет работать независимо от того, существует ли foo
или нет, пуст он или нет.
Первая команда, echo "FPM" >> foo
, добавляет строку "FPM" (может быть любым текстом, который вам нравится )в конец foo
, если foo
существует; в противном случае он создает foo
и добавляет строку «FPM» к foo
.
Вторая команда, sed -i -e '1i\hello world' -e '$ d' foo
, вставляет «hello world» над первой строкой в foo
, а затем удаляет последнюю строку файла (, содержащую «FPM» ).