Apa artinya "-" sebagai argumen terhadap suatu perintah?

9

Saya menemukan tautan ini tentang cara membuka tgz dalam satu langkah .

gzip -dc target.tar.gz | tar xf -

Apa artinya '-'?

ripper234
sumber
1
Juga, sebagian besar versi tar sekarang mendukung gzip dan bzip secara asli. Untuk file tar gzip-ed tar xfz target.tar.gzdan untuk bziptar xfj target.tar.bz2
Akun Dihapus

Jawaban:

18

Ini adalah konvensi umum untuk digunakan -dalam argumen nama file yang berarti stdinatau stdout; tarmengikuti konvensi yang sama. Dari halaman manual:

   -f, --file [HOSTNAME:]F
          use archive file or device F (default "-", meaning stdin/stdout)
Michael Mrozek
sumber
1
Ini hanya sebuah konvensi; Anda perlu membaca halaman manual untuk perintah khusus untuk melihat apa -artinya. Stdin / stdout sejauh ini merupakan makna yang paling umum, tetapi ada yang lain. Misalnya, untuk beberapa versi envitu berarti "mulai dengan lingkungan kosong".
cjm
0

Konvensi lain adalah dengan menggunakan '-' untuk menunjukkan akhir flag, dan awal nama file. Perilaku itu terintegrasi dengan getopt (3) di RedHat 4, setidaknya. Saya tidak dapat menemukan halaman manual Red Hat yang menggunakan '-' untuk menunjukkan akhir argumen, mereka semua tampaknya menggunakan '-' untuk melakukan itu. Halaman manual awk memiliki '-' dalam konteks itu, jadi mungkin hanya perintah "heirloom" lama Unix atau Solaris menggunakan '-' sebagai argumen - pemisah nama file.

Bruce Ediger
sumber
3
--menandakan akhir dari opsi, jadi semua yang datang sesudahnya adalah operan. -bukan pilihan, jadi itu dan semua yang datang sesudahnya adalah operan. Ini adalah perilaku standar . Untuk banyak perintah, seperti tar, operan -berarti input atau output standar . Pada banyak shell, set - -asetara dengan set -- -a, dan pada beberapa shell Bourne lama set - -aadalah satu-satunya bentuk yang diterima, tapi ini pengecualian dengan setbuilt-in.
Gilles 'SANGAT berhenti menjadi jahat'
Program Solaris terutama mengikuti konvensi standar POSIX --untuk memisahkan opsi dari argumen.
alanc