Если Вы просто хотите последний аргумент от предыдущей команды, затем используют !$
. Если Вы хотите все аргументы от последней команды, затем используют !*
.
КОМАНДА № 1:
$ echo 1 2 3 4
1 2 3 4
выполненный № 1 затем это:
$ echo !$
echo 4
4
выполненный № 1 затем это:
$ echo !*
echo 1 2 3 4
1 2 3 4
Также я настоятельно рекомендую, чтобы Вы проверили эту Unix & Linux Q&A и вопросы и ответы @Gilles' SuperUser:
Можно думать history
вывод как сетка. Каждая команда является строкой, каждым аргументом каждой команды является столбец. Как это: (!
строка:
столбец).
Таким образом, можно сослаться на предыдущие части команд как это:
$ history | grep "105[8-9]"
1058 echo 1 2 3 4
1059 echo 5 6 7 8
$ echo !1058:2
echo 2
2
$ echo !1059:3
echo 7
7
X действительно не имеет "буфера обмена" по умолчанию. Выборки управляются приложением, которое «владеет» ими, и если вы хотите скопировать или вставить выбор, это делается посредством обмена данными между обоими приложениями, что означает, что другое приложение, которое удерживает выбор, по-прежнему должно быть Бег.
Однако есть способ принять выбор, поэтому существуют общие приложения с буфером обмена, такие как xclipboard
, которые позволяют другим приложениям «отправлять» выбор XA_CLIPBOARD
.
Итак, (1) либо запустите xclip
с параметром -l
, чтобы он продолжал работать до тех пор, пока второе приложение не вставит успешно (для этого может потребоваться несколько циклов связи, поэтому - l 1
может дать сбой) или (2) запустить диспетчер буфера обмена и использовать -выбор XA_CLIPBOARD
.
Вы также сказали, что «содержимое буфера обмена не меняется», но не совсем понятно, какой «буфер обмена» вы имеете в виду и как это проверяли.