Я подумываю о переходе от bash к zsh, поскольку часто встречаю сообщения, восхваляющие zsh. Я опытный пользователь командной строки, и я предполагаю, что основы практически одинаковы, поэтому я ищу совет, чтобы получить преимущества перемещения и любые ошибки, о которых нужно знать.
Пожалуйста, просто дайте один совет на каждый ответ. Я ищу куски размером с укусом, где я могу вернуться и интегрировать лишние биты информации в мое использование оболочки постоянными темпами, а не пытаться изучить все это за один раз.
Как вы говорите, zsh во многом похож на bash. Он имеет некоторые функции, которые вы не найдете в bash, и его можно расширить мощными способами. Не думайте двигаться как своего рода революцию, а скорее как ряд эволюционных шагов, которые помогут вам в вашей повседневной работе. Вот некоторые подсказки от моего .zshrc. Хотя вы говорите, что предпочитаете отдельные советы, этот пост является длинным списком. Тем не менее, это хорошая идея, чтобы пройти через точки один за другим. Просто добавьте интересные бит к вашему ~/.zshrc и перезагрузите с помощью source ~/.zshrc. Окончательный совет: узнайте нажатия клавиш zsh по умолчанию («Emacs»): ^A ^E ^W Alt-F Alt-B Alt-P ^L ^R. Вы можете заменить Alt на два отдельных нажатия клавиш: Alt-P эквивалентно ESC P.
Это дает вам более обширную вкладку.
autoload -U compinit
compinit
Завершение табуляции с обоих концов.
setopt completeinword
Завершение табуляции должно быть нечувствительным к регистру.
zstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z}'
Лучшее завершение для killall.
[ f4]Изменяет определение слова, например с ^ W.
autoload select-word-style
select-word-style shell
Цвета для ls.
if [[ -x "`whence -p dircolors`" ]]; then
eval `dircolors`
alias ls='ls -F --color=auto'
else
alias ls='ls -F'
fi
Ярлыки для ls.
alias ll='ls -l'
alias la='ls -a'
Одна история для всех открытых оболочек; хранить 10 000 записей. Это позволяет использовать полезную память для поиска команд, которые вы использовали в последний раз для ./configure и т. Д. Используйте Alt-P (найти команду, которая начинается так) и ^ R (поиск в истории) либерально.
HISTFILE=~/.zhistory
HISTSIZE=SAVEHIST=10000
setopt sharehistory
setopt extendedhistory
Включает все виды расширенного globbing, такие как ls ** / *. txt (найти все текстовые файлы), ls -d *(D) (показать все файлы, включая те, которые начинаются с «.»).
# superglobs
setopt extendedglob
unsetopt caseglob
Это полезно запомнить команды в вашей истории, не выполняя их.
setopt interactivecomments # pound sign in interactive prompt
Введите «..» вместо «cd ..», «/ usr / include» вместо «cd /usr/include".
setopt auto_cd
Хорошее приглашение.
PS1='[%T] %n@%m:%~# '
Показывать статистику использования CPU для команд, занимающих более 10 секунд
REPORTTIME=10
Некоторые команды, которые вы широко используете в Ubuntu.
alias 'a=sudo aptitude'
alias 'ai=sudo aptitude install'
alias 'ar=sudo aptitude remove'
alias 'au=sudo aptitude update'
alias 'ag=sudo aptitude safe-upgrade'
alias 'as=apt-cache search'
alias 'aw=apt-cache show'
Перечисляет пакеты, отсортированные по их размеру - полезно, когда решая, какие пакеты занимают ваше дисковое пространство.
function apt-list-packages {
dpkg-query -W --showformat='${Installed-Size} ${Package} ${Status}\n' | grep -v deinstall | sort -n | awk '{print $1" "$2}'
}
Как вы говорите, zsh во многом похож на bash. Он имеет некоторые функции, которые вы не найдете в bash, и его можно расширить мощными способами. Не думайте двигаться как своего рода революцию, а скорее как ряд эволюционных шагов, которые помогут вам в вашей повседневной работе. Вот некоторые подсказки от моего .zshrc. Хотя вы говорите, что предпочитаете отдельные советы, этот пост является длинным списком. Тем не менее, это хорошая идея, чтобы пройти через точки один за другим. Просто добавьте интересные бит к вашему ~/.zshrc и перезагрузите с помощью source ~/.zshrc. Окончательный совет: узнайте нажатия клавиш zsh по умолчанию («Emacs»): ^A ^E ^W Alt-F Alt-B Alt-P ^L ^R. Вы можете заменить Alt на два отдельных нажатия клавиш: Alt-P эквивалентно ESC P.
Это дает вам более обширную вкладку.
autoload -U compinit
compinit
Завершение табуляции с обоих концов.
setopt completeinword
Завершение табуляции должно быть нечувствительным к регистру.
zstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z}'
Лучшее завершение для killall.
zstyle ':completion:*:killall:*' command 'ps -u $USER -o cmd'
Изменяет определение слова, например с ^ W.
autoload select-word-style
select-word-style shell
Цвета для ls.
if [[ -x "`whence -p dircolors`" ]]; then
eval `dircolors`
alias ls='ls -F --color=auto'
else
alias ls='ls -F'
fi
Ярлыки для ls.
alias ll='ls -l'
alias la='ls -a'
Одна история для всех открытых оболочек; хранить 10 000 записей. Это позволяет использовать полезную память для поиска команд, которые вы использовали в последний раз для ./configure и т. Д. Используйте Alt-P (найти команду, которая начинается так) и ^ R (поиск в истории) либерально.
HISTFILE=~/.zhistory
HISTSIZE=SAVEHIST=10000
setopt sharehistory
setopt extendedhistory
Включает все виды расширенного globbing, такие как ls ** / *. txt (найти все текстовые файлы), ls -d *(D) (показать все файлы, включая те, которые начинаются с «.»).
# superglobs
setopt extendedglob
unsetopt caseglob
Это полезно запомнить команды в вашей истории, не выполняя их.
setopt interactivecomments # pound sign in interactive prompt
Введите «..» вместо «cd ..», «/ usr / include» вместо «cd /usr/include".
setopt auto_cd
Хорошее приглашение.
PS1='[%T] %n@%m:%~# '
Показывать статистику использования CPU для команд, занимающих более 10 секунд
REPORTTIME=10
Некоторые команды, которые вы широко используете в Ubuntu.
alias 'a=sudo aptitude'
alias 'ai=sudo aptitude install'
alias 'ar=sudo aptitude remove'
alias 'au=sudo aptitude update'
alias 'ag=sudo aptitude safe-upgrade'
alias 'as=apt-cache search'
alias 'aw=apt-cache show'
Перечисляет пакеты, отсортированные по их размеру - полезно, когда решая, какие пакеты занимают ваше дисковое пространство.
function apt-list-packages {
dpkg-query -W --showformat='${Installed-Size} ${Package} ${Status}\n' | grep -v deinstall | sort -n | awk '{print $1" "$2}'
}
Как вы говорите, zsh во многом похож на bash. Он имеет некоторые функции, которые вы не найдете в bash, и его можно расширить мощными способами. Не думайте двигаться как своего рода революцию, а скорее как ряд эволюционных шагов, которые помогут вам в вашей повседневной работе. Вот некоторые подсказки от моего .zshrc. Хотя вы говорите, что предпочитаете отдельные советы, этот пост является длинным списком. Тем не менее, это хорошая идея, чтобы пройти через точки один за другим. Просто добавьте интересные бит к вашему ~/.zshrc и перезагрузите с помощью source ~/.zshrc. Окончательный совет: узнайте нажатия клавиш zsh по умолчанию («Emacs»): ^A ^E ^W Alt-F Alt-B Alt-P ^L ^R. Вы можете заменить Alt на два отдельных нажатия клавиш: Alt-P эквивалентно ESC P.
Это дает вам более обширную вкладку.
autoload -U compinit
compinit
Завершение табуляции с обоих концов.
setopt completeinword
Завершение табуляции должно быть нечувствительным к регистру.
zstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z}'
Лучшее завершение для killall.
zstyle ':completion:*:killall:*' command 'ps -u $USER -o cmd'
Изменяет определение слова, например с ^ W.
autoload select-word-style
select-word-style shell
Цвета для ls.
if [[ -x "`whence -p dircolors`" ]]; then
eval `dircolors`
alias ls='ls -F --color=auto'
else
alias ls='ls -F'
fi
Ярлыки для ls.
alias ll='ls -l'
alias la='ls -a'
Одна история для всех открытых оболочек; хранить 10 000 записей. Это позволяет использовать полезную память для поиска команд, которые вы использовали в последний раз для ./configure и т. Д. Используйте Alt-P (найти команду, которая начинается так) и ^ R (поиск в истории) либерально.
HISTFILE=~/.zhistory
HISTSIZE=SAVEHIST=10000
setopt sharehistory
setopt extendedhistory
Включает все виды расширенного globbing, такие как ls ** / *. txt (найти все текстовые файлы), ls -d *(D) (показать все файлы, включая те, которые начинаются с «.»).
# superglobs
setopt extendedglob
unsetopt caseglob
Это полезно запомнить команды в вашей истории, не выполняя их.
setopt interactivecomments # pound sign in interactive prompt
Введите «..» вместо «cd ..», «/ usr / include» вместо «cd /usr/include".
setopt auto_cd
Хорошее приглашение.
PS1='[%T] %n@%m:%~# '
Показывать статистику использования CPU для команд, занимающих более 10 секунд
REPORTTIME=10
Некоторые команды, которые вы широко используете в Ubuntu.
alias 'a=sudo aptitude'
alias 'ai=sudo aptitude install'
alias 'ar=sudo aptitude remove'
alias 'au=sudo aptitude update'
alias 'ag=sudo aptitude safe-upgrade'
alias 'as=apt-cache search'
alias 'aw=apt-cache show'
Перечисляет пакеты, отсортированные по их размеру - полезно, когда решая, какие пакеты занимают ваше дисковое пространство.
function apt-list-packages {
dpkg-query -W --showformat='${Installed-Size} ${Package} ${Status}\n' | grep -v deinstall | sort -n | awk '{print $1" "$2}'
}
Как вы говорите, zsh
во многом похожа на bash
. Он имеет некоторые функции, которые вы не найдете в bash
, и его можно расширить мощными способами. Не думайте двигаться как своего рода революцию, а скорее как ряд эволюционных шагов, которые помогут вам в вашей повседневной работе. Вот несколько советов из моего .zshrc
. Хотя вы говорите, что предпочитаете отдельные советы, этот пост является длинным списком. Тем не менее, это хорошая идея, чтобы пройти через точки один за другим. Просто добавьте интересные биты в ~ / .zshrc
и перезагрузите источник ~ / .zshrc
. Окончательный совет: узнайте нажатия клавиш сочетаний клавиш zsh
по умолчанию («Emacs»): ^ A ^ E ^ W Alt-F Alt-B Alt-P ^ L ^ R [ ! d7]. Вы можете заменить
Alt
двумя отдельными нажатиями клавиш: Alt-P
эквивалентен ESC
P
.
Это дает вам более подробное завершение вкладок.
autoload -U compinit compinit
Завершение табуляции с обоих концов.
setopt completeinword
Завершение вкладки должно быть нечувствительным к регистру.
zstyle ': завершение: *' matcher-list 'm: {a-zA-Z} = {A-Za-z} '
Лучшее завершение для killall.
zstyle': complete: *: killall : * 'command' ps -u $ USER -o cmd '
Изменяет определение слова «word», например с помощью ^ W.
autoload select-word style style-word-style shell
Цвета для ls.
если [[-x "` откуда -p dircolors`]]; затем eval `dircolors` alias ls = 'ls -F --color = auto' else alias ls = 'ls -F' fi
Ярлыки для ls.
alias ll = 'ls -l' alias la = 'ls -a'
Одна история для всех открытых оболочек; хранить 10 000 записей. Это позволяет использовать полезную память для поиска команд, которые вы использовали в последний раз для ./ configure
и т. Д. Используйте Alt-P (найти команду, которая начинается так) и ^ R (поиск в истории) либерально .
HISTFILE = ~ / .zhistory HISTSIZE = SAVEHIST = 10000 setopt sharehistory setopt extendedhistory
Включает все виды расширенного globbing, такие как ls ** / * .txt (найти все текстовые файлы), ls -d * (D)
(показать все файлы, включая те, которые начинаются с "."). Чтобы узнать больше, перейдите к man zshexpn
, раздел «FILENAME GENERATION».
# superglobs setopt extendedglob unsetopt caseglob
setopt interactiveivecomments # знак фунта в интерактивной подсказке
Напечатайте «..» вместо « cd .. "," / usr / include "вместо" cd /usr/include".
setopt auto_cd
Nice prompt.
PS1 = '[% T]% n @% m:% ~ #'
Показывать статистику использования CPU для команд, занимающих более 10 секунд
REPORTTIME = 10
Некоторые команды, которые вы широко используете в Ubuntu.
alias 'a = sudo aptitude' alias 'ai = sudo aptitude install 'alias' ar = sudo aptitude remove 'alias' au = sudo aptitude update 'alias' ag = sudo aptitude safe-upgrade 'alias' as = apt-cache search 'alias' aw = apt-cache show '
Списки пакетов, отсортированные по их размеру, полезны при выборе того, какой p
function apt-list-packages {dpkg-query -W --showformat = '$ {Installed-Size} $ {Package} $ {Status} \n '| grep -v deinstall | sort -n | awk '{print $ 1 "" $ 2}'}
Как вы говорите, zsh
во многом похожа на bash
. Он имеет некоторые функции, которые вы не найдете в bash
, и его можно расширить мощными способами. Не думайте двигаться как своего рода революцию, а скорее как ряд эволюционных шагов, которые помогут вам в вашей повседневной работе. Вот несколько советов из моего .zshrc
. Хотя вы говорите, что предпочитаете отдельные советы, этот пост является длинным списком. Тем не менее, это хорошая идея, чтобы пройти через точки один за другим. Просто добавьте интересные биты в ~ / .zshrc
и перезагрузите источник ~ / .zshrc
. Окончательный совет: узнайте нажатия клавиш сочетаний клавиш zsh
по умолчанию («Emacs»): ^ A ^ E ^ W Alt-F Alt-B Alt-P ^ L ^ R [ ! d7]. Вы можете заменить
Alt
двумя отдельными нажатиями клавиш: Alt-P
эквивалентен ESC
P
.
Это дает вам более подробное завершение вкладок.
autoload -U compinit compinit
Завершение табуляции с обоих концов.
setopt completeinword
Завершение вкладки должно быть нечувствительным к регистру.
zstyle ': завершение: *' matcher-list 'm: {a-zA-Z} = {A-Za-z} '
Лучшее завершение для killall.
zstyle': complete: *: killall : * 'command' ps -u $ USER -o cmd '
Изменяет определение слова «word», например с помощью ^ W.
autoload select-word style style-word-style shell
Цвета для ls.
если [[-x "` откуда -p dircolors`]]; затем eval `dircolors` alias ls = 'ls -F --color = auto' else alias ls = 'ls -F' fi
Ярлыки для ls.
alias ll = 'ls -l' alias la = 'ls -a'
Одна история для всех открытых оболочек; хранить 10 000 записей. Это позволяет использовать полезную память для поиска команд, которые вы использовали в последний раз для ./ configure
и т. Д. Используйте Alt-P (найти команду, которая начинается так) и ^ R (поиск в истории) либерально .
HISTFILE = ~ / .zhistory HISTSIZE = SAVEHIST = 10000 setopt sharehistory setopt extendedhistory
Включает все виды расширенного globbing, такие как ls ** / * .txt (найти все текстовые файлы), ls -d * (D)
(показать все файлы, включая те, которые начинаются с "."). Чтобы узнать больше, перейдите к man zshexpn
, раздел «FILENAME GENERATION».
# superglobs setopt extendedglob unsetopt caseglob
setopt interactiveivecomments # знак фунта в интерактивной подсказке
Напечатайте «..» вместо « cd .. "," / usr / include "вместо" cd /usr/include".
setopt auto_cd
Nice prompt.
PS1 = '[% T]% n @% m:% ~ #'
Показывать статистику использования CPU для команд, занимающих более 10 секунд
REPORTTIME = 10
Некоторые команды, которые вы широко используете в Ubuntu.
alias 'a = sudo aptitude' alias 'ai = sudo aptitude install 'alias' ar = sudo aptitude remove 'alias' au = sudo aptitude update 'alias' ag = sudo aptitude safe-upgrade 'alias' as = apt-cache search 'alias' aw = apt-cache show '
Списки пакетов, отсортированные по их размеру, полезны при выборе того, какой p
function apt-list-packages {dpkg-query -W --showformat = '$ {Installed-Size} $ {Package} $ {Status} \n '| grep -v deinstall | sort -n | awk '{print $ 1 "" $ 2}'}
Как вы говорите, zsh
во многом похожа на bash
. Он имеет некоторые функции, которые вы не найдете в bash
, и его можно расширить мощными способами. Не думайте двигаться как своего рода революцию, а скорее как ряд эволюционных шагов, которые помогут вам в вашей повседневной работе. Вот несколько советов из моего .zshrc
. Хотя вы говорите, что предпочитаете отдельные советы, этот пост является длинным списком. Тем не менее, это хорошая идея, чтобы пройти через точки один за другим. Просто добавьте интересные биты в ~ / .zshrc
и перезагрузите источник ~ / .zshrc
. Окончательный совет: узнайте нажатия клавиш сочетаний клавиш zsh
по умолчанию («Emacs»): ^ A ^ E ^ W Alt-F Alt-B Alt-P ^ L ^ R [ ! d7]. Вы можете заменить
Alt
двумя отдельными нажатиями клавиш: Alt-P
эквивалентен ESC
P
.
Это дает вам более подробное завершение вкладок.
autoload -U compinit compinit
Завершение табуляции с обоих концов.
setopt completeinword
Завершение вкладки должно быть нечувствительным к регистру.
zstyle ': завершение: *' matcher-list 'm: {a-zA-Z} = {A-Za-z} '
Лучшее завершение для killall.
zstyle': complete: *: killall : * 'command' ps -u $ USER -o cmd '
Изменяет определение слова «word», например с помощью ^ W.
autoload select-word style style-word-style shell
Цвета для ls.
если [[-x "` откуда -p dircolors`]]; затем eval `dircolors` alias ls = 'ls -F --color = auto' else alias ls = 'ls -F' fi
Ярлыки для ls.
alias ll = 'ls -l' alias la = 'ls -a'
Одна история для всех открытых оболочек; хранить 10 000 записей. Это позволяет использовать полезную память для поиска команд, которые вы использовали в последний раз для ./ configure
и т. Д. Используйте Alt-P (найти команду, которая начинается так) и ^ R (поиск в истории) либерально .
HISTFILE = ~ / .zhistory HISTSIZE = SAVEHIST = 10000 setopt sharehistory setopt extendedhistory
Включает все виды расширенного globbing, такие как ls ** / * .txt (найти все текстовые файлы), ls -d * (D)
(показать все файлы, включая те, которые начинаются с "."). Чтобы узнать больше, перейдите к man zshexpn
, раздел «FILENAME GENERATION».
# superglobs setopt extendedglob unsetopt caseglob
setopt interactiveivecomments # знак фунта в интерактивной подсказке
Напечатайте «..» вместо « cd .. "," / usr / include "вместо" cd /usr/include".
setopt auto_cd
Nice prompt.
PS1 = '[% T]% n @% m:% ~ #'
Показывать статистику использования CPU для команд, занимающих более 10 секунд
REPORTTIME = 10
Некоторые команды, которые вы широко используете в Ubuntu.
alias 'a = sudo aptitude' alias 'ai = sudo aptitude install 'alias' ar = sudo aptitude remove 'alias' au = sudo aptitude update 'alias' ag = sudo aptitude safe-upgrade 'alias' as = apt-cache search 'alias' aw = apt-cache show '
Списки пакетов, отсортированные по их размеру, полезны при выборе того, какой p
function apt-list-packages {dpkg-query -W --showformat = '$ {Installed-Size} $ {Package} $ {Status} \n '| grep -v deinstall | sort -n | awk '{print $ 1 "" $ 2}'}
Как вы говорите, zsh
во многом похожа на bash
. Он имеет некоторые функции, которые вы не найдете в bash
, и его можно расширить мощными способами. Не думайте двигаться как своего рода революцию, а скорее как ряд эволюционных шагов, которые помогут вам в вашей повседневной работе. Вот несколько советов из моего .zshrc
. Хотя вы говорите, что предпочитаете отдельные советы, этот пост является длинным списком. Тем не менее, это хорошая идея, чтобы пройти через точки один за другим. Просто добавьте интересные биты в ~ / .zshrc
и перезагрузите источник ~ / .zshrc
. Окончательный совет: узнайте нажатия клавиш сочетаний клавиш zsh
по умолчанию («Emacs»): ^ A ^ E ^ W Alt-F Alt-B Alt-P ^ L ^ R [ ! d7]. Вы можете заменить
Alt
двумя отдельными нажатиями клавиш: Alt-P
эквивалентен ESC
P
.
Это дает вам более подробное завершение вкладок.
autoload -U compinit compinit
Завершение табуляции с обоих концов.
setopt completeinword
Завершение вкладки должно быть нечувствительным к регистру.
zstyle ': завершение: *' matcher-list 'm: {a-zA-Z} = {A-Za-z} '
Лучшее завершение для killall.
zstyle': complete: *: killall : * 'command' ps -u $ USER -o cmd '
Изменяет определение слова «word», например с помощью ^ W.
autoload select-word style style-word-style shell
Цвета для ls.
если [[-x "` откуда -p dircolors`]]; затем eval `dircolors` alias ls = 'ls -F --color = auto' else alias ls = 'ls -F' fi
Ярлыки для ls.
alias ll = 'ls -l' alias la = 'ls -a'
Одна история для всех открытых оболочек; хранить 10 000 записей. Это позволяет использовать полезную память для поиска команд, которые вы использовали в последний раз для ./ configure
и т. Д. Используйте Alt-P (найти команду, которая начинается так) и ^ R (поиск в истории) либерально .
HISTFILE = ~ / .zhistory HISTSIZE = SAVEHIST = 10000 setopt sharehistory setopt extendedhistory
Включает все виды расширенного globbing, такие как ls ** / * .txt (найти все текстовые файлы), ls -d * (D)
(показать все файлы, включая те, которые начинаются с "."). Чтобы узнать больше, перейдите к man zshexpn
, раздел «FILENAME GENERATION».
# superglobs setopt extendedglob unsetopt caseglob
setopt interactiveivecomments # знак фунта в интерактивной подсказке
Напечатайте «..» вместо « cd .. "," / usr / include "вместо" cd /usr/include".
setopt auto_cd
Nice prompt.
PS1 = '[% T]% n @% m:% ~ #'
Показывать статистику использования CPU для команд, занимающих более 10 секунд
REPORTTIME = 10
Некоторые команды, которые вы широко используете в Ubuntu.
alias 'a = sudo aptitude' alias 'ai = sudo aptitude install 'alias' ar = sudo aptitude remove 'alias' au = sudo aptitude update 'alias' ag = sudo aptitude safe-upgrade 'alias' as = apt-cache search 'alias' aw = apt-cache show '
Списки пакетов, отсортированные по их размеру, полезны при выборе того, какой p
function apt-list-packages {dpkg-query -W --showformat = '$ {Installed-Size} $ {Package} $ {Status} \n '| grep -v deinstall | sort -n | awk '{print $ 1 "" $ 2}'}
Как вы говорите, zsh
во многом похожа на bash
. Он имеет некоторые функции, которые вы не найдете в bash
, и его можно расширить мощными способами. Не думайте двигаться как своего рода революцию, а скорее как ряд эволюционных шагов, которые помогут вам в вашей повседневной работе. Вот несколько советов из моего .zshrc
. Хотя вы говорите, что предпочитаете отдельные советы, этот пост является длинным списком. Тем не менее, это хорошая идея, чтобы пройти через точки один за другим. Просто добавьте интересные биты в ~ / .zshrc
и перезагрузите источник ~ / .zshrc
. Окончательный совет: узнайте нажатия клавиш сочетаний клавиш zsh
по умолчанию («Emacs»): ^ A ^ E ^ W Alt-F Alt-B Alt-P ^ L ^ R [ ! d7]. Вы можете заменить
Alt
двумя отдельными нажатиями клавиш: Alt-P
эквивалентен ESC
P
.
Это дает вам более подробное завершение вкладок.
autoload -U compinit compinit
Завершение табуляции с обоих концов.
setopt completeinword
Завершение вкладки должно быть нечувствительным к регистру.
zstyle ': завершение: *' matcher-list 'm: {a-zA-Z} = {A-Za-z} '
Лучшее завершение для killall.
zstyle': complete: *: killall : * 'command' ps -u $ USER -o cmd '
Изменяет определение слова «word», например с помощью ^ W.
autoload select-word style style-word-style shell
Цвета для ls.
если [[-x "` откуда -p dircolors`]]; затем eval `dircolors` alias ls = 'ls -F --color = auto' else alias ls = 'ls -F' fi
Ярлыки для ls.
alias ll = 'ls -l' alias la = 'ls -a'
Одна история для всех открытых оболочек; хранить 10 000 записей. Это позволяет использовать полезную память для поиска команд, которые вы использовали в последний раз для ./ configure
и т. Д. Используйте Alt-P (найти команду, которая начинается так) и ^ R (поиск в истории) либерально .
HISTFILE = ~ / .zhistory HISTSIZE = SAVEHIST = 10000 setopt sharehistory setopt extendedhistory
Включает все виды расширенного globbing, такие как ls ** / * .txt (найти все текстовые файлы), ls -d * (D)
(показать все файлы, включая те, которые начинаются с "."). Чтобы узнать больше, перейдите к man zshexpn
, раздел «FILENAME GENERATION».
# superglobs setopt extendedglob unsetopt caseglob
setopt interactiveivecomments # знак фунта в интерактивной подсказке
Напечатайте «..» вместо « cd .. "," / usr / include "вместо" cd /usr/include".
setopt auto_cd
Nice prompt.
PS1 = '[% T]% n @% m:% ~ #'
Показывать статистику использования CPU для команд, занимающих более 10 секунд
REPORTTIME = 10
Некоторые команды, которые вы широко используете в Ubuntu.
alias 'a = sudo aptitude' alias 'ai = sudo aptitude install 'alias' ar = sudo aptitude remove 'alias' au = sudo aptitude update 'alias' ag = sudo aptitude safe-upgrade 'alias' as = apt-cache search 'alias' aw = apt-cache show '
Списки пакетов, отсортированные по их размеру, полезны при выборе того, какой p
function apt-list-packages {dpkg-query -W --showformat = '$ {Installed-Size} $ {Package} $ {Status} \n '| grep -v deinstall | sort -n | awk '{print $ 1 "" $ 2}'}
Как вы говорите, zsh
во многом похожа на bash
. Он имеет некоторые функции, которые вы не найдете в bash
, и его можно расширить мощными способами. Не думайте двигаться как своего рода революцию, а скорее как ряд эволюционных шагов, которые помогут вам в вашей повседневной работе. Вот несколько советов из моего .zshrc
. Хотя вы говорите, что предпочитаете отдельные советы, этот пост является длинным списком. Тем не менее, это хорошая идея, чтобы пройти через точки один за другим. Просто добавьте интересные биты в ~ / .zshrc
и перезагрузите источник ~ / .zshrc
. Окончательный совет: узнайте нажатия клавиш сочетаний клавиш zsh
по умолчанию («Emacs»): ^ A ^ E ^ W Alt-F Alt-B Alt-P ^ L ^ R [ ! d7]. Вы можете заменить
Alt
двумя отдельными нажатиями клавиш: Alt-P
эквивалентен ESC
P
.
Это дает вам более подробное завершение вкладок.
autoload -U compinit compinit
Завершение табуляции с обоих концов.
setopt completeinword
Завершение вкладки должно быть нечувствительным к регистру.
zstyle ': завершение: *' matcher-list 'm: {a-zA-Z} = {A-Za-z} '
Лучшее завершение для killall.
zstyle': complete: *: killall : * 'command' ps -u $ USER -o cmd '
Изменяет определение слова «word», например с помощью ^ W.
autoload select-word style style-word-style shell
Цвета для ls.
если [[-x "` откуда -p dircolors`]]; затем eval `dircolors` alias ls = 'ls -F --color = auto' else alias ls = 'ls -F' fi
Ярлыки для ls.
alias ll = 'ls -l' alias la = 'ls -a'
Одна история для всех открытых оболочек; хранить 10 000 записей. Это позволяет использовать полезную память для поиска команд, которые вы использовали в последний раз для ./ configure
и т. Д. Используйте Alt-P (найти команду, которая начинается так) и ^ R (поиск в истории) либерально .
HISTFILE = ~ / .zhistory HISTSIZE = SAVEHIST = 10000 setopt sharehistory setopt extendedhistory
Включает все виды расширенного globbing, такие как ls ** / * .txt (найти все текстовые файлы), ls -d * (D)
(показать все файлы, включая те, которые начинаются с "."). Чтобы узнать больше, перейдите к man zshexpn
, раздел «FILENAME GENERATION».
# superglobs setopt extendedglob unsetopt caseglob
setopt interactiveivecomments # знак фунта в интерактивной подсказке
Напечатайте «..» вместо « cd .. "," / usr / include "вместо" cd /usr/include".
setopt auto_cd
Nice prompt.
PS1 = '[% T]% n @% m:% ~ #'
Показывать статистику использования CPU для команд, занимающих более 10 секунд
REPORTTIME = 10
Некоторые команды, которые вы широко используете в Ubuntu.
alias 'a = sudo aptitude' alias 'ai = sudo aptitude install 'alias' ar = sudo aptitude remove 'alias' au = sudo aptitude update 'alias' ag = sudo aptitude safe-upgrade 'alias' as = apt-cache search 'alias' aw = apt-cache show '
Списки пакетов, отсортированные по их размеру, полезны при выборе того, какой p
function apt-list-packages {dpkg-query -W --showformat = '$ {Installed-Size} $ {Package} $ {Status} \n '| grep -v deinstall | sort -n | awk '{print $ 1 "" $ 2}'}
Я бы рекомендовал книгу From bash для Z Shell. У него есть все советы, необходимые для переключения оболочки. Он объясняет различия обеих оболочек и упрощает создание новой zsher.
Вот мой .zshrc, и это самая важная вещь! zsh имеет много вариантов, которые вы можете использовать, поэтому ознакомьтесь с некоторыми примерами по сети или прочитайте документацию на домашней странице Zsh.
My .zshrc не содержит никаких действительно классных вещей, кроме временная метка в правой части командной строки.
Btw, не забудьте попробовать табуляцию, где есть несколько примеров:
mplayer -a[tab]
покажет что-то вроде этого: [ ! d5]
mplayer -a
-ac -- force usage of a specific audio codec
-af -- activate audio filters
-afm -- force usage of a specific audio codec family
-alang -- select the DVD audio language
-ao -- specify audio driver
-aop -- specify audio output filter
И если вы используете безшовные ssh-ключи или ssh-agent, вам может показаться полезным использовать tabcomplete удаленные файлы:
scp apollo:/home/user/[tab]
Desktop/ Documents/ Downloads/ Music/ Pictures/ Public/ Templates/ Videos/
. После получения списка вы можете нажать вкладку
Но будьте осторожны, эта оболочка сделает вас ленивыми и заставит вас почувствовать, что стандартная оболочка глупа и раздражает!
Несколько специально полезных расширенных глобусов:
1- rmdir *(/^F) - удалить все непустые каталоги в текущем каталоге
2- grep traceback /srv/log/**/*(.m-2) - искать это regex в файлах, измененных за последние два дня
3- chmod g+w **/*(U^I) - сделать все файлы, принадлежащие мне, а не записывать по группам, записывать по группам
Да, конечно, вы можете напишите это с помощью find, но это легче отключить. У него есть два недостатка, чтобы быть справедливыми: оба они должны быть расширены в командной строке: если он соответствует тысячам файлов, командная строка будет слишком длинной, и это не удастся, и, во-вторых, все файлы будут найдены перед тем, как файл начнет работать.
(вам понадобится setopt extendedglob, если он еще не включен)
Я не так много знаю о bash, поэтому я не могу скомпоновать. Некоторые фрагменты из моего конфигурационного файла zsh.
Некоторая конфигурация
HISTFILE=~/.zsh_history
HISTSIZE=1000
SAVEHIST=1000
REPORTTIME=10 # print elapsed time when more than 10 seconds
setopt NO_HUP
setopt NO_LIST_BEEP
setopt LOCAL_OPTIONS # allow functions to have local options
setopt LOCAL_TRAPS # allow functions to have local traps
setopt HIST_VERIFY
setopt SHARE_HISTORY # share history between sessions ???
setopt EXTENDED_HISTORY # add timestamps to history
setopt PROMPT_SUBST
setopt CORRECT
setopt COMPLETE_IN_WORD
setopt IGNORE_EOF
setopt APPEND_HISTORY # adds history
setopt INC_APPEND_HISTORY SHARE_HISTORY # adds history incrementally and share it across sessions
setopt HIST_IGNORE_ALL_DUPS # don't record dupes in history
setopt HIST_REDUCE_BLANKS
# Leave some chars out of the out of WORDCHARS so ^W acts more nicely
WORDCHARS='*?_-[]~\!#$%^(){}<>|`@#$%^*()+:?'
Git в приглашении
if [[ -n $SSH_CONNECTION ]]; then
export PS1='%m:%3~$(git_info_for_prompt)%# '
else
export PS1='%3~$(git_info_for_prompt)%# '
fi
Некоторые горячие клавиши, вставляемые в начале выделите текст.
insert_sudo () { zle beginning-of-line; zle -U "sudo " }
insert_apt () { zle beginning-of-line; zle -U "sudo apt-get " }
insert_gem () { zle beginning-of-line; zle -U "sudo gem " }
insert_install () { zle -U "install " }
zle -N insert-sudo insert_sudo
zle -N insert-apt insert_apt
zle -N insert-gem insert_gem
zle -N insert-install insert_install
bindkey "^B" insert-gem
bindkey "^N" insert-install
bindkey "^k" insert-sudo
bindkey "^a" insert-apt
Функции хранятся в ~ / .zsh / functions
git_info_for_prompt
local g="$(git rev-parse --git-dir 2>/dev/null)"
if [ -n "$g" ]; then
local r
local b
if [ -d "$g/../.dotest" ]
then
if test -f "$g/../.dotest/rebasing"
then
r="|REBASE"
elif test -f "$g/../.dotest/applying"
then
r="|AM"
else
r="|AM/REBASE"
fi
b="$(git symbolic-ref HEAD 2>/dev/null)"
elif [ -f "$g/.dotest-merge/interactive" ]
then
r="|REBASE-i"
b="$(cat "$g/.dotest-merge/head-name")"
elif [ -d "$g/.dotest-merge" ]
then
r="|REBASE-m"
b="$(cat "$g/.dotest-merge/head-name")"
elif [ -f "$g/MERGE_HEAD" ]
then
r="|MERGING"
b="$(git symbolic-ref HEAD 2>/dev/null)"
else
if [ -f "$g/BISECT_LOG" ]
then
r="|BISECTING"
fi
if ! b="$(git symbolic-ref HEAD 2>/dev/null)"
then
if ! b="tag: $(git describe --exact-match HEAD 2>/dev/null)"
then
b="$(cut -c1-7 "$g/HEAD")..."
fi
fi
fi
if [ -n "$1" ]; then
printf "$1" "${b##refs/heads/}$r"
else
printf "[%s]" "${b##refs/heads/}$r"
fi
fi
Некоторые параметры github
[ f5]Я в той же поездке:)
До сих пор я обнаружил, что дело в том, чтобы иметь хороший файл конфигурации (.zshrc).
Возьмите этот например, http://matt.blissett.me.uk/linux/zsh/zshrc, посмотрите комментарии и взломайте свой путь. Stackoverflow и severphault и хорошие места для поиска.
Мне еще предстоит погрузиться в http://matt.blissett.me.uk/linux/zsh/zshrc , но я не так много времени, чтобы проиграть:)
Узнайте о расширенных globbing и рекурсивных шарах в zsh.
Узнайте немного о zstyle и о том, как различные вещи (особенно завершение) позволяют настраивать их конфигурацию с помощью zstyle.
Look в ассоциативные массивы.
Если вы используете регулярные выражения, загляните в =~ (который тоже есть) и рассмотрите: setopt rematch_pcre
Избегайте написания сценариев, которые зависят от большей части магии zsh, потому что, хотя это фантастика для использования, zsh может иметь тенденцию к записи только для записи. Если вы используете слишком много, подумайте, когда переключиться на такой язык, как Python.
Zsh соблазнительна. Это темная сторона. Добро пожаловать.
Большое преимущество - отличное завершение вкладки с предварительно упакованными скриптами завершения для многих команд. Вот пример, показывающий вывод apt-get<TAB>:
apt-get
action
autoclean build-dep clean dselect-upgrade install remove update
autoremove check dist-upgrade help purge source upgrade
Я дал купе переговоров и перевел несколько человек на zsh. Я сохраняю github repo моих (каковы преимущества) заметки вместе с стартером и копией моей собственной zsh config в github здесь.
http://github.com/mitechie/zshrc
Еще один отличный ресурс - страница любителей zsh (идет от сайта zml grml).
Я не так много знаю о bash, поэтому я не могу скомпоновать. Некоторые фрагменты из моего конфигурационного файла zsh.
Некоторая конфигурация
HISTFILE=~/.zsh_history
HISTSIZE=1000
SAVEHIST=1000
REPORTTIME=10 # print elapsed time when more than 10 seconds
setopt NO_HUP
setopt NO_LIST_BEEP
setopt LOCAL_OPTIONS # allow functions to have local options
setopt LOCAL_TRAPS # allow functions to have local traps
setopt HIST_VERIFY
setopt SHARE_HISTORY # share history between sessions ???
setopt EXTENDED_HISTORY # add timestamps to history
setopt PROMPT_SUBST
setopt CORRECT
setopt COMPLETE_IN_WORD
setopt IGNORE_EOF
setopt APPEND_HISTORY # adds history
setopt INC_APPEND_HISTORY SHARE_HISTORY # adds history incrementally and share it across sessions
setopt HIST_IGNORE_ALL_DUPS # don't record dupes in history
setopt HIST_REDUCE_BLANKS
# Leave some chars out of the out of WORDCHARS so ^W acts more nicely
WORDCHARS='*?_-[]~\!#$%^(){}<>|`@#$%^*()+:?'
Git в приглашении
if [[ -n $SSH_CONNECTION ]]; then
export PS1='%m:%3~$(git_info_for_prompt)%# '
else
export PS1='%3~$(git_info_for_prompt)%# '
fi
Некоторые горячие клавиши, вставляемые в начале выделите текст.
insert_sudo () { zle beginning-of-line; zle -U "sudo " }
insert_apt () { zle beginning-of-line; zle -U "sudo apt-get " }
insert_gem () { zle beginning-of-line; zle -U "sudo gem " }
insert_install () { zle -U "install " }
zle -N insert-sudo insert_sudo
zle -N insert-apt insert_apt
zle -N insert-gem insert_gem
zle -N insert-install insert_install
bindkey "^B" insert-gem
bindkey "^N" insert-install
bindkey "^k" insert-sudo
bindkey "^a" insert-apt
Функции хранятся в ~ / .zsh / functions
git_info_for_prompt
local g="$(git rev-parse --git-dir 2>/dev/null)"
if [ -n "$g" ]; then
local r
local b
if [ -d "$g/../.dotest" ]
then
if test -f "$g/../.dotest/rebasing"
then
r="|REBASE"
elif test -f "$g/../.dotest/applying"
then
r="|AM"
else
r="|AM/REBASE"
fi
b="$(git symbolic-ref HEAD 2>/dev/null)"
elif [ -f "$g/.dotest-merge/interactive" ]
then
r="|REBASE-i"
b="$(cat "$g/.dotest-merge/head-name")"
elif [ -d "$g/.dotest-merge" ]
then
r="|REBASE-m"
b="$(cat "$g/.dotest-merge/head-name")"
elif [ -f "$g/MERGE_HEAD" ]
then
r="|MERGING"
b="$(git symbolic-ref HEAD 2>/dev/null)"
else
if [ -f "$g/BISECT_LOG" ]
then
r="|BISECTING"
fi
if ! b="$(git symbolic-ref HEAD 2>/dev/null)"
then
if ! b="tag: $(git describe --exact-match HEAD 2>/dev/null)"
then
b="$(cut -c1-7 "$g/HEAD")..."
fi
fi
fi
if [ -n "$1" ]; then
printf "$1" "${b##refs/heads/}$r"
else
printf "[%s]" "${b##refs/heads/}$r"
fi
fi
Некоторые параметры github
[ f5]Я не так много знаю о bash, поэтому я не могу скомпоновать. Некоторые фрагменты из моего конфигурационного файла zsh.
Некоторая конфигурация
HISTFILE=~/.zsh_history
HISTSIZE=1000
SAVEHIST=1000
REPORTTIME=10 # print elapsed time when more than 10 seconds
setopt NO_HUP
setopt NO_LIST_BEEP
setopt LOCAL_OPTIONS # allow functions to have local options
setopt LOCAL_TRAPS # allow functions to have local traps
setopt HIST_VERIFY
setopt SHARE_HISTORY # share history between sessions ???
setopt EXTENDED_HISTORY # add timestamps to history
setopt PROMPT_SUBST
setopt CORRECT
setopt COMPLETE_IN_WORD
setopt IGNORE_EOF
setopt APPEND_HISTORY # adds history
setopt INC_APPEND_HISTORY SHARE_HISTORY # adds history incrementally and share it across sessions
setopt HIST_IGNORE_ALL_DUPS # don't record dupes in history
setopt HIST_REDUCE_BLANKS
# Leave some chars out of the out of WORDCHARS so ^W acts more nicely
WORDCHARS='*?_-[]~\!#$%^(){}<>|`@#$%^*()+:?'
Git в приглашении
if [[ -n $SSH_CONNECTION ]]; then
export PS1='%m:%3~$(git_info_for_prompt)%# '
else
export PS1='%3~$(git_info_for_prompt)%# '
fi
Некоторые горячие клавиши, вставляемые в начале выделите текст.
insert_sudo () { zle beginning-of-line; zle -U "sudo " }
insert_apt () { zle beginning-of-line; zle -U "sudo apt-get " }
insert_gem () { zle beginning-of-line; zle -U "sudo gem " }
insert_install () { zle -U "install " }
zle -N insert-sudo insert_sudo
zle -N insert-apt insert_apt
zle -N insert-gem insert_gem
zle -N insert-install insert_install
bindkey "^B" insert-gem
bindkey "^N" insert-install
bindkey "^k" insert-sudo
bindkey "^a" insert-apt
Функции хранятся в ~ / .zsh / functions
git_info_for_prompt
local g="$(git rev-parse --git-dir 2>/dev/null)"
if [ -n "$g" ]; then
local r
local b
if [ -d "$g/../.dotest" ]
then
if test -f "$g/../.dotest/rebasing"
then
r="|REBASE"
elif test -f "$g/../.dotest/applying"
then
r="|AM"
else
r="|AM/REBASE"
fi
b="$(git symbolic-ref HEAD 2>/dev/null)"
elif [ -f "$g/.dotest-merge/interactive" ]
then
r="|REBASE-i"
b="$(cat "$g/.dotest-merge/head-name")"
elif [ -d "$g/.dotest-merge" ]
then
r="|REBASE-m"
b="$(cat "$g/.dotest-merge/head-name")"
elif [ -f "$g/MERGE_HEAD" ]
then
r="|MERGING"
b="$(git symbolic-ref HEAD 2>/dev/null)"
else
if [ -f "$g/BISECT_LOG" ]
then
r="|BISECTING"
fi
if ! b="$(git symbolic-ref HEAD 2>/dev/null)"
then
if ! b="tag: $(git describe --exact-match HEAD 2>/dev/null)"
then
b="$(cut -c1-7 "$g/HEAD")..."
fi
fi
fi
if [ -n "$1" ]; then
printf "$1" "${b##refs/heads/}$r"
else
printf "[%s]" "${b##refs/heads/}$r"
fi
fi
Некоторые параметры github
[ f5]Я не так много знаю о bash, поэтому я не могу скомпоновать. Некоторые фрагменты из моего конфигурационного файла zsh.
Некоторая конфигурация
HISTFILE=~/.zsh_history
HISTSIZE=1000
SAVEHIST=1000
REPORTTIME=10 # print elapsed time when more than 10 seconds
setopt NO_HUP
setopt NO_LIST_BEEP
setopt LOCAL_OPTIONS # allow functions to have local options
setopt LOCAL_TRAPS # allow functions to have local traps
setopt HIST_VERIFY
setopt SHARE_HISTORY # share history between sessions ???
setopt EXTENDED_HISTORY # add timestamps to history
setopt PROMPT_SUBST
setopt CORRECT
setopt COMPLETE_IN_WORD
setopt IGNORE_EOF
setopt APPEND_HISTORY # adds history
setopt INC_APPEND_HISTORY SHARE_HISTORY # adds history incrementally and share it across sessions
setopt HIST_IGNORE_ALL_DUPS # don't record dupes in history
setopt HIST_REDUCE_BLANKS
# Leave some chars out of the out of WORDCHARS so ^W acts more nicely
WORDCHARS='*?_-[]~\!#$%^(){}<>|`@#$%^*()+:?'
Git в приглашении
if [[ -n $SSH_CONNECTION ]]; then
export PS1='%m:%3~$(git_info_for_prompt)%# '
else
export PS1='%3~$(git_info_for_prompt)%# '
fi
Некоторые горячие клавиши, вставляемые в начале выделите текст.
insert_sudo () { zle beginning-of-line; zle -U "sudo " }
insert_apt () { zle beginning-of-line; zle -U "sudo apt-get " }
insert_gem () { zle beginning-of-line; zle -U "sudo gem " }
insert_install () { zle -U "install " }
zle -N insert-sudo insert_sudo
zle -N insert-apt insert_apt
zle -N insert-gem insert_gem
zle -N insert-install insert_install
bindkey "^B" insert-gem
bindkey "^N" insert-install
bindkey "^k" insert-sudo
bindkey "^a" insert-apt
Функции хранятся в ~ / .zsh / functions
git_info_for_prompt
local g="$(git rev-parse --git-dir 2>/dev/null)"
if [ -n "$g" ]; then
local r
local b
if [ -d "$g/../.dotest" ]
then
if test -f "$g/../.dotest/rebasing"
then
r="|REBASE"
elif test -f "$g/../.dotest/applying"
then
r="|AM"
else
r="|AM/REBASE"
fi
b="$(git symbolic-ref HEAD 2>/dev/null)"
elif [ -f "$g/.dotest-merge/interactive" ]
then
r="|REBASE-i"
b="$(cat "$g/.dotest-merge/head-name")"
elif [ -d "$g/.dotest-merge" ]
then
r="|REBASE-m"
b="$(cat "$g/.dotest-merge/head-name")"
elif [ -f "$g/MERGE_HEAD" ]
then
r="|MERGING"
b="$(git symbolic-ref HEAD 2>/dev/null)"
else
if [ -f "$g/BISECT_LOG" ]
then
r="|BISECTING"
fi
if ! b="$(git symbolic-ref HEAD 2>/dev/null)"
then
if ! b="tag: $(git describe --exact-match HEAD 2>/dev/null)"
then
b="$(cut -c1-7 "$g/HEAD")..."
fi
fi
fi
if [ -n "$1" ]; then
printf "$1" "${b##refs/heads/}$r"
else
printf "[%s]" "${b##refs/heads/}$r"
fi
fi
Некоторые параметры github
[ f5]Я не так много знаю о bash, поэтому я не могу скомпоновать. Некоторые фрагменты из моего конфигурационного файла zsh.
Некоторая конфигурация
HISTFILE=~/.zsh_history
HISTSIZE=1000
SAVEHIST=1000
REPORTTIME=10 # print elapsed time when more than 10 seconds
setopt NO_HUP
setopt NO_LIST_BEEP
setopt LOCAL_OPTIONS # allow functions to have local options
setopt LOCAL_TRAPS # allow functions to have local traps
setopt HIST_VERIFY
setopt SHARE_HISTORY # share history between sessions ???
setopt EXTENDED_HISTORY # add timestamps to history
setopt PROMPT_SUBST
setopt CORRECT
setopt COMPLETE_IN_WORD
setopt IGNORE_EOF
setopt APPEND_HISTORY # adds history
setopt INC_APPEND_HISTORY SHARE_HISTORY # adds history incrementally and share it across sessions
setopt HIST_IGNORE_ALL_DUPS # don't record dupes in history
setopt HIST_REDUCE_BLANKS
# Leave some chars out of the out of WORDCHARS so ^W acts more nicely
WORDCHARS='*?_-[]~\!#$%^(){}<>|`@#$%^*()+:?'
Git в приглашении
if [[ -n $SSH_CONNECTION ]]; then
export PS1='%m:%3~$(git_info_for_prompt)%# '
else
export PS1='%3~$(git_info_for_prompt)%# '
fi
Некоторые горячие клавиши, вставляемые в начале выделите текст.
insert_sudo () { zle beginning-of-line; zle -U "sudo " }
insert_apt () { zle beginning-of-line; zle -U "sudo apt-get " }
insert_gem () { zle beginning-of-line; zle -U "sudo gem " }
insert_install () { zle -U "install " }
zle -N insert-sudo insert_sudo
zle -N insert-apt insert_apt
zle -N insert-gem insert_gem
zle -N insert-install insert_install
bindkey "^B" insert-gem
bindkey "^N" insert-install
bindkey "^k" insert-sudo
bindkey "^a" insert-apt
Функции хранятся в ~ / .zsh / functions
git_info_for_prompt
local g="$(git rev-parse --git-dir 2>/dev/null)"
if [ -n "$g" ]; then
local r
local b
if [ -d "$g/../.dotest" ]
then
if test -f "$g/../.dotest/rebasing"
then
r="|REBASE"
elif test -f "$g/../.dotest/applying"
then
r="|AM"
else
r="|AM/REBASE"
fi
b="$(git symbolic-ref HEAD 2>/dev/null)"
elif [ -f "$g/.dotest-merge/interactive" ]
then
r="|REBASE-i"
b="$(cat "$g/.dotest-merge/head-name")"
elif [ -d "$g/.dotest-merge" ]
then
r="|REBASE-m"
b="$(cat "$g/.dotest-merge/head-name")"
elif [ -f "$g/MERGE_HEAD" ]
then
r="|MERGING"
b="$(git symbolic-ref HEAD 2>/dev/null)"
else
if [ -f "$g/BISECT_LOG" ]
then
r="|BISECTING"
fi
if ! b="$(git symbolic-ref HEAD 2>/dev/null)"
then
if ! b="tag: $(git describe --exact-match HEAD 2>/dev/null)"
then
b="$(cut -c1-7 "$g/HEAD")..."
fi
fi
fi
if [ -n "$1" ]; then
printf "$1" "${b##refs/heads/}$r"
else
printf "[%s]" "${b##refs/heads/}$r"
fi
fi
Некоторые параметры github
[ f5]Я не так много знаю о bash, поэтому я не могу скомпоновать. Некоторые фрагменты из моего конфигурационного файла zsh.
Некоторая конфигурация
HISTFILE=~/.zsh_history
HISTSIZE=1000
SAVEHIST=1000
REPORTTIME=10 # print elapsed time when more than 10 seconds
setopt NO_HUP
setopt NO_LIST_BEEP
setopt LOCAL_OPTIONS # allow functions to have local options
setopt LOCAL_TRAPS # allow functions to have local traps
setopt HIST_VERIFY
setopt SHARE_HISTORY # share history between sessions ???
setopt EXTENDED_HISTORY # add timestamps to history
setopt PROMPT_SUBST
setopt CORRECT
setopt COMPLETE_IN_WORD
setopt IGNORE_EOF
setopt APPEND_HISTORY # adds history
setopt INC_APPEND_HISTORY SHARE_HISTORY # adds history incrementally and share it across sessions
setopt HIST_IGNORE_ALL_DUPS # don't record dupes in history
setopt HIST_REDUCE_BLANKS
# Leave some chars out of the out of WORDCHARS so ^W acts more nicely
WORDCHARS='*?_-[]~\!#$%^(){}<>|`@#$%^*()+:?'
Git в приглашении
if [[ -n $SSH_CONNECTION ]]; then
export PS1='%m:%3~$(git_info_for_prompt)%# '
else
export PS1='%3~$(git_info_for_prompt)%# '
fi
Некоторые горячие клавиши, вставляемые в начале выделите текст.
insert_sudo () { zle beginning-of-line; zle -U "sudo " }
insert_apt () { zle beginning-of-line; zle -U "sudo apt-get " }
insert_gem () { zle beginning-of-line; zle -U "sudo gem " }
insert_install () { zle -U "install " }
zle -N insert-sudo insert_sudo
zle -N insert-apt insert_apt
zle -N insert-gem insert_gem
zle -N insert-install insert_install
bindkey "^B" insert-gem
bindkey "^N" insert-install
bindkey "^k" insert-sudo
bindkey "^a" insert-apt
Функции хранятся в ~ / .zsh / functions
git_info_for_prompt
local g="$(git rev-parse --git-dir 2>/dev/null)"
if [ -n "$g" ]; then
local r
local b
if [ -d "$g/../.dotest" ]
then
if test -f "$g/../.dotest/rebasing"
then
r="|REBASE"
elif test -f "$g/../.dotest/applying"
then
r="|AM"
else
r="|AM/REBASE"
fi
b="$(git symbolic-ref HEAD 2>/dev/null)"
elif [ -f "$g/.dotest-merge/interactive" ]
then
r="|REBASE-i"
b="$(cat "$g/.dotest-merge/head-name")"
elif [ -d "$g/.dotest-merge" ]
then
r="|REBASE-m"
b="$(cat "$g/.dotest-merge/head-name")"
elif [ -f "$g/MERGE_HEAD" ]
then
r="|MERGING"
b="$(git symbolic-ref HEAD 2>/dev/null)"
else
if [ -f "$g/BISECT_LOG" ]
then
r="|BISECTING"
fi
if ! b="$(git symbolic-ref HEAD 2>/dev/null)"
then
if ! b="tag: $(git describe --exact-match HEAD 2>/dev/null)"
then
b="$(cut -c1-7 "$g/HEAD")..."
fi
fi
fi
if [ -n "$1" ]; then
printf "$1" "${b##refs/heads/}$r"
else
printf "[%s]" "${b##refs/heads/}$r"
fi
fi
Некоторые параметры github
[ f5]Я бы рекомендовал книгу From bash для Z Shell. У него есть все советы, необходимые для переключения оболочки. Он объясняет различия обеих оболочек и упрощает создание новой zsher.
Вот мой .zshrc, и это самая важная вещь! zsh имеет много вариантов, которые вы можете использовать, поэтому ознакомьтесь с некоторыми примерами по сети или прочитайте документацию на домашней странице Zsh.
My .zshrc не содержит никаких действительно классных вещей, кроме временная метка в правой части командной строки.
Btw, не забудьте попробовать табуляцию, где есть несколько примеров:
mplayer -a[tab]
покажет что-то вроде этого: [ ! d5] mplayer -a
-ac -- force usage of a specific audio codec
-af -- activate audio filters
-afm -- force usage of a specific audio codec family
-alang -- select the DVD audio language
-ao -- specify audio driver
-aop -- specify audio output filter
И если вы используете безшовные ssh-ключи или ssh-agent, вам может показаться полезным использовать tabcomplete удаленные файлы:
scp apollo:/home/user/[tab]
Desktop/ Documents/ Downloads/ Music/ Pictures/ Public/ Templates/ Videos/
. После получения списка вы можете нажать вкладку
Но будьте осторожны, эта оболочка сделает вас ленивыми и заставит вас почувствовать, что стандартная оболочка глупа и раздражает!
Большое преимущество - отличное завершение вкладки с предварительно упакованными скриптами завершения для многих команд. Вот пример, показывающий вывод apt-get<TAB>:
apt-get
action
autoclean build-dep clean dselect-upgrade install remove update
autoremove check dist-upgrade help purge source upgrade
Узнайте о расширенных globbing и рекурсивных шарах в zsh.
Узнайте немного о zstyle и о том, как различные вещи (особенно завершение) позволяют настраивать их конфигурацию с помощью zstyle.
Look в ассоциативные массивы.
Если вы используете регулярные выражения, загляните в =~ (который тоже есть) и рассмотрите: setopt rematch_pcre
Избегайте написания сценариев, которые зависят от большей части магии zsh, потому что, хотя это фантастика для использования, zsh может иметь тенденцию к записи только для записи. Если вы используете слишком много, подумайте, когда переключиться на такой язык, как Python.
Zsh соблазнительна. Это темная сторона. Добро пожаловать.
Несколько специально полезных расширенных глобусов:
1- rmdir *(/^F) - удалить все непустые каталоги в текущем каталоге
2- grep traceback /srv/log/**/*(.m-2) - искать это regex в файлах, измененных за последние два дня
3- chmod g+w **/*(U^I) - сделать все файлы, принадлежащие мне, а не записывать по группам, записывать по группам
Да, конечно, вы можете напишите это с помощью find, но это легче отключить. У него есть два недостатка, чтобы быть справедливыми: оба они должны быть расширены в командной строке: если он соответствует тысячам файлов, командная строка будет слишком длинной, и это не удастся, и, во-вторых, все файлы будут найдены перед тем, как файл начнет работать.
(вам понадобится setopt extendedglob, если он еще не включен)
Еще один отличный ресурс - страница любителей zsh (идет от сайта zml grml).
Я дал купе переговоров и перевел несколько человек на zsh. Я сохраняю github repo моих (каковы преимущества) заметки вместе с стартером и копией моей собственной zsh config в github здесь.
http://github.com/mitechie/zshrc