これはマイコンピュータにファイルとして保存されますが、先生も自分のコンピュータにコンパイルする必要があります。これまでのコードです。 3つのファイルをTARファイルに圧縮しようとしています。
#!/bin/bash
dd if=/dev/zero of=file.txt bs=1701KB count=1
dd if=/dev/zero of=filee.txt bs=1780KB count=1
dd if=/dev/zero of=fileee.txt bs=1800KB count=1
echo 'i dont really care at all about any of this' >> file.txt
echo 'just trying things out for fun' >> filee.txt
echo 'this is really boring i dont like it' >> fileee.txt
tar -czvf archive.tar.gz /home/melwhiteastonia/file.txt /home/melwhiteastonia/filee.txt /home/melwhiteastonia/fileee.txt
gzip -l archive.tar.gz
答え1
-C
オプションを使用してtar
関連する作業ディレクトリに変更し、ファイル名を指定します。
tar -C /home/melwhitesastonia -cvzf archive.tar.gz file.txt filee.txt fileee.txt
$PWD/archive.tar.gz
アーカイブを同じディレクトリに配置したくない場合は、アーカイブへの絶対パス(たとえば)を指定する必要があります。また、-z
tarのフラグはすでにそうしているので、gzipで圧縮する必要はないことに注意してください。
また、ファイルをアーカイブのルートに直接配置するのではなく、適切な名前のディレクトリにファイルを配置するのが慣例的であり、ユーザーにとっては優れています。ファイルの代わりにディレクトリ名を指定し、オプションからディレクトリコンポーネントを削除するだけです-C
。
答え2
引数を使用すると、--transform
次の操作を実行できます。
tar -czv --transform 's:home/melwhiteastonia/::g' -f archive.tar.gz \
/home/melwhiteastonia/file.txt \
/home/melwhiteastonia/filee.txt \
/home/melwhiteastonia/fileee.txt
正規表現はとにかく先行が削除されるhome/melwhiteastonia/
からです。tar
/