Все, что я когда-либо хотел узнать об оболочке (Bash), может быть найдено заранее Руководством по созданию сценариев Bash http://tldp.org/LDP/abs/html/. Существует несметное число примеров здесь также.
Это включает весь sematics и информацию о "стандартной библиотеке", можно найти здесь http://www.gnu.org/manual/manual.html
У Zsh есть встроенный буфер обмена, который не общается с другими приложениями. Так как это очень scriptable, можно заставить его общаться с несколькими строками в Вашем ~/.zshrc
. Вам будут нужны xclip или xsel. Посмотрите Вставку от буфера обмена до vi-enabled zsh или колотите оболочку за подтверждение концепции в vi режиме. Вот соответствующий код для emacs режима (Вы, вероятно, захотите сделать что-то подобное другому kill-*
виджеты).
x-copy-region-as-kill () {
zle copy-region-as-kill
print -rn $CUTBUFFER | xsel -i -b
}
zle -N x-copy-region-as-kill
x-kill-region () {
zle kill-region
print -rn $CUTBUFFER | xsel -i -b
}
zle -N x-kill-region
x-yank () {
CUTBUFFER=$(xsel -o -b </dev/null)
zle yank
}
zle -N x-yank
bindkey -e '\ew' x-copy-region-as-kill
bindkey -e '^W' x-kill-region
bindkey -e '^Y' x-yank
Это использует буфер обмена X11 (обычно получал доступ с Ctrl+C/Ctrl+V); удалите -b
опция использовать основной выбор X11 вместо этого (автоматическая копия на выборе и вставка со средней кнопкой мыши).
Можно хотеть взглянуть на http://stchaz.free.fr/mouse.zsh, который, кроме того, можно добавить, что поддержка мыши также пытается взаимодействовать с X Буферами обмена.
Как вы можете узнать на WikiDevi или веб-сайте Asus , этот маршрутизатор работает под управлением AsusWRT . AsusWRT является производным от Tomato , который сам является одним из потомков StartWRT , дистрибутива Linux для сетевых устройств низкого класса, таких как маршрутизаторы.
Только с 8MB флэш-памяти вы не сможете установить дополнительное программное обеспечение. Тем не менее, есть порт USB, где можно подключить место хранения носитель и запустить код оттуда.
С помощью исходного образа Asus можно установить дополнительные программы с помощью Optware . Optware поставляется с диспетчером пакетов ipkg
.
Вас также может заинтересовать микропрограмма сообщества asuswrt-merlin .
Я не рекомендую пытаться установить пакеты Debian, так как устройство довольно ограничено (только 64MB оперативной памяти). Получите источник пакетов, предназначенный для устройств меньшего размера, даже если это означает изучение нового менеджера пакетов.
-121--121371-Параллельно выполняется процесс производителя (слева) и процесс потребителя (справа). Поскольку параллельно существуют два процесса, по крайней мере один из них должен быть дочерним процессом основного процесса оболочки, возможно, и тем, и другим.
Большинство оболочек выполняют обе стороны канала в подпроцессах. ATT ksh и zsh выполняют правую сторону в исходном процессе.
Команда cd
изменяет текущий каталог текущего процесса оболочки, поэтому должен быть builtin . Поскольку левая сторона канала выполняется во вложенном корпусе (подпроцессе, который разветвлен из процесса оболочки, выполняющего сценарий), команда cd
вступает в силу только во вложенном корпусе. Это работает, но так как субкорпорация выходит сразу после, она не делает ничего полезного. Вы можете наблюдать это с помощью
{ cd /tmp; echo -n "left-hand side: "; pwd; } |
{ cd /usr; echo -n "right-hand side: "; pwd; }
echo -n "parent: "; pwd
Чтобы записать выходные данные из сценария, сделайте один конвейер, который применим ко всему сценарию.
main () {
… # whole script goes here
}
main | logger
-121--139177- Я хотел интегрировать буфер вырезания Zsh в буфер обмена X. Я попробовал вышеупомянутые http://stchaz.free.fr/mouse.zsh , но я обнаружил, что мне не нравится, когда все мои операции Zsh заполняют буфер обмена. Например, иногда я копирую что-то в браузере, а затем иду в оболочку и редактирую командную строку, а затем вставляю. Но часто редактирование командной строки - например, удаление слова - изменяет буфер вырезания Zsh. К лучшему или к худшему, у X просто есть буфер обмена, а не кольцо уничтожения, поэтому, когда операция редактирования Zsh перезаписывает буфер обмена, вещь, которую я хотел вставить, теряется - я не могу выскочить его (C-y M-y), как я мог бы сделать в Zsh или Emacs.
Вместо этого я создал новые специальные клавиатуры для взаимодействия с X-буфером обмена через zsh. Оказывается, «^ Xw» и «^ Xy» не используются как в Emacs, так и в Zsh, так что я могу получить последовательный интерфейс, связав их в обоих приложениях. Таким образом, обычные операции редактирования, cutbuffer и kill ring остаются в одиночестве.Если я хочу скопировать что-то в буфер обмена, я задаю область и делаю «^ Xw» (или если я уже убил ее и область неактивна, я могу просто сделать «^ Xw», чтобы скопировать вырезанный буфер). Вставка из буфера обмена выполняется с помощью команды «^ Xy».
# define commands to copy and paste x clipboard
# ^Xw - copy region, or cut buffer
# ^Xy - paste x clipboard
# in both cases, modifies CUTBUFFER
copy-to-xclip() {
[[ "$REGION_ACTIVE" -ne 0 ]] && zle copy-region-as-kill
print -rn -- $CUTBUFFER | xclip -selection clipboard -i
}
zle -N copy-to-xclip
bindkey "^Xw" copy-to-xclip
paste-xclip() {
killring=("$CUTBUFFER" "${(@)killring[1,-2]}")
CUTBUFFER=$(xclip -selection clipboard -o)
zle yank
}
zle -N paste-xclip
bindkey "^Xy" paste-xclip
Для пользователей macOS :вот как сделать ESC -w (, также известный как Meta -w или Option -w ), скопировать на монтажный стол macOS, а также встроенный zsh -в буфере обмена.
pb-copy-region-as-kill () {
zle copy-region-as-kill
print -rn $CUTBUFFER | pbcopy
}
zle -N pb-copy-region-as-kill
bindkey -e '\ew' pb-copy-region-as-kill
Для полноты картины :вот код для Ctrl -u и Ctrl -k тоже
pb-backward-kill-line () {
zle backward-kill-line
print -rn $CUTBUFFER | pbcopy
}
zle -N pb-backward-kill-line
bindkey -e '^u' pb-backward-kill-line
pb-kill-line () {
zle kill-line
print -rn $CUTBUFFER | pbcopy
}
zle -N pb-kill-line
bindkey -e '^k' pb-kill-line
kill-region
сvi-delete
иyank
сvi-put-after
и т.д. Так же перенеситесьvi-yank
, и другие. (Я не нашел способ сделать это более централизованно) – olejorgenb 05.09.2017, 18:19