Страница 1 из 1

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

Добавлено: 03 дек 2015, 19:59
zxcv
Всем доброго времени суток!!!
Помогите разобраться.

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

Команда:

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

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

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

Добавлено: 04 дек 2015, 00:13
Olej
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

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

Добавлено: 04 дек 2015, 00:21
Olej
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:

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

Добавлено: 04 дек 2015, 17:48
zxcv
Olej, большое СПАСИБО, за разъяснение!!!