Articles of zsh

Привязка оболочки tmux alt meta zsh

У меня есть следующие пользовательские сочетания клавиш Zsh для Alt (мета) + клавиши со стрелками влево и вправо с помощью параметра X Iterm2 и + Esc для мета bindkey “^[^[[D” backward-word bindkey “^[^[[C” forward-word Это позволяет перемещаться по слову на оболочке, как в большинстве текстовых редакторов с стрелкой alt. Однако при запуске сеанса tmux эти […]

контекст вызова функции в zsh: эквивалент bash `caller`

В bash я могу написать: caller 0 и получить контекст звонящего : Номер строки функция Название сценария Это чрезвычайно полезно для отладки. Дано: yelp () { caller 0; } Затем я могу написать yelp чтобы увидеть, какие строки кода достигаются. Я могу реализовать caller 0 в bash как: echo “${BASH_LINENO[0]} ${FUNCNAME[1]} ${BASH_SOURCE[1]” Как я могу […]

миграция zsh_history в .bash_history

Я перешел с Mac на Linux Я zsh_history.txt копию моего zsh_history.txt Как я могу слить / добавить его в мой файл .bash_history ? Я вижу формат отличается: git pull #1530441990 git push #1530447814 locate “*ls*” | grep -P ‘history’ #1530447865 echo $HISTFILE #1530448256 : 1470922871:0;git clone : 1470923028:0;git clone sso://waze-bimqa-internal/RoutingRegression : 1470924442:0;ls -ltrh `echo $JAVA_HOME` […]

Добавление suid в двоичный файл

Мой вопрос о suid ! Логика заключается в том, чтобы предоставить корневое разрешение, когда привилегированная команда выполняется пользователем. Например, у passwd есть такая особенность. $ ls -l /usr/bin/passwd -rwsr-xr-x 1 root root 54224 Aug 21 2017 /usr/bin/passwd Я написал кусок кода, который открывает zsh . Итак, я вручную добавляю suid в мой исполняемый файл. $ […]

Замена STD {OUT, ERR} в конвейере несколько раз

Основываясь на этом ответе , я написал следующее, которое меняет дескрипторы файлов 1 и 2: swap12 : #!/bin/bash “$@” 3>&1 1>&2 2>&3 3>&- Затем я могу работать с STDERR в конвейере, например: $ swap12 ls -ld /tmp /ooooooo | tr o X ls: cannXt access ‘/XXXXXXX’: NX such file Xr directXry drwxrwxrwt 19 root root […]

Есть ли недостатки настройки `noclobber`?

Учитывая, что zsh может перекрыть все файлы с помощью команды: >* Я думаю, что установка опции noclobber была бы хорошей идеей. Я всегда могу использовать >| file >| file если я хочу использовать стандартное поведение clobber в bash и zsh. (zsh также допускает альтернативный синтаксис >!file ). Я предполагаю, что noclobber не установлен по умолчанию […]

Псевдоним, когда не первое слово: `G = ‘| grep’`, затем` command G grep-string`

Я обнаруживаю, что печатаю | grep | grep и | less | less много, и мне было интересно, есть ли способ сделать что-то вроде: alias G=’| grep -E’ # egrep is deprecated alias L=’| less’ Так что я мог бы сделать что-то вроде: $ command G grepstring или же $ verbose-command L В настоящее время […]

zsh: печатать текст из командной строки

Я хочу напечатать некоторый буквальный текст, включая такие вещи, как ; и # . В bash я могу использовать (кредит) : echo_literally_helper() { local str; str=$(history 1) str=${str#[\ ]*[0-9]*\ *echo-literally\ } # remove leading space number space echo “$str” } alias echo-literally=’echo_literally_helper #’ Затем: $ echo-literally a; b; c a; b; c Как бы я […]

Как дождаться, пока пользователь закроет vim, а затем запустить команду в сценарии оболочки

В настоящее время я пытаюсь написать функцию оболочки для обновления моего файла .zshrc. В настоящее время у меня есть псевдоним, который выглядит следующим образом alias zshrc=”vim ~/.zshrc” Мне было интересно, есть ли какой-нибудь способ написать функцию, которая будет ждать, пока я закрою vim, а затем выполню команду после закрытия vim. Для справки: команда, которую я […]

Ошибка «Нет такого файла или каталога» в существующем файле?

У меня есть проблема с двоичным (?), Который одновременно кажется, что существует и не существует. $ ls -l /usr/local/bin/vue lrwxr-xr-x 1 myusername admin 73 Jul 14 15:31 /usr/local/bin/vue -> ../../../Users/myusername/.config/yarn/global/node_modules/vue-cli/bin/vue $ /usr/local/bin/vue zsh: no such file or directory: /usr/local/bin/vue Есть идеи, что здесь происходит?