Используйте это, чтобы узнать каталог (-и) верхнего уровня архива.
tar tzf nginx-1.0.0.tar.gz | sed -e 's@/.*@@' | uniq
sed
вызывается здесь, чтобы получить первый компонент пути, напечатанный tar
,таким образом, он преобразует
path/to/file --> path
. Он делает это, выполняя команду s .Я использую знак @
в качестве разделителя вместо более распространенного знака /
, чтобы избежать экранирования /
в регулярном выражении.Итак, эта команда означает: заменить часть строки, которая соответствует шаблону /.*
(то есть косая черта, за которой следует любое количество произвольных символов), пустой строкой.Или, другими словами, удалите часть строки после (и в том числе) первой косой черты.
(ее необходимо модифицировать для работы с абсолютными именами файлов, однако в tar-файлах они встречаются довольно редко.Но убедитесь, что эта теоретическая возможность не создает уязвимости в вашем коде!)