Как позволить команде 'CP', не запускают ошибку, когда исходный файл не существует?

Можно использовать команду Linux hdparm-S

человек hdparm
- S: Установите резервное устройство (spindown) тайм-аут для диска. Это значение используется диском определить, сколько времени ожидать (без активности диска) перед выключением шпиндельного двигателя для экономии электроэнергии...

Также взгляд на этот вопрос:

Каков эффект резервного устройства (spindown) режим на современных жестких дисках?

$ sudo hdparm-S 240/dev/sda1

/dev/sda1:
установка резервного устройства к 240 (20 минут)

60
задан 29 November 2014 в 22:16
6 ответов

Если Вы говорите о сообщении об ошибке, можно подавить это путем отправки его в битоприемник:

cp ./src/*/*.h ./aaa 2>/dev/null

Если Вы хотите подавить код выхода и сообщение об ошибке:

cp ./src/*/*.h ./aaa 2>/dev/null || :
71
ответ дан 28 November 2019 в 19:32

Вы ищете что-то вроде

if [ -e file ]
 then cp file /somewhere
fi

(К сожалению, -f опция не является Droid, который Вы ищете.)

Если Вы хотите соответствовать шарику, который не будет работать; использовать find вместо этого, например:

find ./src -name \*.h -exec cp {} ./destination \;
13
ответ дан 28 November 2019 в 19:32

Вы могли вызвать корректное ошибочное состояние. С функцией:

$ cpalways () { cp $1 $2 2>/dev/null ; return 0 ; }

Учитывая следующее:

$ ls foo bar baz
ls: baz: No such file or directory
bar foo

Обычная копия возвратит ошибку. Это возвратит статус выхода 1.

$ cp baz bar ; echo $?
cp: baz: No such file or directory
1

Если мы будем использовать cpalways () функция выше, то любые ошибки будут скрыты:

$ cpalways baz bar ; echo $?
0
$ cpalways foo bar ; echo $?
0
$ cpalways baz bar ; echo $?
0
2
ответ дан 28 November 2019 в 19:32

Արդյունքը ճշգրիտ կերպով փոխանցելը ապահովում է, որ հրամանը միշտ հաջողության հասնի: Ես դա փորձել եմ Linux- ում, բայց ոչ ցանկացած Mac OS- ում.

cp ./src/*/*.h ./aaa | true
6
ответ дан 28 November 2019 в 19:32

Старый вопрос, но может быть актуален для других.
Если вам не требуется для использования cp, вы можете попробовать с помощью rsync.
Чтобы скопировать все файлы из источника в каталог назначения, выполните:

rsync -avzh --ignore-errors /path/to/source /path/to/destination

Rsync входит в состав большинства Unix-подобных систем, таких как Linux, Mac OS X или FreeBSD.

9
ответ дан 28 November 2019 в 19:32

Это работает

$(cp ./src/*/*.h ./aaa | true)

-1
ответ дан 29 March 2021 в 17:05

Теги

Похожие вопросы