@hirthwork

hirthwork

Меня зовут Пить
hirthwork

Всего лишь бабочка, которой снится, что она программист

31 я читаю 94 меня читают
4914 постов
42211 комментариев
hirthwork
16 Feb 2017
hirthwork

как сделать cp чтобы он зафейлился, если таргет существует? -n не подходит, потому что не фейлится

16 Feb 2017

Я думаю, что тебе придётся добавить [ -e $target ]

16 Feb 2017

я бы так и сделал, если бы у меня в опциях уже не было -r

#ojxih/2 в ответ на /1
16 Feb 2017

а тебе именно падать надо, -u не подойдёт?

#ojxih/3 в ответ на /2
16 Feb 2017

падать

#ojxih/4 в ответ на /3
16 Feb 2017

yes n | cp -r -i /src/* /dst

#ojxih/5 в ответ на /4
16 Feb 2017

ну так не падает же

#ojxih/6 в ответ на /5
16 Feb 2017

как так?

#ojxih/7 в ответ на /6
16 Feb 2017
/tmp/tmp $ yes n | /bin/cp -ri a b
/bin/cp: overwrite 'b'? /tmp/tmp $ echo $?
0
#ojxih/8 в ответ на /7
16 Feb 2017

Аааа, в смысле, чтобы прямо -1 выдавал?

#ojxih/9 в ответ на /7
16 Feb 2017

да

#ojxih/10 в ответ на /9
16 Feb 2017
TWT

false | cp -i src dest

Комментарий был отредактирован в 12:34:10 16.02.2017
#ojxih/11
16 Feb 2017

Уже попробовали

#ojxih/12 в ответ на /11
16 Feb 2017
mva

ln -T :)

16 Feb 2017
TWT

rayslava, я подозреваю, что cp can never fail

#ojxih/14 в ответ на /12
16 Feb 2017

кроме тех случаев, когда тебе реально надо скопировать файл -_-

#ojxih/15 в ответ на /14
16 Feb 2017
mva

// вообще, если в цикле, то можно как-то поиграться с cp -i, наверное, но чем ln не угодил? :)

16 Feb 2017

не работает для каталогов

#ojxih/17 в ответ на /13
16 Feb 2017

нету цикла // с тем же успехом с писюном поиграться можно. хуета получится

#ojxih/18 в ответ на /16
16 Feb 2017
mva

не пизди. Работает. Не работает если ты аргументом указываешь каталог куда надо переместить, а не полный путь. Но это just as planned. Если хочешь так делать (хотя не стоит, ибо это место для факапа) - убери -T ;)

#ojxih/19 в ответ на /17
16 Feb 2017
mva

не хуета, а онанизм

#ojxih/20 в ответ на /18
16 Feb 2017

хорош выёбываться, дай полный пример

#ojxih/21 в ответ на /19
16 Feb 2017
TWT

mva, я уже занимаюсь

#ojxih/22 в ответ на /20
16 Feb 2017
mva

как я тебе дам полный пример для твоего случая?
Я просто указываю полные пути.

Но, вообще, ln не вариант если тебе надо копировать между устройствами.
Поэтому расскажи контекст полностью, какая (первоначальная) задача, какая субзадача и почему ты для субзадачи решил использовать фейлящийся cp?
Тогда я подскажу решение :)

#ojxih/23 в ответ на /21
16 Feb 2017
mva

s/устроствами/разными файловыми системами/

#ojxih/24 в ответ на /23
16 Feb 2017

есть список каталогов. в этих каталогах могут быть подкаталоги. всё их содержимое нужно слить в один каталог. если в двух разных каталогах-источниках оказались файлы с одинаковыми именами/путями, то нужно сказать автору коммита, что он мудак

#ojxih/25 в ответ на /23
16 Feb 2017
mva

тогда ln — самое то

#ojxih/26 в ответ на /25
16 Feb 2017
mva

(без -s)

#ojxih/27 в ответ на /26
16 Feb 2017

я тебе уже сказал, что не работает это говно

#ojxih/28 в ответ на /26
16 Feb 2017
mva

блядь. А у меня работает. Ща накидаю скринкаст.

#ojxih/29 в ответ на /28
16 Feb 2017
/tmp $ mkdir test
/tmp $ cd test/
/tmp/test $ mkdir dir1
/tmp/test $ ln -T dir1 dir2
ln: dir2: Operation not permitted
/tmp/test $ mkdir dir2
/tmp/test $ ln -T dir1 dir2
ln: 'dir2' is a directory
#ojxih/30 в ответ на /29
16 Feb 2017
mva

я как раз хотел написать "инструкцию по ln для чайников" когда ты сказал что работает как говно. Так что таки допишу :)
Надо определиться как ты это делаешь:
1) Либо ты указываешь полные пути и до первого файла (источника) и до назначения. Тогда используешь -T.
Этот аргумент считать последний аргумент (назначение) путём до конечного файла, а не каталогом, в который надо этот файл положить иначе, если на месте назначения существует каталог,
cp, кстати, сделал бы в этом случае так же
2) либо ты указываешь назначение не полным путём, а каталогом, куда положить источник. Лучше так не делать по описанной в п.1 причине

3) можно использовать: ln -t <каталог_назнычения> [список файлов для помещения в этот каталог].

И да. Жёсткие ссылки работают только в пределах ФС и только для файлов (точнее, мало ФС умеют в жёсткие ссылки на каталоги).

Поэтому я делаю так: https://gist.github.com/raw...833a7adfcb116e1ca74d

#ojxih/31 в ответ на /30
16 Feb 2017

серьёзно? ты серьёзно думаешь что я стану читать простыню текста, когда мне нужен от тебя одна единственная команда, которая докажет, что ln -T работает?

#ojxih/32 в ответ на /31
16 Feb 2017
mva

пройди по ссылке в конце.

#ojxih/33 в ответ на /32
16 Feb 2017

там тоже простыня текста, какие-то циклы и определение функции. вот о чём с тобой говорить, если ты не смог в одну строку простую мысль выразить?

#ojxih/34 в ответ на /33
16 Feb 2017

я не просил решить за меня задачу, я спросил как добиться копирования-или-фейла на одном конкретном примере

#ojxih/35 в ответ на /34
16 Feb 2017
mva

... аргументация уровня школьника какая-то. Звучит как "я не захотел (или не смог) прочитать развёрнутый подробный ответ, значит ты тупой и с тобой не о чем разговаривать". Ну ок, чо :'(

#ojxih/36 в ответ на /34
16 Feb 2017

у тебя аргументация уровня демагога. тебя спрашивают кто президент россии, а ты полчаса пиздишь за сложную политическую коньюктуру

#ojxih/37 в ответ на /36
16 Feb 2017
mva

я ответил. ln.
Про -T я сказал дополнительно в ключе того, что это защита от непредумышленного поведения. Ты сказал, что не работает. Я показал, что работает. Что не так-то?

#ojxih/38 в ответ на /35

Добавить пост

Вы можете выбрать до 10 файлов общим размером не более 10 МБ.
Для форматирования текста используется Markdown.