Bir başka olasılık kullanmaktır command
demote için exec
bir gelen özel gibi bir düz eski yerleşiğinin yerleşiğini:
alias shh='command exec >/dev/null 2>&1'
Şimdi şunları yapabilirsiniz:
(shh; call some process &)
Ben sadece command
işe yaramadı fark ettim zsh
(diğer kabuklarda olduğu gibi ) , ama işe yaramazsa bunun yerine yapabilirsiniz:
alias shh='eval "exec >/dev/null 2>&1"'
... her yerde çalışmalı.
Aslında, şunları da yapabilirsiniz:
alias shh='command exec >"${O:-/dev/null}" 2>&1'
Böylece şunları yapabilirsiniz:
O=./logfile; (shh;echo can anyone hear &)
O=; (shh; echo this\? &)
cat ./logfile
ÇIKTI
can anyone hear
@ Vinc17 ile bir yorum tartışmasının ardından, bir GUI uygulamasının konsol çıktısının neredeyse tümünün genellikle X
'tty - konsolu için tasarlandığını belirtmek gerekir. Bir dosyayı bir X
uygulamadan çalıştırdığınızda, X
.desktop
oluşturduğu çıktı ilk olarak X
başlattığınız her tür tty'nin sanal terminaline yönlendirilir X
. İle bu tty numarasını ele alabilirim $XDG_VTNR
.
Garip bir şekilde - ve belki de kullanmaya yeni başladığım için startx
- artık yazamıyorum /dev/tty$XDG_VTNR
. Bu aynı zamanda (daha muhtemel olduğunu düşündüğüm gibi)Xorg
v1.16 ile uygulanan ve kök ayrıcalıkları systemd
yerine bir kullanıcı oturumu altında çalışmasına izin veren çok yeni ve köklü değişiklikle ilgili bir şey olabilir .
Yine de yapabilirim:
alias gui='command exec >/dev/tty$((1+$XDG_VTNR)) 2>&1'
(gui; some x app &)
Şimdi tüm some x app
konsol çıkışı /dev/tty$((1+$XDG_VTNR))
benim xterm
pty yerine yönlendiriliyor . Bunun gibi herhangi bir zamanda son sayfasını alabilirsiniz:
fmt </dev/vcs$((1+$XDG_VTNR))
Bazı sanal terminalleri çıktıyı yine de günlüğe ayırmak muhtemelen en iyi uygulamadır. /dev/console
genel olarak bunun için ayrılmıştır, ancak buna chown
açıkça yazmanız için gerekli olanı yapmamayı tercih edebilirsiniz . printk
Temelde baskı yapan /dev/console
- ve sanırım bu şekilde kullanabileceğiniz bir işleve sahip olabilirsiniz.
Bunu yapmanın başka bir yolu da bu tür amaçlara bir pty ayırmak olacaktır. Örneğin, bir xterm
pencereyi açık tutabilir tty
, oradan çalıştırıldığında çıktısını bir ortam değişkeninde kaydedebilir ve bu değeri gui
çıktı için hedef olarak kullanabilirsiniz . Bu şekilde, tüm günlükler ayrı bir günlük penceresine yönlendirilir ve daha sonra isterseniz kaydırabilirsiniz.
İlgileniyorsanız, bir zamanlar tarihle benzer bir şeyin nasıl yapılabileceği hakkında bir cevap yazdım bash
.