Kommandoprompten
Slackware.SE Wiki
[redigera] 8.2.1 Köra program
Det är mycket svårt att få något gjort utan att köra ett program, du kanske kan ställa upp din dator för att hålla upp en dörr, och några kommer att avge de mest älskvärda surrande ljudet när dom är på. Jag tror att vi alla kan var överrens om att det är inte en dörrstop datorn är gjord för att vara.
Så kom ihåg att nästan allt i Linux behandlas som en fil? Det är lika för program också. varje kommando du kör (som inte är inbyggt i skalet) tillhör en fil någonstans. Du kör ett program genom att skriva den fulla sökvägen till det.
Till exempel, kom ihåg att su kommandot från förra sektionen, det ligger faktiskt i /bin katalogen: /bin/su skulle köra det fint.
Så varför fungerar det med att bara skriva su? Efter allt, så sa du inte att det låg i /bin. Det kunde varit så enkelt att det låg i din /usr/local/share, eller hur? Hur visste den? Svaret på det ligger i PATH miljövariabler, de flesta skal har antingen PAT eller någoting väldigt likt PATH (sökväg). Det grundligen innehåller en lista av kataloger att leta efter progra du försöker att köra. Så när du körde su, så sökte skalet igenom sin lista av kataloger, och kontrollerade varenda en för en körbar fil som heter su som den kan köra, och den första den kom fram till körde den. Detta händer varje gång du kör ett program utan att skriva med den fulla sökvägen, om du får ett "command not found" meddelande, menas det bara att programmet du försökte att köra inte finns med i dina sökvägare. (självklart, skulle detta också vara sant om programmet inte fanns) Vi kommer att diskutera miljövariabler mer på djupet i sektion 8.3.1
Kom också ihåg att "." är en förkortning för nuvarande katalog, som om du skulle vara i /bin, skulle ./su fungera som en full sökväg.
8.2.2 Använda jokertecken
Nästan alla skal känner igen några tecken som substitut eller förkortning som menar att vad som helst går här. Såna tecken är begåvat kallat jokertecken, det mest vanliga är * och ?. Som uppgörelse matchar ? vilket enkelt tecken. till exempel, anta att du är i en katalog med tre filer: ex1.txt, ex2.txt, ext3.txt. Du vill kopiera alla dessa filer (använd kommandot cp som vi går igenom i sektion 10.5.1) till en annan katalog, låt oss säga /tmp. Vi skriver cp ex1.txt, ex2.txt ex3.txt /tmp men det är alldeles för mycket jobb. Det är mycket enklare att skriva cp?.txt /tmp, tecknet ? kommer att matcha tecknen 1, 2, och 3 och varje tecken kommer att behandlas i tur och ordning.
Vad är det du säger? Är det fortfarande för mycker arbete? Ja du har så rätt. Det är skrämmande, vi har antanga lagar som skyddar oss ifrån sånt. Turligt nog så har vi också *. Ar som vi redan angett, * matchar alla tecken, inklusive 0. Så om dessa tre filer var de enda i katalogen, skulle vi enklast ha sagt cp * /tmp och fått med alla filerna i ett swisch. Anta att det också ligger en fil som heter ex.txt och en hejaz.txt. Vi vill kopiera ex.txt men inte hejaz.txt, cp ex*.txe /tmp gör detta åt oss.
cp ex?.txt /tmp, skulle förstås endast kopiera våra andra tre filer, det är inget tecken i ex.txt som matchar ?, så den skulle ha lämnats kvar.
Ett annat vanligt jokertecken är paranteserna [ ]. Alla tecken innanför paranteserna kommer att vara ett substitut för [ ] för att finna matcher. Låter det förvirrande? Det är inte så tokigt. Anta för exempel att vi har en katalog som innehåller följande filer: Another common wildcard is the bracket pair [ ]. Any characters inside the brackets will be substituted in place of the [ ] to find matches. Sound confusing? It's not too bad. Suppose for instance, we have a directory containing the following 8 files: a1, a2, a3, a4, aA, aB, aC, och aD. vi vill endast hitta de filer som slutar med en siffra, [ ] kommer att göra detta åt oss:
% ls a[1-4] a1 a2 a3 a4
Men vad vi egentligen vill är bara a1, a2 och a4? i förra exemplet använde vi - för att dela värden mellan 1-4, vi kan också separera individuella entryn med kommatecken.
% ls a[1,2,4] a1 a2 a4
Jag vet vad du tänker nu, Men bokstäver då? Linux är ju tecken känsligt, vilket menas att a och A är olika tecken och är bara relaterade till varandra i vårt tänkande. Versaler kommer alltid före gemener, så A och B kommer före a och b. fortsätter med vårt tidigare exempel, om vi vill ha filerna a1 och A1, kan vi hitta dessa snabbt med [ ].
% ls [A,a]1 A1 a1
Notera, om vi hade haft ett bindestreck istället för ett komma, skulle vi fått ett felaktigt resultat.
% ls [A-a]1 A1 B1 C1 D1 a1
Du kan också kombinera bindestreck och komma i strängarna.
% ls [A,a-d] A1 a1 b1 c1 d1
8.2.3 Styrning av indata och utskrifter
(Här kommer något riktigt coolt.)
% ps > blargh
Vet du var det är? Det är jag som kör ps för att se vilkar processer som körs, ps tas upp i sektion 11.3. Det är inte den coola delen. Den coola delen är >blargh, vilket menas att ta uskriften från ps och skriv det till en fil som kallas blargh. Men vänta, det blir ännu coolare.
% ps | less
Den här tar uskriften från ps och styr den igenom less, så att jag kan scrolla igenom det i min takt.
% ps >> blargh
Det är den tredje mest använda omstyrningen, det gör samma sak som ">" förutom att ">>" bifogar utskrift från ps till filen blargh, om den finns, om inte som ">" kommer den att skapas
Det finns också en "<" operator, vilket menas att ta indata från följande, men det används inte så ofta.
% fromdos < dosfile.txt > unixfile.txt
Omstyrning blir rätt roligt när du börjar pilla med det:
% ps | tac >> blargh
Det här kör ps baklänges från raderna i sin uskrift, och bifogar dessa till filen blargh. Du ska stapla upp så många av dessa du vill, var bara uppmärksam på att komma ihåt att dom läses från vänster till höger.
Kolla bash(1) mansida för mer utförligt om omstyrning.
klart..
--Dartanjang 17 juli 2006 kl.16.00 (CEST)
