Как к разности файл и вывод от команды?

В целом: Если Вы добавите новый слой сложности ("иначе больше, чтобы сделать то") ничто не будет быстрее.Примечание: Вы только добавляете работу и не 'изменение' они способ, которым сделана работа.

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

http://www.umiacs.umd.edu/~toaster/lvm-testing/

Как это кажется, незначительно повлияйте к скорости. Это кажется в синхронизации с результатами кого-то еще, кто выполнил сравнительный тест:

"ext4 быстрее с LVM, чем без, и другие сравнительные тесты файловой системы" поток Списка рассылки Ядра Linux

Но просто сравните его самостоятельно и посмотрите, ведут ли Ваши аппаратные средства и ОС, которую Вы хотите использовать, себя то же и если можно проигнорировать (возможно, немного) влияние дополнительного слоя сложности, которая дает Вам эластичное устройство хранения данных.

Если Вы добавляете LVM к гостю ОС: Это зависит от того, если Вам нужен гость ОС, чтобы иметь эластичное устройство хранения данных также, не так ли? Ваши потребности диктуют то, что необходимо развернуть.

32
20.04.2011, 23:56
2 ответа

Я подозреваю, что Ваш сценарий и Ваша оболочка отличаются. Возможно, Вы имеете #!/bin/sh наверху Вашего сценария как интерпретатор, но Вы используете bash как Ваша персональная оболочка. Можно узнать то, что окружает Вас выполненный в терминале путем выполнения echo $SHELL.

Более легкий способ сделать это, которое должно работать через большинство оболочек, должно было бы использовать перенаправление канала вместо оператора чтения файла, который Вы даете. Символ '-' является стандартной номенклатурой для чтения STDIN и может часто использоваться в качестве замены для имени файла в списке аргументов:

cat file2 | sort | diff file1 -

Или избегать бесполезного использования кошки:

sort < file2 | diff file1 -
40
27.01.2020, 19:37
  • 1
    , Вы хороши, действительно, я не проверял, является ли sh ударом или нет. Большое спасибо за решение. –  greenoldman 21.04.2011, 13:04
  • 2
    Это - diffing файл с stdout. Теперь, как к разности stdout с файлом? Я имею в виду, противоположное направление. это -R в случае использования git diff --no-index –  Nakilon 04.01.2018, 23:49
  • 3
    @Nakilon Вы просто изменили бы порядок аргументов: diff - file1. –  Caleb 05.01.2018, 08:53
  • 4
    Здорово. Это не работало на git diff. –  Nakilon 06.01.2018, 06:49
  • 5
    @Nakilon, Конечно, не, почему был бы он? git diff совершенно другой зверь и воздействует на ссылки на объекты шарика в его внутреннем индексе, не файлы; diff воздействует на файловую систему. - синтаксис является просто оболочкой синтаксический сахар для /dev/stdin, файл, представляющий поток STDIN. Следовательно, почему diff может использовать его вместо имени файла. Между тем git diff не ищет файлы, это ищет объекты, таким образом, необходимо передать его что-то, что это распознает. Не используйте его, чтобы сравнить файлы друг с другом, использовать diff для этого. –  Caleb 09.01.2018, 14:45

Объем стандартного входа, это - сам сценарий, поэтому просто помещает Ваш код в blocku как это:

{
  diff file1 <(sort file2)
}

Таким образом объем STDIN это в блоке..

Я попробовал, и это работает.

-4
27.01.2020, 19:37
  • 1
    Это не функция, это - блок, и это не имеет никакого значения. –  Gilles 'SO- stop being evil' 21.04.2011, 02:05
  • 2
    @gilles спасибо за исправление. BTW, который я попробовал сам и это работает. Вы? –  tmow 21.04.2011, 09:09
  • 3
    Блок не имеет никакого эффекта на законность <(…) создать. Ваш сценарий будет работать или не работать в зависимости от того, выполняете ли Вы его в оболочке, которая поддерживает <(…) или не (ksh93/bash/zsh по сравнению с Bourne/ash/kshk88). Ответ Caleb закрепляет все это. –  Gilles 'SO- stop being evil' 21.04.2011, 09:51
  • 4
    @gilles хорошо, спасибо за объяснение. –  tmow 26.04.2011, 15:38

Теги

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