Я имею в виду, что технически это ошибка памяти; но это не ошибка памяти, на которую вы намекаете. ip 0000000000423a29
— это указатель команды , а sp 00007ffcaea16110
— регистр стека . Тогда у вас естьerror 4
:
$ errno 4
EINTR 4 Interrupted system call
trap divide error
— ошибка деления; просматривая источник, вот пример .
Это ошибка нехватки памяти? Нет, потому что я не видел ошибок OOM
. Память Linux — хитрый зверь; вы должны понимать, как интерпретировать результаты .
Вы столкнулись с ошибкой приложения; не ошибка линукса. Единственный возможный способ, которым это может быть фактической ошибкой памяти, - это если вы проведете тест памяти и обнаружите, что у вас плохая память.
Как указал steeldriver, tar --transform
ожидает выражение замены sed, которое использует базовый синтаксис регулярных выражений, а не расширенный синтаксис регулярных выражений, и, в частности, оператор «один или несколько» — это \+
, а не +
. Видеть Почему мое регулярное выражение работает в X, но не работает в Y?
tar xvfz somearchive.tar.gz --transform 's/^[a-zA-Z]\+-[0-9.]\+/somearchive/'
А можно просто
tar xvfz somearchive.tar.gz --transform 's!^[^/]*!somearchive!'
Ответ Жиля полностью соответствует моему вопросу. Однако я также обнаружил, что эта альтернатива работает :
.mkdir somearchive
tar xvfz somearchive.tar.gz --strip 1 -C somearchive