Tôi tìm thấy liên kết này về cách mở tgz trong một bước .
gzip -dc target.tar.gz | tar xf -
Nó nghĩa là gì?
Tôi tìm thấy liên kết này về cách mở tgz trong một bước .
gzip -dc target.tar.gz | tar xf -
Nó nghĩa là gì?
Câu trả lời:
Đó là một quy ước phổ biến để sử dụng -
trong một đối số tên tệp có nghĩa là stdin
hoặc stdout
; tar
tuân theo quy ước tương tự. Từ trang người đàn ông:
-f, --file [HOSTNAME:]F
use archive file or device F (default "-", meaning stdin/stdout)
-
có ý nghĩa gì với nó. Stdin / stdout là ý nghĩa phổ biến nhất, nhưng có những cái khác. Chẳng hạn, với một số phiên bản của env
nó có nghĩa là "bắt đầu với một môi trường trống rỗng".
Một quy ước khác là sử dụng '-' để chỉ sự kết thúc của các cờ và bắt đầu tên tệp. Hành vi đó được tích hợp sẵn trong getopt (3) trên RedHat 4, ít nhất. Tôi không thể tìm thấy trang man Red Hat sử dụng '-' để biểu thị phần cuối của các đối số, tất cả chúng dường như sử dụng '-' để làm điều đó. Trang người đàn ông awk có '-' trong bối cảnh đó, vì vậy có lẽ chỉ các lệnh Unix hoặc Solaris "gia truyền" cũ mới sử dụng '-' làm dấu phân cách - tên tệp.
--
báo hiệu sự kết thúc của các tùy chọn, vì vậy mọi thứ xuất hiện sau đó là một toán hạng. -
không phải là một lựa chọn, vì vậy nó và mọi thứ xuất hiện sau đó là một toán hạng. Đây là hành vi tiêu chuẩn . Đối với nhiều lệnh, chẳng hạn như tar
, toán hạng -
có nghĩa là đầu vào hoặc đầu ra tiêu chuẩn . Trên nhiều shell, set - -a
tương đương với set -- -a
, và trên một số shell Bourne cũ set - -a
là hình thức duy nhất được chấp nhận, nhưng đây là một ngoại lệ với tích set
hợp sẵn.
--
để tách các tùy chọn khỏi các đối số.
tar xfz target.tar.gz
và cho bziptar xfj target.tar.bz2