использование PROMPT_COMMAND='/bin/echo -ne "\033k\033\0134"'
в .bashrc
вместе с shelltitle '$ |bash'
в .screenrc
отлично работает для меня. Использование этого конкретного PROMPT_COMMAND
каким-то образом ломает мою PS1, поэтому я также добавил следующее в.bashrc
:
case "$TERM" in
screen*) PROMPT_COMMAND='/bin/echo -ne "\033k\033\0134"';;
esac
Пример прикрепленного изображения -запуск сна в окне 0, поиск в окне 1, просмотр в окне 2, проверка связи в окне 3 и bash в окне 4.
echo "unix" | sed -e 's/\(.\)/\/\1/g' | sed -e 's/$/\//'
выход:
/u/n/i/x/
$ echo unix | sed -e 's,.,&/,g' -e 's,^,/,'
/u/n/i/x/
Это похоже на ответ NiteRain , но удаляет sed
вызов, позволяя одному sed
выполнять два выражения, и упрощает используемое регулярное выражение, используя запятые в качестве альтернативного разделителя для s///
команда.
Первая подстановка, используемая здесь, заменяет каждый символ во входной строке самим собой, за которым следует символ /
. Вторая замена вставляет /
в начало строки.
Команда sed
может быть сокращена до sed 's,.,&/,g; s,^,/,'
, т. е. с использованием одного аргумента, содержащего обе подстановки, разделенные ;
.
Используя GNU sed
, вы также можете
$ echo unix | sed 's,.\{0\},/,g'
/u/n/i/x/
.\{0\}
соответствует ровно нулю символов. GNU sed
сопоставляет это выражение в -между каждым символом в строке.Другая реализация sed
может интерпретировать это как ошибку. Здесь OpenBSDsed
:
$ echo unix | sed 's,.\{0\},/,g'
sed: 1: "s,.\{0\},/,g": RE error: empty (sub)expression
Одним из способов использования sed является добавление новой строки в конце.
$ echo Unix | sed -n 'G;s|.|/&|g;P'
/U/n/i/x/
Также можно использовать описанные ниже методы. Оба используют версии GNU awk n sed.
$ echo Unix | sed -e 's/./\n&/g;G' | paste -sd'/'
$ echo Unix | awk '{$1=OFS $1}++NF' FPAT=. OFS=/
Лучшим ресурсом для редактора sed является sed n awk О'Рейли, автор Dale Dougherty, et.al. Кроме того, общайтесь с такими группами, как эта, и учитесь у других подходов, которые помогут вам быстрее освоиться.
Некоторые решения GNU gawk
:
$ echo "unix" | awk -v FS='' -v OFS='/' 'BEGIN { printf "/"}; $1=$1 { printf $0 }; END { print "/" } '
/u/n/i/x/
$
Вот еще один более короткий скрипт, который обрабатывает ведущие нули и не используетprintf
:
$ echo "0unix" | awk -F '' -v OFS='/' '{$1=$1}1 { print "/"$0"/" }'
/0/u/n/i/x/
$
Другое решение:
$ echo "0unix" | awk -v FPAT='.' -v OFS='/' '{$1=$1}1 { print "/"$0"/" }'
/0/u/n/i/x/
$
Эти сценарии могут работать или не работать с другими реализациями языка AWK. В частности, особое значение установки FS
в пустую строку приведет к появлению предупреждающего сообщения в некоторых версиях awk
, таких как nawk
. Обратите внимание, что FPAT
относится к gawk
.
С любым awk в любой оболочке на каждой машине Unix:
$ echo 'unix' | awk '{gsub(/./,"/&"); print $0"/"}'
/u/n/i/x/