Таким образом, команда не запускает произвольный код. Все, что он делает, это запускает man <whatever>
в новом окне экрана, если ваш курсор был над словом <whatever>
.
Причина, по которой команда copy
заключается в том, что вам нужно сообщить экрану, что вы хотите что-то скопировать. Возможно, вы не всегда находитесь в режиме копирования экрана при нахождении над путем - например, вы можете использовать vim и навести курсор vim на путь. Если вы уже находитесь в режиме копирования, значит, этот режим недоступен.
screen -t man /bin/sh -c 'cat | xargs man || read'
screen
:: открыть новое окно
-t man
:: присвоить ему название man
/bin/sh -c 'cat | xargs man || read'
:: запустить эту команду в новом окне, а не открывать оболочку по умолчанию в новом окне.
/bin/sh
:: оболочка
-c 'cat | xargs man || read'
:: запускать данную строку как скрипт, а не открывать в интерактивном режиме
cat |
:: ждать пользовательского ввода (заканчивающегося новой строкой и CTRL-D), затем передать его как ввод пользователя следующей команде
xargs man
:: call man
, используя все, что читается из стандартного ввода, в качестве аргументов командной строки для man
|| read
:: если предыдущие команды возвращают ненулевое значение, подождите, пока пользователь нажмет Enter
По вашему выводу это выглядит как
- Часть команды
-c
не запускается, поскольку выглядит как новая оболочка ($
- подсказка).
Часть stuff "^M^D"
была расшифрована неправильно. Следующая строка без комментариев после paste '.'
должна быть введена, нажатие клавиши для нажатия клавиши, как:
's', 't', 'u', 'f', 'f', ' ', '"', <CTRL-V>, <ENTER>, <CTRL-V>, <CTRL-D>, '"'
Если вы скачали файл , а не расшифровали его, у вас могут не возникнуть эти проблемы.
Кроме того, bindkey -m ^f
- это не то же самое, что bind f
. И ни один не связывает команду с ^g
.
bindkey -m ^f
привязывает команду к <CTRL-f>
, но только в режиме копирования.
bind f
связывает команду с <CTRL-A> f
во всех режимах.