Я нашел решение своей проблемы, прочитав некоторые сообщения/ответы, ссылки на которые есть в колонке "связанные" справа. Я скопировал файлы на жесткий диск usb с файловой системой ntfs. Поиск не выполнялся. Когда я скопировал их на usb-накопитель с файловой системой fat, они были найдены, и установка могла продолжаться.
Попробуйте следующее, но обратите внимание, что совместимость довольно ограничена. См. примечания ниже.
get_title(){(
set -e
ss=`stty -g`; trap 'exit 11' INT QUIT TERM; trap 'stty "$ss"' EXIT
e=`printf '\033'`; st=`printf '\234'`; t=
stty -echo -icanon min 0 time "${2:-2}"
printf "${1:-\033[21t}" > "`tty`"
while c=`dd bs=1 count=1 2>/dev/null` && [ "$c" ]; do
t="$t$c"
case "$t" in
$e*$e\\|$e*$st)
t=${t%$e\\}; t=${t%$st}; printf '%s\n' "${t#$e\][lL]}";
exit 0;;
$e*);;
*) break;;
esac
done
printf %s "$t"; exit 1
)}
Пример:
$ get_title
$ title=`get_title`
Или, если стандартный ввод вашего скрипта не является терминалом:
$ title=`get_title </dev/tty`
Кладж stty
+ dd
пытается убедиться, что сценарий не просто заблокируется, если терминал ничего не сообщит в ответ на побег \e[21t
. Этот (или лучший )подход можно также использовать с другими управляющими последовательностями (, например. чтобы получить позицию курсора ).
Примечания:
Поскольку побег \e[21t
считается «небезопасным», для его работы требуется дополнительная настройка.:
Дляxterm
:echo '*.vt100.allowWindowOps: true' | xrdb -override
Дляurxvt
:echo 'Rxvt.insecure: true' | xrdb -override
Это вообще не будет работать в терминалах на базе vte -, таких как gnome-terminal
, mate-terminal
, xfce4-terminal
и т. д., поскольку они сообщают либо о подделке(" Терминал" )или пустой заголовок в ответ.
mlterm
ничего особенного не нужно, но (рухнет! )если заголовок не был установлен ранее с\e]2;TITLE\a
(эта ошибка была исправлена в текущих источниках ).
screen
сообщит о своем собственном заголовке окна (, который был установлен с помощью опции -t
или команды C -a A , а не заголовка окна, в котором он работает.
Он заблокирован и не поддерживается в tmux
.