My baby shot me down (en bref)

Jan 19, 2018 11:53

Манипулирование командами из history с помощью !! и !$:
1. !! (bang-bang) - эквивалентен последней команде в истории, т. е. ввод !! равнозначен повторному вводу последней команды.
2. !$ (bang-dollar) - эквивалентен последнему аргументу последней команды в истории.
3. !$:h - удаляет последнее поле из вывoда !$

# ls /usr/src/linux
# !$
/usr/src/linux
# !$:h
/usr/src
4. !$:t - оставляет только последнее поле из вывода !$

# ls /usr/src/linux
# !$
/usr/src/linux
# !$:t
linux
5. !$:r - удаляет расширение файла из последнего поля вывода !$

# ls /usr/portage/distfiles/nano-2.2.0.tar.gz
/usr/portage/distfiles/nano-2.2.0.tar.gz
# !$:r
/usr/portage/distfiles/nano-2.2.0.tar
# ls /usr/portage/distfiles/nano-2.2.0.tar.gz /usr/portage/distfiles/nano-2.2.0.tar.gz
# !$:r:r
/usr/portage/distfiles/nano-2.2.0
6. !$:е - оставляет только расширение файла из последнего поля вывода !$

# ls /usr/portage/distfiles/nano-2.2.0.tar.gz
/usr/portage/distfiles/nano-2.2.0.tar.gz
# !$:e
gz7. !-n$ - вывести аргумент минус n-ой команды из истории

# cd /tmp # wget http://www.example.com/path/KickassApplicationSuite.tar.gz
# cd /usr/local/src/
# mkdir!-2 $:t:r:r <- создаёт директорию 'KickassApplicationSuite'
# cd!$  <- перейти во вновь созданную 'KickassApplicationSuite'
# tar xvzf /tmp/!-4 $:t <- эквивалентно 'tar xvzf /tmp/KickassApplicationSuite.tar.gz'
8. !* (bang-asterisk) - означает все аргументы последней команды.

-
Использование {}

$ cp filename{,-old} <- cp filename-old
$ cp filename{-old,} <- cp filename-old filename
$ cp filename{-v1,-v2} <- cp filename-v1 filename-v2

$ touch a{1,2,3}b <- создаёт файлы а1b, a2b, a3b
$ touch {p2,pv,av,}p <- создаёт файлы p2p, pvp, avp и p

$ ls /usr/{,local/}{,s}bin/jojo <- ls /usr/bin/jojo /usr/sbin/jojo /usr/local/bin/jojo /usr/local/sbin/jojo

$ apt-get remove -purge ppp{,config,oe{,conf}} <- apt-get remove -purge ppp pppconfig pppoe pppoeconf

---

Расширеные маски файлов в zsh

Просмотреть скриншоты по маске ~/pics/desktop-200* отсортированные по времени модификации (самые новые, будут идти первыми).

$ ls ~/pics/desktop-200*(om)

Что бы запомнить:
o от order - порядок
m от modification time - время модификации

Просмотреть последний скриншот

$ ls ~/pics/*(om[1])

Залить последние четыре фотографии с мобилы на хостинг по scp

$ scp ~/photo/mobile/se_24/*(om[1,4]) photo.hosting.org:~/www/data/tmp/se_24/
Подробнее о спецификаторах к маскам файлов можно узнать в man zshexpn в разделе Glob Qualifiers

$ less-p'Glob Qualifiers' \man zshexpn
---

Правильная маска для копирования dot-файлов в zsh так:

cp -r .*~(.|..)(^@) backup-dir

.* "все файлы начинающиеся с точки"
~ "отрицание,все маски что идут после ~ не влючены в результат"
(.|..) "имя файлов . или .."
(^@) "не символические ссылки"
---
Удалить разом битые символические ссылкив zsh можно так

$ rm *(-@)

Источник: linsovet.com/zsh-remove-symbolic-links-without-a-target

shell, unix

Previous post Next post
Up