Вы не можете передать файл через mv
, как таковой - mv
не читает исходные файлы со стандартного ввода. В этом случае вам лучше всего либо получить tar
, чтобы изменить целевой каталог (как в ответ Ди Эфф ), либо переименовать его постфактум (как в Ответ с подстановочными знаками ).
Я предпочитаю первое, но с использованием -C
и - strip-components
вместо - transform
:
mkdir moksha && wget -c https://github.com/JeffHoogland/moksha/archive/0.1.0.tar.gz |
tar -xzC moksha --strip-components=1
( -C
не будет , фактически, создавать свой аргумент - по крайней мере, не в BSD моей системы или GNU tar
s.)
Это более переносимо (BSD tar
не имеет - transform
) и не изменяет имена файлов, содержащие строку moksha-0.1.0
в другом месте - вместо этого он просто удалит первый компонент пути каждого извлекаемого файла (например, moksha-0.1.0 / ABOUT-NLS
становится просто ABOUT-NLS
). Поскольку tar
изменился на новый каталог moksha
, все из архива будет извлечено туда.
Архив, который вы связали в своем вопросе, имеет только один каталог в своем корне, но важно отметить, что использование этого метода в архиве с несколькими каталогами в его корне приведет к сбросу всего содержимого в этих каталоги в один каталог, указанный в -C
. В таких случаях вам лучше будет распаковать, а затем при необходимости переименовать .
Вы могли бы выделить ОЗУ для RAM-диска или создать файл подкачки в /dev/shm
, но это только потребляет ОЗУ и увеличивает вероятность того, что вам придется начать использовать подкачку на интенсивном -нагруженное войско.
Некоторое использование подкачки на слабо -загруженном хосте совершенно нормально, если процессы в памяти неактивны. Вы можете изменить агрессивность ядра при принятии этого решения, настроивswappinessхоста.