LINUX.ORG.RU

Предлагаю использовать нормальный шелл

cp /etc/skel/.*(.) $HOME

В zsh работает.

nnz ★★★★ ()

find /etc/skel/ -type f -exec cp -v {} $HOME \;

record ★★★★★ ()
Ответ на: комментарий от record

>find /etc/skel/ -type f -exec cp -v {} $HOME \;

Ты забыл «-name '.*'» и «-maxdepth 1» :)

nnz ★★★★ ()
Ответ на: комментарий от NK

>Да, забыл упомянуть BASH используется

Недошеллы не нужны же :)

nnz ★★★★ ()
Ответ на: комментарий от TGZ

> cp /etc/skel/\.* ${HOME}

работает, как хотел, копирует файлы, а если -r добавим еще и каталоги, причем пути сохраняются, спасибо;
Не подскажешь, а в man bash про символ «\» прочитать в каком разделе можно, как в команде на вроде, что ты выше привел или можешь пояснить?

NK ★★★★★ ()
Ответ на: комментарий от TGZ

>cp /etc/skel/\.* ${HOME}

У меня на баше «echo /etc/skel/\.*» выводит то же, что и обычный «echo /etc/skel/.*», включая «.» и «..».

nnz ★★★★ ()
Ответ на: комментарий от nnz

Ну не знаю, посмотрим... а в обще существенно отличается синтаксис zsh от bash или не в нем дело?

NK ★★★★★ ()
Ответ на: комментарий от nnz

Ааа, да, напутал, не прокатило, с ключом -a уже каталоги из уровня, что выше копируются

NK ★★★★★ ()
Ответ на: комментарий от NK

>Ну не знаю, посмотрим... а в обще существенно отличается синтаксис zsh от bash или не в нем дело?

Дело в том, что в zsh дофига разных плюшек. Меня, например, покорило расшаривание истории между _одновременно_ работающими сеансами.

Из полезных фич применительно к данному случаю можно упомянуть возможность прямо в маске использовать различные проверки, например, (.) означает простой файл, (/) — каталог, (F) — непустой каталог и т.п. Подробнее здесь: http://linux.die.net/man/1/zshexpn

nnz ★★★★ ()
Ответ на: комментарий от NK

«\» - просто стандартный экранирующий символ. Точка будет интерпретироваться как точка, а не как служебный символ.

TGZ ★★★★ ()
Ответ на: комментарий от TGZ

>«\» - просто стандартный экранирующий символ. Точка будет интерпретироваться как точка, а не как служебный символ.

Ээ... А с чего ей быть служебным символом? Не regexp вроде же.
Там основная проблема в том, что «.» и «..» тоже под этот шаблон подпадают.

nnz ★★★★ ()

Я так делаю

cp /etc/skel/.[a-zA-Z]* $HOME

sdio ★★★★★ ()
cp -a /etc/skel/\.+([a-z]) ${HOME}
GotF ★★★★★ ()
Ответ на: комментарий от nnz

Ээ... А с чего ей быть служебным символом?


Потому что ".*" это маска, под которую подходят не только файлы начинающиеся с точки.

TGZ ★★★★ ()
Ответ на: комментарий от sdio

> cp /etc/skel/.[a-zA-Z]* $HOME

Да, точно оно, спасибо

Напоследок уточню, а если цифры [a-zA-Z0-9] ?

NK ★★★★★ ()
Ответ на: комментарий от GotF

cp -a /etc/skel/\.+([a-z]) ${HOME}

Спасибо, а не поясните \.+([a-z]) ? (интересно)

NK ★★★★★ ()
Ответ на: комментарий от NK

То, что находится внутри +(), совпадает один и более раз. В квадратных скобках и так всё ясно.

GotF ★★★★★ ()
Ответ на: комментарий от GotF

>cp -a /etc/skel/\.+([a-z]) ${HOME}

По-моему, проще и универсальные будет /etc/skel/.[^.]* (точка, затем как минимум один символ не точки, потом произвольная строка). Файлы, начинающиеся с двух точек, оно все же пропустит, но это редкость.

nnz ★★★★ ()
Ответ на: комментарий от TGZ

>Потому что ".*" это маска, под которую подходят не только файлы начинающиеся с точки.

Что, правда? А я-то полагал, что каталоги, в том числе «.» и «..», являются частным случаем файла. Как и устройства, сокеты и FIFO.
Ну да ладно.

Все же в упор не понимаю, что дает экранирование этой точки.

nnz ★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.