Yanıtlar:
Bu durumda, 'standart giriş' anlamına gelir. tar
Bir 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ş -f
seçeneğin argümanıdır . -
Desteklenmeyen durumlarda , tar xvf /proc/self/fd/0
veya benzeri bir şey kullanmaktan tar xvf /dev/stdin
kaçı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/stdin
veya /dev/stdout
gerç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 bash
bir dosya adı bekliyor çoğu yerde kısa çizgi kullanabilirsiniz. Bu açık bir tamamlayıcı <| > IMHO
cat
kolları -
(manpage kontrol edin). Bir kabuk yerleşik sürümü cat
olabilir 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/stdin
veya 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 cat
ve diff
her 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
f
Bayrağı 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 gzip
belirtilerek girdiyi kendisinden geçirmesi söylenebilir z
:
tar xfz filename
- gzip
Açıkça aramana gerek yok .
tar
birinin z
seçeneği yoktur.
tar
sistemi, tarihsel nedenlerden dolayı ilk teyp sürücüsüne geçmiştir.
/dev/sa0
FreeBSD 9.0'da, /dev/rst0
NetBSD 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, /etc
varsayı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.
tar
varsayılan olarak ikinci teyp sürücüsüne derledim . :)
-
Komutun sonunda olması gerekmez. Örneğin:ls -l | diff - /old_ls_output.txt
.