Yanıtlar:
Bu durumda, 'standart giriş' anlamına gelir. tarBir dosya argümanı gerektiğinde ve bunun yerine stdin kullanmanız gerektiğinde bazı yazılımlar (örn. ) Tarafından kullanılır . Bu bir kabuk yapısı değildir ve kullandığınız programa bağlıdır. Şüpheniz varsa man sayfasını kontrol edin!
Bu örnekte, standart giriş -fseçeneğin argümanıdır . -Desteklenmeyen durumlarda , tar xvf /proc/self/fd/0veya benzeri bir şey kullanmaktan tar xvf /dev/stdinkaçınabilirsiniz (ikincisi, çeşitli birliklerde yaygın olarak desteklenir).
Evrensel olarak 'standart girdi' demek için buna güvenmeyin. Kabuk tarafından yorumlanmadığından, her program istediği gibi uğraşmakta özgürdür. Bazı durumlarda, standart çıktı ya da tamamen farklı bir şey var: üzerinde su'giriş kabuğu başlat' anlamına geliyor. Diğer durumlarda, hiç yorumlanmadı. Kas hafızası, adında epeyce dosya oluşturmamı sağladı, -çünkü programın bazı versiyonları kısa bir satırı anlamadı.
STDOUT, bağlama bağlı olarak da anlamına gelebilir .
/dev/stdinveya /dev/stdoutgerçekten bir giriş / çıkış akışı istiyorsanız, kullanılabilir. Bir akış olduğuna dikkat edin, bir dosyada arama yapmak isteyen programlar -(örn. Ffmpeg) ile olduğu gibi onunla düzgün çalışmayabilir
bash, kısa çizgi , kabuk tarafından yorumlanır. Bkz Gelişmiş Bash-Komut Kılavuzu - Bölüm 3. Özel Karakterler ardından "Stdin veya Stdout'a / dan yönlendirme" metin [tire] veya arayın. Kullanarak bashbir dosya adı bekliyor çoğu yerde kısa çizgi kullanabilirsiniz. Bu açık bir tamamlayıcı <| > IMHO
catkolları -(manpage kontrol edin). Bir kabuk yerleşik sürümü catolabilir veya olmayabilir, ancak bu kesinlikle kabuğun tamamı değildir. Ayrıca, eğer kabuk işlenirse -yankı diyebilir -ve başka bir şeye genişleyecektir. Bunun yerine, sadece bir çizgi ekoları ( /dev/stdinveya değil /proc/self/fd/0). Ve echo test > -sadece denilen bir dosya yaratır -, bu yüzden açıkça orada da işlemez. Oh, ve listelediğiniz sayfa kabuk tarafından işlendiğini söylemedi , onu kullanabileceğinizi catve diffher ikisinin de çizgileri açıkça anlayabildiğini söylüyor .
Bu durumda, -Linux kullandığınızı varsayarsak, aslında oldukça işe yaramaz:
GNU tar (Linux'taki sürüm), girişini standart girdiden varsayılan olarak kabul eder. Eğer yoksa değil bu davranışı istemek ve bir komut satırı argümanı olarak dosya adını geçmek istiyorum, o zaman bayrağını belirtmeniz gerekir f:
tar xf filename
Yani bu aynı
tar x < filename
Veya, giriş örneğinizdeki gibi gösteriliyorsa:
gzip -dc filename | tar x
fBayrağı burada belirtmek anlamlı değildir , ancak belirtildiğinden, -standart girişten okumak istediğimizi belirtmek için dosya adının verilmesi gerekir (diğer cevaba bakınız). Yani, tekrarlamak için, bu gereksiz ve biraz garip.
Ayrıca, yukarıdaki satır sadeleştirilebilir çünkü GNU tar'a bayrak gzipbelirtilerek girdiyi kendisinden geçirmesi söylenebilir z:
tar xfz filename
- gzipAçıkça aramana gerek yok .
tarbirinin zseçeneği yoktur.
tarsistemi, tarihsel nedenlerden dolayı ilk teyp sürücüsüne geçmiştir.
/dev/sa0FreeBSD 9.0'da, /dev/rst0NetBSD 6.0 ve OpenBSD 5.1'de). AIX 7.1 varsayılan olarak /dev/rmt0. MINIX3 varsayılan olarak /dev/sa0. (Her durumda en son işletim sistemi sürümünü kontrol ettim, bunlar “eski ana bilgisayarlar” değildir.) Solaris, /etcvarsayılan olarak bir teyp sürücüsüne varsayılan olduğunu düşündüğüm bir dosya aracılığıyla yapılandırılabilir . GNU katran, Schilling katran, OSX ve BusyBox varsayılan olarak stdin / stdout'a ayarlanır.
tarvarsayılan olarak ikinci teyp sürücüsüne derledim . :)
-Komutun sonunda olması gerekmez. Örneğin:ls -l | diff - /old_ls_output.txt.