Bash: создать три копии файла.

Вопросы написания собственного программного кода (на любых языках)

Модератор: Olej

zxcv
Интересующийся
Сообщения: 6
Зарегистрирован: 20 май 2015, 15:32
Контактная информация:

Bash: создать три копии файла.

Непрочитанное сообщение zxcv » 03 дек 2015, 19:59

Всем доброго времени суток!!!
Помогите разобраться.

Какой командой можно создать три копии файла (с разными именами)?

Команда:

Код: Выделить всё

touch test{1,2,3}.txt
Создаст три файла:
test1.txt,
test2.txt,
test3.txt;
Почему не получается заменить команду "touch" на "cp" или "cat" и таким же образом скопировать уже
имеющийся файл три раза?
В чем мое заблуждение?

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Bahs: создать три копии файла.

Непрочитанное сообщение Olej » 04 дек 2015, 00:13

zxcv писал(а): Почему не получается заменить команду "touch" на "cp" или "cat" и таким же образом скопировать уже
имеющийся файл три раза?

Код: Выделить всё

olej@nvidia ~/2015_WORK/tmp $ ls -l
итого 0
olej@nvidia ~/2015_WORK/tmp $ echo 123 > f1
olej@nvidia ~/2015_WORK/tmp $ cat f1 | tee f2 | tee f3 | tee f4 > /dev/null
olej@nvidia ~/2015_WORK/tmp $ ls -l
итого 16
-rw-r--r-- 1 olej olej 4 дек.   3 23:11 f1
-rw-r--r-- 1 olej olej 4 дек.   3 23:11 f2
-rw-r--r-- 1 olej olej 4 дек.   3 23:11 f3
-rw-r--r-- 1 olej olej 4 дек.   3 23:11 f4
olej@nvidia ~/2015_WORK/tmp $ cat f*
123
123
123
123

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Bahs: создать три копии файла.

Непрочитанное сообщение Olej » 04 дек 2015, 00:21

zxcv писал(а): Почему не получается заменить команду "touch" на "cp" или "cat" и таким же образом скопировать уже
имеющийся файл три раза?
Потому, что у touch - 1 параметр, и вы вместо него подставляете регулярное выражение.
А у cp - 2 параметра, и у cat вам понадобится 2 параметра - перенаправление потока вывода.
И вы считаете, что каждое имя, производящееся из регулярного выражения для 1-го параметра - должно взаимно однозначно соответствовать (как-то расширять) имя 2-го параметра.
А bash так не считает ;-) ... и правильно, в общем, делает.
Смотрим:

Код: Выделить всё

olej@nvidia ~/2015_WORK/tmp $ cat f* > g*
olej@nvidia ~/2015_WORK/tmp $ ls -l
итого 20
-rw-r--r-- 1 olej olej  4 дек.   3 23:11 f1
-rw-r--r-- 1 olej olej  4 дек.   3 23:11 f2
-rw-r--r-- 1 olej olej  4 дек.   3 23:11 f3
-rw-r--r-- 1 olej olej  4 дек.   3 23:11 f4
-rw-r--r-- 1 olej olej 16 дек.   3 23:14 g*
Для cat это команда последовательно обработать все файлы 1-го параметра ... он их и обработал. :lol:

zxcv
Интересующийся
Сообщения: 6
Зарегистрирован: 20 май 2015, 15:32
Контактная информация:

Bahs: создать три копии файла.

Непрочитанное сообщение zxcv » 04 дек 2015, 17:48

Olej, большое СПАСИБО, за разъяснение!!!

Ответить

Вернуться в «Программирование»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 12 гостей