Я хотел бы использовать stdin/stdout в одной строке, чтобы отобразить версию из файла в архиве .tar.bz2, не затрагивая существующий архив и не оставляя никаких временных файлов. Файл содержит только одну строку, содержащую версию.
Эти команды работают, но они оставляют временные файлы:
cp /storage/archive.tar.bz2 /tmp/
bunzip2 /tmp/archive.tar.bz2
tar -C /tmp -xvf /tmp/archive.tar dir1/dir2/file
cat /tmp/dir1/dir2/file | grep version
Используемая версия версии busybox имеет ограниченный набор команд:
# bunzip2 --help
BusyBox v1.23.2 (2017-08-22 01:34:50 UTC) multi-call binary.
Usage: bunzip2 [-cf] [FILE]...
Decompress FILEs (or stdin)
-c Write to stdout
-f Force
# tar -h
BusyBox v1.23.2 (2017-08-22 01:34:50 UTC) multi-call binary.
Usage: tar -[cxtzhvO] [-X FILE] [-T FILE] [-f TARFILE] [-C DIR] [FILE]...
Create, extract, or list files from a tar file
Operation:
c Create
x Extract
t List
f Name of TARFILE ('-' for stdin/out)
C Change to DIR before operation
v Verbose
z (De)compress using gzip
O Extract to stdout
h Follow symlinks
X File with names to exclude
T File with names to include