Русские документы
Ежедневные компьютерные новости RSS rusdoc.ru  Найти :
• Новости
• Последние поступления
• Книжный магазин
  Hardware:
• Видеоустройства
• Системные платы
• Процессоры
• Мобильные устройства
• Аудиосистема
• Охлаждение системы
• Накопители информации
• КПК и ноутбуки
• Телефоны и связь
• Периферия
• Система
• Сети
• Разные устройства
 
  Programming:
• Web-разработка
• Языки программирования
• Технологии и теория
• Разработка игр
• Программная инженерия
 
  Software:
• Операционные системы
• Windows 7
• Базы данных
• Обзоры программ
• Графика и дизайн
   
  Life:
• Компьютерная жизнь
• Разные материалы
   
• Партнеры
• Публикация
• Правовая информация
• Реклама на сайте
• Обратная связь
• Экспорт в RSS Экспорт в RSS2.0
    Читать в Яндекс.Ленте



Eще немного о ZSH

Раздел: Software / Linux @ 19.10.2008 | Ключевые слова: zsh shell оболочка linux версия для печати

Автор: drujebober
Источник: habrahabr

Вот прочитал эту статейку и решил поделиться своими заметками.

Все ниженаписаное было написано для себя дабы служить шпаргалкой, так что не судите строго :)
Начнемс…

Если у нас есть абсолютный путь к файлу, а нам нужно вывести имя файла или каталог в котором лежит файл можно воспользоваться конструкциями «:h» и «:t»:
$ 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. Я пока что обратил внимание на «typeset -A variable» это позволит превратить нашу переменную variable в подобие словаря. Например:
$ 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


Вот пожалуй и все. Более глубокое освоение осложняется плохим знанием(а лучше сказать незнанием) английского языка :(.

Некоторые полезные ресурсы:
  1. ZSH-LOVERS
  2. A User`s Guide to the Z-Shell

Это интересно:








версия для печатиРаспечатать статью


Вернуться в раздел: Software / Linux


Реклама:
Читать наc на:

Add to Google
Читать в Яндекс.Ленте






Rambler's Top100
© Copyright 1998-2012 Александр Томов. All rights reserved.