sv.phhsnews.com


sv.phhsnews.com / Hur kör man ett kommando i bakgrunden utan någon utmatning, såvida det inte finns ett fel?

Hur kör man ett kommando i bakgrunden utan någon utmatning, såvida det inte finns ett fel?


Om du är en upptagen person, måste du vara störd med en stor sak mängd "värdelösa" anmälningar, så hur slår du saker ner? Dagens SuperUser Q & A-inlägg har några bra svar för att hjälpa en läsare att sänka mängden produktion.

Dagens Frågor och svar-session kommer till vårt tillstånd av SuperUser-en indelning av Stack Exchange, en community-driven gruppering av Q & A-webbplatser.

Frågan

SuperUser-läsare Xster vill veta hur man kör ett kommando i bakgrunden utan utdata om inte ett fel finns:

Hur undertrycker du ett kommandos utdata, men visar det om kommandos exitkoder ett fel?

Hur får du ett kommando att springa i bakgrunden utan utdata om inget fel finns?

Svaret

SuperUser-bidragsgivare Bob och Maximillian Laumeister har svaret för oss. Först upp, Bob:

Tyvärr är antagandet att stderr endast används för felutgång, inte alltid korrekt. (9)> wget och dd är välkända exempel. Vissa kommandon kommer att ge en flagga (dvs. -quiet

eller -silent ) för att undertrycka icke-felutgång. Läs deras mans sidor för att se om en existerar. En annan konvention som rymmer oftare är exit-kod

, ett program returnerar en exit-kod när den går ut. Vanligen (2) indikerar en exitkod på 0 framgång och någon annan utmatningskod indikerar ett fel. Med bash

kan du få utgångskod för det sista kommandot från variabeln $? . I fisk använder du variabeln $ status . Du kan pipa stderr till en temporär fil och skriva ut det endast om ett fel uppstår. Till exempel ( fisk ): Du kan också använda några genvägar om du inte anknyter kommandon: Eller:

Du kan också röra

stdout

till samma buffert med 2> & 1> / tmp / outputbuffer . ( Obs:

Jag vet faktiskt inte fisk , så jag anpassar konceptet till vad jag kan hitta i dokumentationen. Syntaxen kan vara lite fel. Du kan också använda mktemp för att skapa en unik temporär fil. Kör den och spela in filnamnet i en variabel.) Om du måste köra hela saken i bakgrunden av ett skal som du också använder interaktivt samtidigt, då är det bättre att du skriver ett skript för att hantera utmatningen som döljer och kör det skriptet i bakgrunden med standardteknikerna ( fisk

). Heck, du kan sätta något som följande funktion i ~ / .config / fish / config.fish : Ring med Run-Silent Somecommand &

(där efterföljande & får det att springa i bakgrunden) Observera att detta kommer att svälja den ursprungliga exitkoden och dumpar både stdout

och stderr om en fel. (1) Det finns ingen garanti för att felutgången inte kommer att visas på

stdout , vissa program kommer att dumpa all utdata där! (2) Tyvärr är det fortfarande inte alltid fallet. Utgångskoden styrs helt av programmet och vissa kommer att indikera några framgångsbetingelser med utgångar utan noll.

Följande svar från Maximillian Laumeister: Unix-verktyg skickar allmänna meddelanden till

stdout

och felmeddelanden till stderr , så om vi bara Vill du se felmeddelanden, kommer det att vara tillräckligt för att undertrycka stdout så att endast stderr kommer till konsolen. Sättet att göra detta (i både bash

och fisk ) är att lägga till > / dev / null till kommandot. Dessa piper stdout till intet, men stderr (med dina felmeddelanden) kommer fortfarande till konsolen. Så till exempel: Kommandot

Echo 1 > / dev / null

skriver ingenting, eftersom det normala Stdout -utmatningen är undertryckt och inget skrivs till stderr . Kommandot man gör inteotexist> / dev / null

skriver ett felmeddelande eftersom man skriver sitt felmeddelande till stderr . Har något att lägga till förklaringen? Ljud av i kommentarerna. Vill du läsa mer svar från andra tech-savvy Stack Exchange-användare? Kolla in den fullständiga diskussionsgängan här.


När Apple släppte priset på tredje generationens Apple TV till $ 69, rekommenderade vi fortfarande att hålla av tills Apple släppte en ny version. Den nya Apple TV-apparaten har kommit fram, så idag ska vi diskutera om vi nu tycker att det är dags att göra hoppet.

När Apple släppte priset på tredje generationens Apple TV till $ 69, rekommenderade vi fortfarande att hålla av tills Apple släppte en ny version. Den nya Apple TV-apparaten har kommit fram, så idag ska vi diskutera om vi nu tycker att det är dags att göra hoppet.

RELATED: Är det en bra tid att köpa en Apple TV? Dagens nya Apple TV, eller fjärde generationen, sportar en snygg A8-processor med 2 GB RAM och 32 GB eller 64 GB ombordlagring. Dessutom körs ett helt nytt operativsystem eller tvOS, som är baserat på den senaste versionen av IOS. Dessutom innehåller den nya Apple TV en helt ny touch-känslig fjärrkontroll och har Siri bakat in så att du kan leta upp information och utfärda kommandon med din röst.

(how-to)

Så här använder du Infoga-tangenten för att infoga kopierat innehåll i Word

Så här använder du Infoga-tangenten för att infoga kopierat innehåll i Word

I Word kan tangenten "Infoga" på tangentbordet användas för att växla mellan Infoga och överkrypa lägen. Det kan dock också användas som en genvägsknapp för att infoga kopierat eller klippt innehåll vid aktuell markörposition. För att ändra funktionen för "Infoga" -tangenten, öppna ett dokument i Word och klicka på "File" -fliken.

(how-to)