Nekromanti Bra Unix-kommandon och varför de är bra

Tony.Meijer

Ärketeknomantiker
Joined
14 Sep 2009
Messages
1,887
Location
Uppsala
Hejsan,
Jag diskuterade lite med solvebring om användbara Unix-kommandon och här kommer en lite lista, men först en liten primer hur man skriver kommandon i unix terminaler:

kommando 1 | kommando 2
detta kallas en pipe, när du skriver en pipe så körs det som kommer ur första kommandot som input till andra.

kommando 1 && kommando 2; kommando 3
And statement, om det första kommandot lyckas, så kör kommando 2, därefter kommando 3.

Okey, bra att kunna kommandon då:
ls listar alla filer i den lokala mappen, alternativt den map som man riktar den mot, genom: ls map/map2/map3

cat och tac printar innehållet i filer, tac gör det bara baklänges.

wc är en räknare, som med exempelvis flaggan -l räknar antalet rader som den får in, så cat fil | wc -l kommer att printa antalet rader i en fil.

grep är ett textsökningskommando, some med fördel används med pipe. Låt oss exempelvis säga att du vill veta förekommsten av antalet paragrafer med ordet hello i en fil så kan du göra följande: cat fil | grep hello | wc -l

ifconfig printar nätverksinformation.
sudo och su är två sidor av samma mynt, med sudo så gör du saker som root, med su så blir du en annan användare (om du inte specificerar användare så blir du root)

mv, cp och rm är också lite varianter på samma sak, det är att flytta (mv), kopiera (cp) och ta bort filer (rm). mv och cp används genom att skriva just mv eller cp följt av filen du vill flytta/kopiera och målet för slutfilen. rm följt av fil namnet tar bort filen, vill du ta bort en katalog så använd flaggan -rf

wget ger du en http address, och så laddar den ner filen. Använd flaggan --page-requisites för att få ner css'er, biler och sånt och -l n där n är en siffra för att följa länkar och ladda ner dem också. Strunta inte i n, för då försöker du nämligen att ladda ner internet.

at är ett verktyg för att köra kommandon vid ett senare tillfälle, exempel är at 15:35 wget http://www.rollspel.nu eller at now+25 wget http://www.rollspel.nu

touch skapar en tom fil alternativt gör ingenting om filen redan finns, används på följande sätt: touch test.txt
 

solvebring

Superhero
Joined
19 Mar 2004
Messages
13,027
Location
Fellingbro/Arboga
Schysst initiativ, Tony! :gremlaugh:
Hoppas en massa andra Unix-pulare som vet vad de gör kan bidra med mera. Jag är som sagt jävligt dålig på ett göra saker med kommandon, vilket jag skulle behöva upp för att bli riktigt bundis med Ubuntu.

Nåväl, lite fler exempel där du skriver ut en rad med ett komplett kommando vore najs. Så att man kan se hur t.ex. flera kommandon ska skrivas ihop för att raden blir rätt osv. Vet att jag många gånger då jag googlat efter hjälp fått krångla just för att det inte är tydligt vart ett -l ditt och en path datt ska ligga.

Nåväl, tack som tusan. Jag gillar verkligen sådana trådar.
 

wilper

Gubevars en rätt produktiv människa.
Joined
19 May 2000
Messages
8,077
Location
Nordnordost
screen

screen låter dig ha flera terminaler i en, och de stannar kvar när du loggar ut. När du kommer tillbaka är det bara att återuppta arbetet precis där du lämnade det.
 

solvebring

Superhero
Joined
19 Mar 2004
Messages
13,027
Location
Fellingbro/Arboga
Re: screen

wilper said:
screen låter dig ha flera terminaler i en, och de stannar kvar när du loggar ut. När du kommer tillbaka är det bara att återuppta arbetet precis där du lämnade det.
Soft, det hade jag verkligen behövt förut när jag körde en bot och en del programstarter och restarter via terminal. Nåväl, ska lägga det på minnet nu.

Är det bara "Screen" och inget mer - så sparar den allt automatiskt?
 

wilper

Gubevars en rätt produktiv människa.
Joined
19 May 2000
Messages
8,077
Location
Nordnordost
Re: screen

Nä, det är lite snårigare än så, jag föreslår att du läser den fina manualen när du faktiskt behöver kunskapen.
 

krank

Lättkränkt cancelkultur-kommunist
Joined
28 Dec 2002
Messages
36,184
Location
Rissne
Många kommandon har switches, eller "tillägg" kanske man kan kalla dem...

Till exempel, om jag skriver ls -t så sorteras filerna på... tid, har jag för mig.

Ofta kan man kombinera. Jag har arbetat in ordet "lasht" för ls, till exempel. "ls -lasht". Då får jag alla filer, inklusive datum och info om ägare och grupptillhörighet för filerna* och så sorteras det på tid.

Jag hade lika gärna kunnat använda "shalt" eller "ltash" eller nån annan variant**.

Ofta finns samma switch i en kort och en lång variant, där den långa är mer beskrivande och inte kan kombineras med andra switches. --all är till exempel långformen av -a.



