Het Gebruik van de ja-Commando op een Linux

0
333

De ja-opdracht lijkt te simpel om van praktisch nut, maar in deze tutorial laten we je de toepassing en hoe om te profiteren van de opgekropte positiviteit in Linux en macOS.

De Opdracht ja

De ja-opdracht is een van de eenvoudigste commando ‘ s in Linux en andere Unix-achtige besturingssystemen, zoals mac os-versie. En door de eenvoudige, bedoelen we eenvoudig in het gebruik en de initiële implementatie. De bron code voor de originele versie uitgebracht in Systeem 7 Unix en geschreven door Ken Thompson—bedraagt slechts zes regels code.

Maar niet het af te schrijven voor een kleine simpele opdracht. Het kan worden gebruikt in een aantal interessante en nuttige manieren.

Wat Doet ja dan Doen?

Gebruikt zonder een opdracht regel parameters, de ja-commando gedraagt zich alsof u in te typen “y” in en druk op Enter, over en over (en over en weer. Heel snel. En zal zij doen totdat u drukt op Ctrl+C om te onderbreken.

ja

In feite, ja kan worden gebruikt om herhaaldelijk te genereren op een bericht dat u kiest. Typ gewoon ja, een spatie, de tekenreeks die u wilt gebruiken, en druk vervolgens op Enter. Dit is vaak de oorzaak van ja genereert een output stream van “ja” of “nee” snaren.

ja ja

ja alles wat je maar wilt

Maar Wat Is Dat?

De output van yes kan worden doorgesluisd naar andere programma ‘ s of scripts.

Klinkt dit bekend? Het starten van een lang proces dat wordt uitgevoerd en stap weg, waardoor het uit te voeren. Wanneer u terugkeert naar uw computer, het proces is nog niet voltooid. In uw afwezigheid, het gevraagd heeft u een vraag en is zat te wachten voor een “ja” of “nee” antwoord.

Als je van tevoren weet dat al uw antwoorden zullen worden positieve (“ja” of “y”) of negatief (“nee” of “n”) kunt u ja om de reacties voor je. Uw lange proces zal uitvoeren tot en met de realisatie zonder toezicht met ja verstrekken van de antwoorden op de vragen van het proces vraagt.

Met behulp ja Met Scripts

Kijk op de volgende Bash shell script. (We moeten bedenken dat dit een onderdeel van een veel groter script dat zal een aanzienlijke hoeveelheid tijd in te voeren.)

#!/bin/bash

# …
# in het midden van een lang script
# het verkrijgen van een reactie van de gebruiker
# …

echo “Bent u tevreden om verder te gaan? [y,n]”
lees ingang

# hebben we een input waarde?
if [ “$input” == “” ]; then

echo “er Niets is ingevoerd door de gebruiker”

# was het een y of een ja?
elif [[ “$input” == “y” ]] || [[ “$input” == “yes” ]]; then

echo “een Positieve reactie: $input”

# de behandeling iets anders als een negatieve reactie
anders

echo “een negatieve reactie van: $input”

fi

Dit script stelt een vraag en wacht op een reactie. De logica van de stroming binnen het script wordt besloten door de input van de gebruiker.

  • Een “ja” of “y” geeft een positieve reactie.
  • Een andere ingang wordt beschouwd als een negatieve reactie.
  • Druk op Enter zonder input tekst doet niets.

Om dit te testen, het script kopiëren naar een bestand en opslaan als long_script.sh. Chmod gebruiken om het uitvoerbare bestand.

chmod +x long_script.sh

Uitvoeren van het script met de volgende opdracht. Probeer het verstrekken van “ja”, “y”, en iets anders als invoer, met inbegrip van het indrukken van Enter met geen tekst invoeren.

./long_script.sh

Om ja te verstrekken over onze reactie op het script van de vraag, de pijp van de output van het ja aan het script.

ja | ./long_script.sh

Sommige scripts zijn meer rigide in hun eisen en accepteren alleen de volledige woord “ja” als een positieve reactie. U kunt “ja” als parameter in op ja als volgt:

ja ja | ./long_script.sh

Niet ja Zeggen Zonder na te Denken Het Door

U moet er zeker van zijn dat de input die u gaat voeren in het script of programma is zeker geven u de resultaten die u verwacht. In staat zijn om die beslissing te maken, moet u weten wat de vragen zijn en wat uw antwoorden moeten worden.

De logica in het script, de opdracht of het programma mogelijk niet overeen met uw verwachtingen. In ons voorbeeld script, de vraag zou kunnen zijn “wil je stoppen? [y,n].” Als dat al het geval is, een negatieve reactie zou hebben toegestaan het script verder te gaan.

U moet vertrouwd zijn met het script, de opdracht of het programma voordat u vrolijk pijp ja.

Met behulp ja Met Opdrachten

In zijn kinderschoenen, ja zou worden gebruikt in combinatie met andere Linux-commando ‘ s. Sindsdien is het meeste van die andere Linux commando ‘ s hebben hun eigen manier van het runnen zonder menselijke interactie. ja is het niet langer nodig om dat te bereiken.

Laten we de Ubuntu package manager ‘ apt-get als een voorbeeld. Om een toepassing te installeren zonder druk op “y” halverwege de installatie, ja zou het zijn als volgt gebruikt:

ja | sudo apt-get install fortune-mod

Hetzelfde resultaat kan bereikt worden met de -y (stel ja) optie apt-get:

sudo apt-get -y install fortune-mod

U zult zien dat apt-get niet nog vragen zijn gebruikelijke “wilt u doorgaan? [Y/n]” – vraag. Het is gewoon aangenomen dat het antwoord zou zijn “ja.”

Op andere Linux-distributies, is de situatie hetzelfde. Op Fedora zou je dit soort package manager commando in één keer:

ja | yum install fortune-mod

De dnf package manager heeft vervangen yum en dnf heeft zijn eigen -y (stel ja) optie.

dnf -y install fortune-mod

Hetzelfde geldt voor cp, fsck en rm. Deze commando ‘ s hebben elk hun eigen -f (force) of y (ja stel) opties.

Zo lijkt het dat ja is gedegradeerd tot enkel te werken met scripts? Niet helemaal. Er zijn een paar trucjes in de oude hond nog.

Verdere ja Trucs

U kunt gebruik maken van ja, met een reeks van cijfers gegenereerd door seq om een lus te beheren van herhaalde acties.

Deze one-liner echo ‘ s van de gegenereerde cijfers op het terminal-venster en roept vervolgens slapen voor een tweede.

In plaats van gewoon een herhaling van de cijfers naar het terminal-venster, kunt u een andere opdracht of een script. Dat commando of script hoeft niet eens om het gebruik van de cijfers, en ze zijn er alleen om een kick-start van elke cyclus van de lus.

ja “$(seq 1 20)” | lees cijfer; do echo cijfer; sleep 1; done

Soms is het handig om een groot bestand te kunnen testen. Misschien wilt u oefenen met de zip commando, of wilt u om een groot bestand te testen FTP-uploads.

U kunt snel genereren van grote bestanden met ja. Alles wat u hoeft te doen is het geven van een lange reeks tekst om te werken met en omleiden naar een bestand. Vergis je niet; deze bestanden snel te groeien. Klaar om druk op Ctrl+C binnen een paar seconden.

ja lange lijn van betekenisloze tekst bestand padding > test.txt
ls -lh test.txt
wc test.txt

Het gegenereerde bestand hier duurde ongeveer vijf seconden op de test machine gebruikt voor het onderzoek in dit artikel. ls meldt dat het is 557 Mb in grootte, en een toilet en vertel ons er 12,4 miljoen lijnen.

We kunnen het beperken van de grootte van het bestand, waaronder het hoofd in onze opdracht. Wij vertellen hoeveel regels op te nemen in het bestand. De -50 betekent hoofd zal laten slechts 50 lijnen door naar de test.txt -bestand.

ja lange lijn van betekenisloze tekst bestand padding | hoofd -50 > test.txt

Zodra er 50 lijnen in de test.txt bestand, wordt het proces gestopt. U hoeft niet te gebruiken op Ctrl+C. Het gaat om een sierlijke stoppen op eigen initiatief.

wc rapporten die er zijn precies 50 lijnen in het bestand, 400 woorden en het is 2350 bytes in grootte.

Ook al is het nog steeds handig voor het voeden van de reacties in de lange-uitvoeren van scripts (en een paar andere trucs), de ja-commando is niet van plan om een deel van uw dagelijkse toolkit van opdrachten. Maar wanneer je het nodig hebt, je vindt het is de eenvoud zelf—en dat allemaal in zes lijnen van de gouden code.