no.phhsnews.com


no.phhsnews.com / Hvordan kjører du en kommando i bakgrunnen uten utgang med mindre det er en feil?

Hvordan kjører du en kommando i bakgrunnen uten utgang med mindre det er en feil?


Hvis du er en travel person, så er det siste du trenger å bli plaget med en stor antall "ubrukelige" varsler, så hvordan stopper du tingene ned? Dagens SuperUser Q & A-post har noen gode svar for å hjelpe en leser til å stille ned mengden av utdata.

Dagens spørsmål og svar-sesjon kommer til oss med høflighet av SuperUser-en underavdeling av Stack Exchange, en fellesskapsdrevet gruppe av Q & A-nettsteder.

Spørsmålet

SuperUser-leseren Xster vil vite hvordan man kjører en kommando i bakgrunnen uten utdata med mindre det er en feil:

Hvordan undertrykker du en kommandos utgang, men viser den om kommandoen er utgangskoder en feil?

Hvordan får du en kommando til å kjøre i bakgrunnen uten utdata med mindre det er en feil?

Svaret

SuperUser-bidragsytere Bob og Maximillian Laumeister har svaret for oss. Først opp, Bob:

Dessverre er antagelsen om at stderr bare brukes til feilutgang, ikke alltid korrekt. I stedet er stderr ofte brukt for alle interaktive utdata og diagnostikk (dvs. utgang som er beregnet for brukeren å lese i en interaktiv spørring). (1) wget og dd er kjente eksempler.

Noen kommandoer vil gi et flagg (dvs. -quiet eller -silent ) for å undertrykke ikke-feilutgang. Les deres mantsider for å se om en eksisterer.

En annen konvensjon som holder oftere er utgangskode , et program returnerer en utgangskode når den utgår. Vanligvis (2) indikerer en utgangskode på 0 suksess, og noen annen utgangskode indikerer en feil.

Med bash kan du få avslutningskode for den siste kommandoen fra variabelen $? . I fisk , bruk $ status variabelen. Du kan røre stderr til en midlertidig fil og bare skrive ut den hvis det oppstår en feil. For eksempel ( fisk ):

Du kan også bruke noen snarveier hvis du ikke kjeder kommandoer:

Eller:

Du kan også røre stdout til det samme buffer ved bruk av 2> & 1> / tmp / outputbuffer .

( Merk: Jeg vet egentlig ikke fisk , så jeg tilpasser konseptet til Du kan også bruke mktemp for å generere en unik midlertidig fil. Kjør den og ta opp filnavnet i en variabel.)

Hvis du må kjøre alt i bakgrunnen av et skall som du også bruker interaktivt på samme tid, da er det bedre å skrive et skript for å håndtere utdataene som skjuler og kjører det skriptet i bakgrunnen med standardteknikker ( fisk ). Heck, du kan sette noe som følgende funksjon i ~ / .config / fish / config.fish :

Ring med run-silent somecommand & (der den etterfølgende & får det til å kjøre i bakgrunnen)

Merk at dette vil svelge den opprinnelige utgangskoden, og vil dumpe både stdout og stderr i tilfelle en svikt. Du kan tilpasse det etter behov.

(1) Det er ingen garanti for at feilutgangen ikke vises på stdout , noen programmer vil dumpe alle utdataene der!

(2) Dessverre er dette fortsatt ikke alltid tilfelle. Utgangskoden er helt kontrollert av programmet, og noen vil indikere noen suksessforhold med nullutganger. Igjen, sjekk håndboken.

Etterfulgt av svaret fra Maximillian Laumeister:

Unix-verktøy sender generelle meldinger til stdout og feilmeldinger til stderr , så hvis vi bare Vil du se feilmeldinger, vil det være tilstrekkelig å undertrykke stdout slik at bare stderr får utgang til konsollen.

Måten å gjøre dette på (i begge bash og fisk ) er å legge til > / dev / null til kommandoen. Disse rørene stdout til ingenting, men stderr (med feilmeldingene dine) kommer frem til konsollen.

Så for eksempel:

Kommandoen ekko 1 > / dev / null skriver ingenting, fordi det normale Stdout -utgangen er undertrykt, og ingenting ble skrevet til stderr .

Kommandoen mannen doesnotexist> / dev / null skriver en feilmelding fordi mann skriver feilmeldingen sin til stderr .


Har du noe å legge til forklaringen? Lyder av i kommentarene. Vil du lese flere svar fra andre tech-savvy Stack Exchange-brukere? Se hele diskusjonstråden her.


Slik installerer du Office 2013 med Office 365

Slik installerer du Office 2013 med Office 365

Den nylig utgivelsen av Office 2016 legger til noen nyttige nye funksjoner og forbedringer, og er nå standardversjonen installert som en del av Office 365. Men hvis du vil installere Office 2013 i stedet for eller på en annen maskin, det gjøres enkelt. Logg inn på Office 365-kontoen din ved å gå til https://www.

(how-to)

Hva du må gjøre når du glemmer Wi-Fi-passordet ditt

Hva du må gjøre når du glemmer Wi-Fi-passordet ditt

Du har kanskje feilplassert et Wi-Fi-passord, men den bærbare datamaskinen husker sikkert det hvis du har koblet deg til det siste. Hvis ikke, kan du alltid ta tak i passordet fra ruteren selv eller tilbakestille Wi-Fi-passordet og sette inn en ny. Disse triksene lar deg gjenopprette passordet fra ethvert nettverk som den bærbare datamaskinen kan koble til.

(how-to)