Ketika mencoba menginstal dropbox dari baris perintah, saya membaca perintah
cd ~ && wget -O - "https://www.dropbox.com/download?plat=lnx.x86_64" | tar xzf -
apa yang dimaksud di -
sini apakah itu direktori sebelumnya?
command-line
tar
Aljabar
sumber
sumber
f -
. Ini mungkin membuat menemukan jawabannya di halaman manual sedikit lebih mudah.wget
dantar
. Dengan begitu, masing-masing pengembang dapat meningkatkan dokumentasi mereka sehingga pengguna di masa depan tidak tersandung masalah yang sama lagi. Dengan kata lain: jadilah pahlawan dan jadikan dunia tempat yang lebih baik!$TAPE
diatur.Jawaban:
Beberapa perintah menerima
-
menggantikan nama file, baik:-
argumenwget
setelah-O
melakukan.-
dilontarkantar
setelah argumenxzf
.Perintah yang Anda perlihatkan mengunduh file arsip dengan
wget
dan membukanyatar
. Untuk mencapai hal ini, output dariwget
yaitu pipa (|
) ke input daritar
. Inilah sebabnya mengapawget
menulis ke output standar, bukan file dantar
membaca dari input standar, bukan file.sumber
-
. . Jadi jika-
operan untuk "opsi file" dan memiliki arti khusus, maka itu harus dari stdin / stdout. Program ini bebas untuk tidak diperlakukan sebagai kasus khusus dan hanya mencari file-
-
)-
secara khusus sama sekali, memperlakukannya sebagai nama file literal. Satu-satunya cara untuk menentang pedoman adalah dengan memperlakukan-
secara khusus tetapi dengan makna lain dari yang disarankan oleh pedoman tersebut.Itu hanya nama file yang ditafsirkan oleh banyak program Unix sebagai "alih-alih membuka file, membaca dari
stdin
(atau menulis kestdout
)."Itu berarti membaca dari input yang dialirkan ke program; dalam kasus Anda, itulah output dari wget.
sumber
./-
jika Anda benar - benar ingin membuka file bernama-
.stdin
adalah deskriptor file, dan-
adalah nama yang Anda berikan untuk menggunakannya. Tapi itu bukan nama file dari perspektif OS. Hanya dari perspektif pengguna./dev/stdin
hanyalah nama file kenyamanan yang ditawarkan oleh beberapa fasilitas kernel. Biasanya tidak ada yangfopen("/dev/stdin", "r")
terjadi di mana pun ketika Anda menulis sebuah program yang memilih untuk menggunakan stdin; Anda langsung saja menggunakanextern FILE* stdin
header libc yang disediakan untuk Anda; omong-omong, itu adalah deskriptor file integer0
.The
-
argumen untuktar
menetapkan bahwa arsip harus dibaca daristdin
bukan file. Dari manual tar GNU :Perintah lain memiliki perilaku yang sama, dan itu ditentukan oleh standar POSIX.1-2017 :
sumber