4715 читателей, 728 постов
Администрация
Модераторы
Блог для любителей и профессионалов, использующих Linux дома и на работе :)
$ e=`ls =cat`;print "Directory " $e:h "file " $e:t Directory /bin file cat
$ filename=(image.png document.doc test.sh) $ print -l $filename:r image document test $ print -l $filename:e png doc sh
$ filename=$filename:u $ print $filename IMAGE.PNG DOCUMENT.DOC TEST.SH $ filename=$filename:l $ print $filename image.png document.doc test.sh
$ u="test" $ print $u[1] t $ VAR="this is a big long sentence" $ VAR[(w)5] long $ echo $VAR[(w)2,(w)5] is a big long $ echo $VAR[(w)2,15] is a big l
$ VAR="this/is/a/long/string" $ print $VAR[(ws./.)4] long
$ VAR=`pwd`
$ print $VAR
/usr/share/doc
$ print ${(s./.)VAR}
usr share doc
$ print ${VAR:gs./.:.}
:usr:share:doc
или
$ print ${VAR:gs:/:.:}
.usr.share.doc$ VAR=`head /etc/passwd` $ print $VAR[(f)1] root:x:0:0:root:/root:/bin/zsh
${+VAR} #если переменная VAR существует возвращается 1 иначе 0
$ VAR=""
$ print ${+VAR}
1
$ print ${+AR}
0
${VAR:-word} #Если переменная VAR существует и не равна "" то возвращается она же, иначе возвращается word.
$ print ${AR:-word}
word
$ print ${VAR:-word}
word
$ VAR="hello"
$ print ${VAR:-word}
hello
${VAR:+word} #Если переменная VAR существует и не равна "" то возвращается word, иначе ничего
$ VAR="test"
$ print ${VAR:+word}
word
${name#pattern}
${name##pattern} #Незнаю в чем различие но эФфект следующий: возвращается окончание строки за исключением начала которое совпадает с pattern:
$ VAR="hello world"
$ print ${VAR#hell}
o world
${name%pattern}
${name%%pattern} #тоже самое только возвращает начало
$ print ${VAR%%world}
hello
$ print ${VAR%%ll*d}
he
$ typeset -A VAR $ VAR=(1 test 5 pass 3 help 7 hello) $ print $VAR[5] pass $ print $VAR[3] help
$ VAR=(1 test 5 pass 3 help 7 hello) $ print $VAR[4] pass
если же мы значения запишем в кавычках то получим простую строку: $ VAR='1 test 5 pass 3 help 7 hello' $ print $VAR[4] e
комментарии (22)
Для идеологической верности :)
Пойду пока пока zsh поставлю :)
sh, bash — "$"
zsh — "%"
tcsh — ">"
btw, zsh умеет автоматом менять данный знак в приглашении в зависимости от текущего уида, например после использования sudo, с % на # и потом обратно :)
ps: шелл для реальне воене Корн (дефультный шелл в AIX'е, SunOS, Solaris и т. п. платных юнипсов), имеет как раз так же дефультный знак $, отсюда скорее всего и манера считать $ значком юзира.
PS1
The primary prompt string, printed before a command is read.
the default is `%m%# '. It undergoes a special form of expan-
sion before being displayed; see the section `Prompt Expansion'.
а теперь ползем в zshrc и ставим дефультный %# и видим в приглашении % в случае юзира и # в случае рута.
ну а так да, чо в конфиг накалякаем, то и будет. но только еретик будет рассказывать про шелл давая примеры в которых значок от вражьего шелла. другими словами, приглашение — единственное почему можно узнать шелл, а тут не понятно что и к чему. вот и все. хотя нормальный человек не будет читать чужие заметки, а почитает man'ы, которых в коробке с шеллом более чем достаточно. :)
штановприглашений. А $ и # привычны по статьям.P.S. я вас не минусовал (:
пс: да я понятие не имею кто кого минусует, потому что этот процесс не поддается логике :) рандомно все как-то Ж)
/bin
ls
#
многие вещи, описанные как плюсы zsh есть и в баше (zsh же это замена башу) или реализуются функциями в пару строк, добавлеными уже давно в .bashrc мудрыми людьми.