«первый аргумент, не являющийся параметром после обработки параметров»
Это касается параметров вашего вызова bash
. Например, -c
- это опция, которую вы применяете к bash
в вашем примере, которая не будет отправлена ни одной команде, которую вы вызываете.
«Любые оставшиеся аргументы назначаются позиционным параметрам, начиная с
$ 0
»
Это означает, что если вы выполните bash -c / path / to / script arg1 arg2
, указанный сценарий будет выполнен с / path / to / script
, arg1
и arg2
, назначенными позиционным параметрам $ 0
, $ 1
и $ 2
соответственно, как если бы вы выполнили команду в интерактивном сеансе bash
.
Недавно я был озадачен иногда низкой скоростью cp
. В частности, почемуdf = pandas.read_hdf('file1', 'df')
(700 мс для файла размером 1,2 ГБ ), за которым следуютdf.to_hdf('file2')
(530 мс ), могут быть намного быстрее, чемcp file1 file2
(8 с )?
Копаться в этом:
cat file1 > file2
не лучше (8,1 с ). dd bs=1500000000 if=file1 of=file2
ни (8,3 с ). rsync file1 file2
хуже (11,4 с ), потому что файл2 уже существует, поэтому он пытается выполнить свою скользящую контрольную сумму и магию обновления блока. О, секундочку! Как насчет разъединения (и удаления)file2
сначала, если он существует?
Теперь поговорим:
rm -f file2
:0,2 с (добавить к любой цифре ниже ). cp file1 file2
:1,0 с. cat file1 > file2
:1,0 с. dd bs=1500000000 if=file1 of=file2
:1,2 с. rsync file1 file2
:4с. Вот и все. Убедитесь, что целевые файлы не существуют (или усеките их, что предположительно и делает pandas.to_hdf()
).
Редактировать:это было без очистки кеша перед любой из команд, но, как отмечено в комментариях, это последовательно добавляет ~3,8 с ко всем числам выше.
Также следует отметить :это было опробовано на различных версиях Linux (Centos w. 2.6.18 -ядро 408.el5 и Ubuntu w. 3.13.0 -77 -универсальное ядро )и ext4, а также ext3. Интересно, что на MacBook с Darwin 10.12.6 нет никакой разницы, и обе версии (с существующим файлом в месте назначения )и без него работают быстро.