Saturday, 22 September 2012

Nén, giải nén bằng command line trong Linux

UPDATE: list files in an archive
UPDATE: extract all archive type

Dù dùng command line khá nhiều nhưng chuyển hẳn sang thì vẫn chưa thể làm ngay và luôn được.
Sau đây là những câu lệnh giúp nén / giải nén các định dạng zip, tar, tar.gz, tar.bz2, tar.xz bằng dòng lệnh:

1. zip
+ Nén:
zip file.zip file1 file2 file3
Ví dụ:
~/Huffman%zip Huffman.zip *

+ Nén cả thư mục:
zip -r directory.zip directory_name

+ Giải nén: (phải tạo thư mục bạn sẽ giải nén vào )
unzip -d thu_muc file.zip
Ví dụ:
~/Huffman%unzip -d Huffman Huffman.zip

+ Danh sách:
unzip -l file.zip

2. tar
+ Nén:
tar cvf file.tar file1 file2 file3
VD:
~/Linux%tar cvf hehe.tar a.txt b.mp3

+ Giải nén:
tar xvf file.tar

+ Danh sách:
tar tf file.tar

3. tar.gz
+ Nén
tar czvf file.tar.gz file1 file2 file3
+ Giải nén
tar xzvf file.tar.gz
+ Danh sách:
tar tzf file.tar.gz

4. tar.bz2
Tương tự:
+ Nén:
tar cjvf file.tar.bz2 file1 file2 file3 ...
+ Giải nén:
tar xjvf file.tar.bz2
+ Danh sách:
tar tjf file.tar.bz2

5. tar.xz
+ Giải nén:
tar xvf file.tar.xz
chi tiết hơn về tar.xz http://www.familug.org/2013/08/xxxtarxz.html#more

Giải thích:
Khó nhớ quá không? không, dễ lắm:
chữ z dùng với gz, chữ j dùng với bz2. Thứ tự các chữ không quan trọng.

czvf : c = compress , v = verbose, f = file, z = gz
compress the file (czf) chữ v chỉ để hiển thị thông tin về các file đã nén thôi, không cần thiết.

tương tự giải nén cho tar.bz2
xjvf : x = extract, j = bz2

tar xzf hehe.tar.gz: extract the file

5. Jar
~/Linux%jar cfve Huffman.jar Huffman *.class
~/Linux%jar xfv Huffman.jar Huffman *.class

nén các file class thành 1 file jar chạy được (Java). Chữ e để chỉ entry - lối vào cho file này, tức file .class sẽ được chạy khi ta chạy file jar bằng lệnh : java -jar file.jar


PS: Giải nén nhiều loại archive
Đoạn script thêm vào đuôi file bashrc để giải nén mọi loại archive:
https://wiki.archlinux.org/index.php/Bash#Functions

Cách khác là cài gói unp
unp - unpack (almost) everything with one command
[hvn@hvnatvcc] ~ sudo apt-get install unp

MISC
kernel.org chính thức không dùng .bz2 nữa, thay vào đó là .xz
https://www.kernel.org/happy-new-year-and-good-bye-bzip2.html