Ответ 1
Таким образом, команда не запускает произвольный код. Все, что он делает, запускается man <whatever>
в новом окне экрана, если ваш курсор был над словом <whatever>
.
Причина, по которой команда copy
заключается в том, что вам нужно указать экран, который вы хотите скопировать. Вы не всегда можете быть в режиме копирования экрана, когда по пути - например, вы можете использовать vim и иметь курсор vim над контуром. Если вы уже находитесь в режиме копирования, то это не-op.
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'
:: запустить заданную строку как script, а не открывать в интерактивном режиме -
cat |
:: ожидание ввода пользователя (завершено новой строкой и CTRL-D), затем подайте его как пользовательский ввод следующей команды -
xargs man
:: callman
, используя то, что читается со стандартного ввода в качестве аргументов командной строки дляman
-
|| read
:: если предыдущие команды возвращают ненулевое значение, дождитесь, когда пользователь нажмет кнопку ввода
-
С вашего вывода это выглядит как
- Часть команды
-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
во всех режимах.