Необходимо выйти из круглых скобок:
cd Program\ Files\ \(x86\)
Нажатие TAB будет обычно завершать командную строку для Вас и даст подсказки, как заключить файл/имена каталогов в кавычки.
Alt-_ уже вставляет последнее слово от последней команды. Для меня это достаточно хорошо, но Вы могли добавить другую привязку клавиш, которая вставляет пробел, то последнее слово, и признайте, что строка (Входит).
С tcsh
или zsh
(для Высоких звуков, S
для same
):
bindkey -s '\es' ' \e_\r'
С bash
:
bind '"\es": " \e_\r"'
Затем тип:
$ nmap -Pn -sS 192.168.1.5
$ ssh<Alt-S>
$ curl<Alt-S>
...
В zsh
и tcsh
по крайней мере, числовой аргумент (это - при добавлении префикса его Высокий звук - <число>) будет применен к пробелу, который не очень полезен (Alt-3Alt-S вставил бы 3 пробела, последнее слово однажды и принял бы строку). Было бы более полезно иметь его, вставляют или энное последнее слово от последней команды, или последнее слово от энной последней команды или последние n слова от последней команды.
В zsh
по крайней мере, вместо того, чтобы использовать макрос, Вы могли определить новый виджет. Например, с:
use-last-word() {
LBUFFER+=" "
zle insert-last-word
zle accept-line
}
zle -N use-last-word
bindkey '\es' use-last-word
Alt-3Alt-S вставил бы 3-е последнее слово от последней команды.
Вставить последнее слово от 3-й последней команды:
use-last-word() {
LBUFFER+=" "
local n=$NUMERIC
unset NUMERIC
repeat ${n:-1} zle insert-last-word
zle accept-line
}
Вставить последние 3 слова от последней команды:
use-last-word() {
for ((NUMERIC=${NUMERIC:-1}; NUMERIC; NUMERIC--)) {
LBUFFER+=" "; zle insert-last-word
}
zle accept-line
}
Я плохо себя чувствую, отвечая на мой собственный вопрос как это, но у меня есть решение:
pst() {
[ $# = 0 ] && return 1
if [ -n $ZSH_VERSION ]; then
local read=vared
else
local read=read
fi
local cmd
local -a args
args=("$@")
while $read -p '> ' cmd ; do
test -z "$cmd" && continue
$cmd "${args[@]}"
done
}
Это работает как таковое:
$ pst 192.168.1.5
> nmap -Pn -sS
> ssh
> curl
> wget -r
Я собираюсь оставить вопрос открытым на некоторое время, чтобы видеть, обнаруживаются ли какие-либо отличные решения. Одна главная оборотная сторона этого решения - то, что команды, которые оно выполняет, не зарегистрированы.
Я не реализовал ничего как это, но интересно, могли ли Вы насладиться этими 2 средствами, предлагаемыми оболочкой. $PATH и завершенная команда.
Когда Вы находитесь в своем "специальном режиме", Вы могли обеспечить, что-то как вкладка завершается, но вместо того, чтобы иметь необходимость неоднократно поразить его, Вы вводите несколько букв фактической команды, Вы хотите выполнить nm (для nmap) и поразить ключевую комбинацию, подобную вкладке, которая затем опросила бы $PATH, ища исполняемые файлы, которые соответствуют тому, что Вы ввели до сих пор и затем возвращаете список Вам как так:
Я ввожу:
$ pst 192.168.1.5
> nm <press SHIFT-TAB>
Мне предлагают следующий список назад:
1* - nmap 192.168.1.5 2 - nmap2 192.168.1.5 3 - nmap3 192.168.1.5
Примечание: Вышеупомянутый список был бы тем, что соответствовало тому, что я ввел от опроса $PATH
.
Из списка выше я мог или совершить нападки, входят, чтобы принять первый ответ (1*) или ввести количество соответствия, которое я хочу использовать:
>> 2 <press ENTER>
Вы могли также интегрироваться complete
средство в ударе и других оболочках для сужения соответствий так, чтобы только соответствовал, который может принять типы аргументов, предоставленных pst <arg>
был бы рассмотрен в соответствии.