Komutu çalıştırırken terminal çıktısını nasıl gizlerim?


62

11.10'da eclipse ve document viewer gibi komut satırlarından bazı programları başlattığımda, önemsiz gibi görünen bir bilgi yükü yayılıyor.

Ayrıca arka planda çalıştıklarında bazen üzerinde çalışmakta olduğum ve tahriş edici olan terminale çıktı vermeye devam ediyorlar.

Onlara sadece arka plandaki şeyleri başlatmalarını ve tutmalarını istiyorum. Sebep, bu programları GUI aracılığıyla başlatırsanız (örneğin bir simgeye çift tıklamak) bu mesajların bana hiç gösterilmemesidir, bu yüzden komut satırında onlara ihtiyacım yok.


Yanıtlar:


81

Konsolda bir şeyler yazmaktan kaçınabilirseniz, programdan çıktının nasıl oluşturulduğuna bağlıdır. Standart çıkışa geçirilirse, sadece yapılması yeterlidir

$ eclipse >/dev/null

ve hiçbir çıktı yapılmamalıdır.

Hata mesajlarını da gizlemek için:

$ eclipse >/dev/null 2>&1

Veya kısaca, basitçe:

$ eclipse &>/dev/null

Ancak, bunu bir şekilde farklı yaparlarsa, konsola yazmasını engellemek bir sorun olabilir.

Mümkünse MuffinStateWide tarafından verilen çözeltiyi kullanın.


2
eclipse 2&>1 >/dev/nullKurtulmak için bunu yapmak isteyebilirsin stderr. Varsayılan sadece yönlendirir stdout. Ve bunu yapmanın "farklı" bir yolu yoktur, hem stdout'u hem de stderr'i ağın içine silerseniz, çıktı olmaz.
TC1

@ TC1 Prensip olarak, bir program yeniden açılabilir / dev / tty olarak yazdırılabilir ve yazdırılabilir. Uygulamada, GUI programları bunu yapmaz.
Random832

@ Random832 Prensipte, bu stderr'i / dev / dsp'e ya da ekstra lulz için aplay'a bağlamanızı öneririm ... :) Ama haklısın, teoride yapılabilir, pratikte - muhtemelen en azından bunu yapan adama kaba bir e-posta yaz.
TC1

5
@ TC1 "2> & 1> / dev / null" stdout'u bit kovasına yönlendirir, ancak stderr yönlendirilmez. Siparişi tersine çevirip yapmanız gerekenler: "> / dev / null 2> & 1"
William Pursell

9
ayrıca sadece yapabilirsiniz: eclipse &> /dev/null. Bu, stdin ve stderr'i yönlendirme noktasına (bash'da) yakalar
warren

12

Bir komut ismini takma adlandıracak bir bash işlevi oluşturabilir ve istediğinizi elde etmek için bazı ekstra işlevler ekleyebilirsiniz.

Örneğin: diyelim ki gvimkomut satırından (bir GUI metin editörü) başlatmak istiyorsunuz .

şöyle bir fonksiyon yazabilirsin:

function gvim () {
    nohup gvim "$@" > /dev/null 2>&1 & disown
}

(bu işlevi her zaman yüklenecek şekilde bilgisayarınıza .bashrcveya .bash_aliasesdosyaya ekleyin )

Açıklama:

  • bu, gvimaynı zamanda adında bir bash işleviyle komutu diğer adlandıracaktır gvim(yani gvimbir bash isteminde yazdığınızda gvim, gerçek gvimkomutu çalıştırmak yerine işlevinizi çağıracaktır. İşleviniz daha sonra gerçek gvimkomutu çağırır (ve normal argümanlarını kabul eder). bazı ek özellikler:

    • stdout ve stderr komutunu yönlendirir /dev/null(terminale giden çıkışı bastırır)
    • &komutu arka planda çalıştırmak için kullanır (böylece kabuğunuz engellenmez)
    • disownarka plan işini kabuktan kaldırmak için kullanır (bu nedenle aktif işler listesinde görünmez)
    • nohupişlemi terminalden ayırmak için kullanır (böylece kabuk oturumunuzu sonlandırabilir veya işlemi öldürmeden terminalinizi kapatabilirsiniz)

btw, bence bu @Misery
Corey Goldberg

6

--help komut anahtarı olarak eklemeyi deneyin ve "sessiz" ifadesini arayın, bu çıktının bastırılması ya da GUI'den başlatılması gerekir. ve anahtarla başlatmak veya komut dosyası ile bastırmak için bir yol bulmak

şahsen ben bu çıktıyı almak için cli'den başlattım, bu yüzden tüm GUI uygulamaları için mümkün olduğundan emin değilim.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.