Если Ваш заголовок окна отражает приложение, в настоящее время работающее в окне, это - потому что Ваша оболочка делает это. Если это делает это, это - потому что Ваше распределение, Ваш системный администратор или Вы настроили его к.
Если команда появляется как заголовок окна, в то время как команда работает, это сделано preexec
функция (в zsh), или эмуляция этого под ударом.
Если заголовок изменяется, когда каждая команда завершается, это сделано precmd
функция в zsh, PROMPT_COMMAND
параметр в ударе, или как часть подсказки (PS1
параметр) в любой оболочке. (Команда для изменения заголовка является escape-последовательностью, испускаемой любым приложением как часть потока вывода терминала, таким образом, это может быть встроено в подсказку.)
Ищите escape-последовательность как \e]0;new title\a
, \e]2;new title\a
или \eknew title\e\\
в Вашем файле инициализации оболочки (~/.bashrc
, ~/.zshrc
, …). Если нет ничего соответствующего, установка может быть в системном файле (например. /etc/bash.bashrc
, /etc/zsh/zshrc
); затем перезапишите тот параметр или функцию в Вашем собственном файле инициализации.
См. ответ Mikel для переопределяемого начинающегося заголовка preexec
.
Установите IFS (внутренний разделитель полей) к новой строке:
$ cat 1.sh
#!/bin/sh
OLD_IFS=$IFS
IFS="
"
./2.sh `cat lines.txt`
IFS=$OLD_IFS
$ ./1.sh
p1=a/b
p2='c/d e/f'
p3=
Если Вы не заблокированы в идею использовать кошку для отправки стольких args, сколько файл длинен, можно найти этот метод довольно гибким. Можно передать файл по каналу непосредственно к 2.sh
# echo -e "a/b\n'c/d e/f'" >lines.txt
fn2.sh() { set -f # disable pathname expansion
while IFS= read -r line; do # -r prevents expansion of such things as \n
printf "%s\n" "$line" # printf is more robust than echo (when dealing with unknown data)
done
}
< lines.txt fn2.sh # using redirection
Если Ваш входной файл содержит строку 'c/d e/f'
и Вы хотите обработать объект c/d e/f
(без кавычек), затем можно искать xargs
. Его формат ввода является разделенным пробелом списком строк с символами '
и "
разграничивание литеральных строк. Кроме того, \
заставляет следующий символ интерпретироваться буквально, но только вне строки. Например, вот входной файл:
how\'dy 'hello world' aaa\
bbb
Объекты в этом файле how'dy
, hello world
и aaabbb
(где 
символ новой строки).