Jag bidrar med ett par kommandon också:

top visar processer som körs, hur mycket minne etc de tar, och så vidare. Som aktivitetshanteraren i windows. Man avslutar med q. Det här är nog mitt vanligast använda kommando öht, tror jag. Använder det hela tiden för att kolla vad som pågår på servern. Har iofs lagt in htop nu, som ger lite extra info...

man ger hjälp till andra program. Vill man ha manualen till ls till exempel så skriver man "man ls".

killall använder jag för att döda processer jag identifierat med top, eller som jag av nån anledning vill döda. Skitenkelt: Kolla vad processen heter, sedan "killall processnamn" t.ex "killall firefox-bin" när firefox trilskas.



* Alltså, alla filer i ett unixsystem har en GRUPP och en ÄGARE. Sedan har ägaren, gruppen och "andra" olika uppsättningar läs/skrivrättigheter. Till exempel finns det filer som kan läsas av vem som helst, men bara skrivas till av sin användare eller sin grupp.

** Nu när jag tänker efter så är "shalt" ett mycket bättre ord. "Lasht" var ju bara "last" felstavat.
 

wilper

Gubevars en rätt produktiv människa.
Joined
19 May 2000
Messages
8,077
Location
Nordnordost
touch

Jag har inte använt touch så mycket själv, men eftersom Tony har tagit upp den, och har virrat till det lite så:

touch - uppdaterar tidsstämpeln på filen om den finns sedan tidigare, annars skapar den en fil och ger den aktuell tidsstämpel.

Lätt att testa i hemkatalogen:

ls -al

leta fram någon gammal fil

touch gamla-filens-namn

ls -al

Filen har nu dagens tid och datum.
 

Jarre

Swordsman
Joined
1 Mar 2002
Messages
619
Location
Linköping
find är ett annat bra kommando för att hitta filer. Syntaxen är "find sökväg|filnamn -flaggor", men är lite knölig och kan skrivas på lite olika sätt. Men två snabba exempel är till exempel "find ~/Dokument/apa* -type f" vilket letar efter filer som börjar på "apa" i Dokumentmappen i din Hemmamapp, och "find . -name ap?.txt" vilket söker igenom denna och alla underliggande mappar efter filer som börjar på "ap", fortsätter med ETT valfritt tecken och slutar på ".txt".

Jokertecknen fungerar som sådant att:
* betyder 0 eller flera tecken istället för *
? betyder exakt ett tecken istället för ?
[abc] betyder något av tecknen a, b eller c
[0-9] betyder någon siffra mellan 0 och 9

apropos är annars lite finurlig om man inte riktigt minns vad ett kommando är. Skriver man "apropos top" får man en massa förslag på kommandon som innehåller "top" eller liknande kommandon.

man är kommandot för att se manualsidan för ett kommando, till exempel "man apropos" eller "man ls". Väl där kan det vara bra att känna till att mellanslag är det samma som page down; page up och down fungerar också som vanligt, likaså piltangenterna. Skriver man ett "/" följt av en söksträng (exempelvis "/path") kommer texten sökas igenom söksträngen ("path"); "n" visar nästa förekomst av söksträngen och shift+n den föregående. Manualsidan stängs med "q".

Vill man inte ha hela manualen utan bara en kortversion, skriver man kommandot följt av flaggan "-help".

Vill man starta ett program men samtidigt ha kontroll över eller fortsätta jobba i kommandoskalet avslutar man kommandot med &, exempelvis "gedit &".

---

Edit:
ps är också användbart för att visa aktiva processer, vilket är effektivt om de inte drar processorkraft och därmed inte syns med top, till exempel. Använder man flaggorna "-aux" visas det mesta som är igång, med senaste process längst ner, alltså "ps -aux". Kör sedan kill och processid (PID) för den process som ska avslutas, för att stänga av den. Kill kan även förstärkas med en nummerflagga från 1 (?) till 9, där högre nummer är tyngre kill, till exempel "kill -9 1843" vilket lär döda process 1843 hur mycket den än trilskas! :gremsmile:
 

krank

Lättkränkt cancelkultur-kommunist
Joined
28 Dec 2002
Messages
36,184
Location
Rissne
Jarre said:
find är ett annat bra kommando för att hitta filer.
locate är ett annat, som jag upplever som ganska oknöigt.

Bortsett från att det använder en indexerad databas, så vill man hitta nåt man alldeles nyss lade in så måste man först manuellt uppdatera databasen via updatedb, som dessutom i sin tur måste köras av en superuser, så: det blir "sudo updatedb".


Ingen har skrivit sudo än. Jag vet att Solve redan har koll på sudo, men det kan vara bra att nämna. Står för "superuser do", dvs "gör som superanvändare". Det finns vissa grejer bara superanvändaren kan göra, men det är en dålig idé att vara inloggad som superanvändare - alltså kör man sudo framför de saker man vill göra som kräver såna rättigheter.
 

Jarre

