Tcsh.
Перед прочтением статьи подумайте нужен ли вам tcsh? Более того, здесь вы можете увидеть 10 причин, почему не стоит использовать его. Он не POSIX-совместимый. Но я всё же на этом шелле... Почему же..? Конфигурабельность и скорость, плюс некоторые фичи, к примеру, коррекция ввода. Да, иногда не-POSIX'нутость бесит, но всё же этот шелл наиболее удобен для повседневного использования (но не для написания скриптов!). Задача статьи не перевести man tcsh, а настроить удобную работу в терминале.
$ sudo pacman -Sy tcsh $ tcsh >
Запустив, вы увидите, что шелл почти ничего не умеет кроме пускания исполняемых файлов, в отличии от баша, который удобен "из коробки". На самом деле слово "удобен" тоже стоит взять в кавычки, ведь за вас решили, что вам нужно! По-моему, хотя бы для осознания ваших потребностей стоит взглянуть на данный шелл. Начнем с создания конфига.
$ touch ~/.tcshrc $ vi ~/.tcshrc
Пишем в файл следущее:
set prompt = "%{33[32m%}%B%# "
set path = (/sbin /bin /usr/sbin /usr/bin $HOME/bin)
set correct = cmd
set autolist = ambiguous
set complete = enhance
set rmstar
set history = 100
set savehist = 100
set listjobs = long
set inputmode = insert
set noclobber
set histdup = prev
set listmax = 100
set implicitcd
set pushdsilent
set dunique
set dextract
set dirstack
set nobeep
set color
set printexitvalue
set autoexpand
complete which 'p/1/c/'
complete where 'p/1/c/'
complete man 'p/1/c/'
complete sudo 'p/1/c/'
complete kill 'c/-/S/' 'p/*/`ps -A | awk \{print\ \$1\} | tail -n +2`/'
complete killall 'c/-/S/' 'p/*/`ps -A | awk \{print\ \$4\} | tail -n +2 | sort | uniq`/'
complete m 'p/1/c/'
complete s 'p/1/c/'
complete chgrp 'p/1/g/'
complete chown 'p/1/u/'
complete alias 'p/1/a/'
complete unalias 'p/1/a/'
complete set 'p/1/s/'
complete unset 'p/1/s/'
complete limit 'p/1/l/'
complete bindkey 'C/*/b/'
setenv LS_COLORS 'no=01;37:fi=01;37:di=01;35:ln=01;36:pi=01;32:so=01;35:do=01;35:bd=01;33:cd=01;33:ex=01;32:mi=00;05;37:or=00;05;37:'
setenv PAGER 'less'
setenv EDITOR 'vi'
alias s 'sudo'
alias e '$EDITOR'
alias p '$PAGER'
alias c 'cat'
alias g 'grep'
alias j 'jobs -l'
alias m 'man'
alias h 'history'
alias se 'sudo $EDITOR'
alias sc 'sudo cat'
alias gi 'grep -i'
alias cl 'clear'
alias pu 'pushd'
alias po 'popd'
alias ds 'dirs -v'
alias dss 'dirs -S'
alias dsl 'dirs -L'
alias dsc 'dirs -c'
alias mak 'make'
alias m2 'man 2'
alias m3 'man 3'
alias pac 'pacman'
alias spac 'sudo pacman'
alias ls 'ls --color=auto -F'
alias grep 'grep --color=always'
alias pingt 'ping -i 0.2 -c 100'
alias octave 'octave -q'
bindkey "^[[3~" delete-char
bindkey "^W" backward-delete-wordТеперь углубимся в матчасть.
Опции:
prompt — ставит строку "приветствия", мне достаточно ">", но вы можете поставить, к примеру, "%{33[30m%}%m:%{33[37m%} %B%~ %{33[32m%}%B%# " и получите "myhost: ~/path > " в разных цветах.
path — очевидно, пути поиска исполняемых файлов
correct — коррекция ввода: cmd правит только команду, all правит команды по всей строке, complete автоматически дополняет команды.
> pacmn -Syu
CORRECT>pacman -Syu (y|n|e|a)
autolist — показывает возможные значения при неоднозначном дополнении, ambiguous показывает значения если были введены новые символы.
complete — если поставлен enhance, игнорирует регистр при дополнении и считает '-', '.' и '_' одинаковыми.
rmstar — спрашивает пользователя, если rm * введено.
> rm * Do you really want to delete all files? [n/y]
history — сохраняемое количество команд в истории, так же можно изменить формат истории
savehist — сохраняемое количество команд в файл истории (стандартно ~/.history).
listjobs — показывает все задачи, если одна из них завершилась, long — показывает информацию о задачах более подробно
inputmode — способ ввода: insert или overwrite — вроде все понятно.
noclobber — запрещает перезапись существующих файлов
> touch 1 > echo "hello!" > 1 1: File exists. > echo "hello!" >! 1 > cat 1 hello!
histdup — управляет повторяющимися значениями в истории, prev не вносит в историю одинаковые записи, если они созданы подряд, all не вносит запись, если она уже существует, erase вносит запись в историю, удалив старую.
listmax — максимальное количество элементов, показываемое без вопроса при дополнении.
> ls /dev/[^I] There are 188 items, list them anyway? [n/y]
implicitcd — переход к директории без набора cd, если присвоено verbose, то будет каждый раз выводить смену пути в stdout.
> pwd /home/ferhiord > ~/programming/ > pwd /home/ferhiord/programming
pushdsilent — отключает вывод pushd и popd.
dunique — перед занесением нового значения в стек директорий pushd удаляет предыдущее повторение.
dextract — позволяет извлекать n-ую директорию из стека, посредством pushd +n.
dirstack — позволяет получать доступ к элементам стека директорий, посредством $dirstack[номер].
nobeep — отключение "пищалки"
color — включает цвет для ls-F и добавляет --color=auto для ls, может ставится отдельно для обеих команд.
printexitvalue — выводит возвращаемое значение приложения, если оно не равно 0.
> ls /qwe ls: cannot access /qwe: No such file or directory Exit 2
autoexpand — включает дополнение из истории
> cd /bin > history 1 23:21 cd /bin 2 23:21 history > !c[^I]
Хотите большего? Вам сюда ну или в man tcsh.
Об алиасах говорить нечего, в принципе, и так понятно: всё сделано для того, чтобы было быстро и удобно обращаться с шеллом; сравните:
> sudo cat /root/.tcshrc | grep -i bind
и
> sc /root/.tcshrc | gi bind
Описания bindkey позволяют "навешивать" действия на сочетания клавиш.
Важная часть — это дополнения. Их можно настраивать как душе угодно: для sudo дополнение команд, для chown дополнение пользователей, для kill дополнение сигналов и номеров процессов... всё зависит от вашей фантазии и потребностей. Быть может, когда-нибудь у меня дойдут руки до написания дополнения пакетов для pacman'а.
Конечно, до совершенства далеко. Я понимаю, что могу улучшить работу с шеллом посредством дополнительных опций и других подходов (до tcsh я не знал, что такое стек директорий и, конечно, его не использовал). Но tcsh реально охватить мозгом, осмыслить и познать, в отличии от монстра zsh, который умеет гораздо больше (но, надо сказать, является жутким тормозом). И пока я не планирую расширять конфиг.
Взято из заметок арчера.
- ferhiord's blog
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
- 2836 просмотров


Комментарии
В опере, и мозилле шапка
В опере, и мозилле шапка влево уезжает))) Поправьте, что ли...))