Swordsman
Joined
1 Mar 2002
Messages
619
Location
Linköping
locate är ett bra alternativ till find, och man slipper syntaxen. Det ska jag köra mer på, tack. Man kan köra slocate också för att dölja systemfiler. Eller whereis för att visa var programfilerna ligger, exempelvis "whereis firefox", för att bara nämna några fler sökkommandon.

En annan grej som kan vara bra att komma ihåg är att pipe:a ett sökkommando eller fillistning till more, alltså "locate * | more". Får man en fantsiljon träffar, gäller det fortfarande att man kan återvända till prompten med "q".

more (eller less) går att använda för att titta på filinnehåll också, till exempel genom "more apa.txt" (eller "less apa.txt"). less sägs vara bättre/effektivare ("less is more" ...) men jag kan inte riktigt svara på vad som skiljer dem åt.

krank said:
Ingen har skrivit sudo än.
Jo, Tony, fast du skrev mer, så då vinner du. :gremwink:
 

krank

Lättkränkt cancelkultur-kommunist
Joined
28 Dec 2002
Messages
36,184
Location
Rissne
Jarre said:
Jo, Tony, fast du skrev mer, så då vinner du. :gremwink:
Bah, det såg jag inte. han fick väl fetstila som vettiga människor =)




Enligt wikipedia verkar skillnaden mellan less och more vara att less har mer funktionalitet... (det som nämns är väl "backwards scrolling", men jag har inte djupdykt)
 

Jarre

Swordsman
Joined
1 Mar 2002
Messages
619
Location
Linköping
krank said:
Enligt wikipedia verkar skillnaden mellan less och more vara att less har mer funktionalitet... (det som nämns är väl "backwards scrolling", men jag har inte djupdykt)
Jäpp, det stämmer, ser jag praktiskt. Det går uppenbarligen söka i dem också, precis som i manualen.
 

Eksem

Champion
Joined
19 Feb 2001
Messages
7,615
Location
Stockholm
Namngivningen av typ Less och More är ju typisk nördhumor från den tiden. More heter More för att den kunde göra mer än föregångaren, och Less heter Less, eftersom den kan mer än More, och som alla vet så: "Less is More".
 

Ulfgeir

Swashbuckler
Joined
6 Feb 2001
Messages
3,267
Location
Borås, Sverige
Texteditorerna "edlin" och "vi" är bra att kunna hantera då de brukar vara inkluderade i alla unix-varianter som standard och man inte alltid kommer åt något mer användarvänligt.

Observera dock att "vi" jobbar med kommandoläge och redigeringsläge, och den bygger liksom editorn "emacs" helt på användandet av snabbtangenter. Vet man inte hur man går ur dem, så skall man inte ens försöka gå in i dem. Jag menar det...

/Ulfgeir
 

krank

Lättkränkt cancelkultur-kommunist
Joined
28 Dec 2002
Messages
36,184
Location
Rissne
Eksem said:
Namngivningen av typ Less och More är ju typisk nördhumor från den tiden. More heter More för att den kunde göra mer än föregångaren, och Less heter Less, eftersom den kan mer än More, och som alla vet så: "Less is More".
Vilket också var vad Jarre skrev lite högre upp =)
 

krank

Lättkränkt cancelkultur-kommunist
Joined
28 Dec 2002
Messages
36,184
Location
Rissne
Ulfgeir said:
Texteditorerna "edlin" och "vi" är bra att kunna hantera då de brukar vara inkluderade i alla unix-varianter som standard och man inte alltid kommer åt något mer användarvänligt.

Observera dock att "vi" jobbar med kommandoläge och redigeringsläge, och den bygger liksom editorn "emacs" helt på användandet av snabbtangenter. Vet man inte hur man går ur dem, så skall man inte ens försöka gå in i dem. Jag menar det...

/Ulfgeir

I Linux brukar texteditorn nano finnas med; en fullt habil texteditor för oss som inte tycker att det är så kul med texteditorer man måste spendera ett par månader med att lära sig (vi/vim/emacs, jag kollar på er). Nano ligger mycket nära vanliga grafiska program t.ex Anteckningar och liknande i hur man navigerar i filerna etc.
 

Ram

Skev
Joined
11 May 2004
Messages
5,570
Location
Slätta
Lite mer om grep:
Om man vill söka efter en viss fras i ett helt filträd, men bara söka i en viss typ av filer så är kommandot: grep -ir --include=*.txt <fras>. -i betyder ignore case, ignorera stora och små bokstäver, något som linux som bekant är lite petig med och -r är rekursiv sökning.
 

Tony.Meijer

Ärketeknomantiker
Joined
14 Sep 2009
Messages
1,887
Location
Uppsala
history | awk '{print $2}' | awk 'BEGIN {FS="|"}{print $1}' | sort | uniq -c | sort -n | tail | sort -nr

Denna eminenta kommandoradsserie ger de tio mest använda kommandona i kommandorads-historiken. Dessa kan man sedan göra om till snabba alias.
 
Top