Kommandon

Från DannoWiki
Hoppa till navigeringHoppa till sök
 ⚠️ Den här artikeln är under utveckling. Information kan vara ofullständig eller ändras löpande.

Här tänker jag samla diverse one-liners som är bra.
Till dessa finns mängder av manualer & guider,
detta är mer tänkt som en kom i håg-lista.

find

För att hitta fil(er) som finns i den katalog du är i:

find apa*

Hitta fil(er) som är jpg-bilder:

find *.jpg

Hitta en fil som börjar på a:

find a*.jpg

För att hitta i någon underkatalog:

find ./ -name *.jpg

Skriv sökreultat i en textfil:

find ./ -name *.jpg >> filnamn.txt

Kombinera find med något annat kommando:

cp `find ./ -name *.jpg` ny_mapp/
rm -v `find ./ -name '*.jpg'`
scp `find ./ -name *.jpg` namn@server:/sökväg/
tar -cvf ny_mapp/fil.tar `find ./ -name *.jpg`

Flytta sökresultat till annan katalog:

mv `find ./ -name *.jpg` ny_mapp/

Man kan också kapsla in sökkriterierna
prova detta om du får felmeddelande:

find ./ -name 'a*jpg'

Leta efter filer över en viss storlek:

find ./ -size +100M
ls -lh `find ./ -size +100M` ← Detaljerad lista.

Notera att systemet gör skilnad på stora/små bokstäver.

Döpa om filer

Denna "oneliner" döper om filer från .JPG till .jpg:

for fil in *.JPG; do mv $fil ${fil/.JPG/.jpg}; done

Konstruktionen ${variabel/sökterm/ersättning} är ofta användbar när man döper om filer.

Ersätta mellanslag med underscore:

for fil in *; do mv "$fil" `echo $fil | sed -e 's/ /_/g'`; done

Ersätta å och ä med a, samt ö med o:

for fil in *; do mv "$fil" `echo $fil | sed -e 's/[åä]/a/g' -e 's/ö/o/g'`; done

Ett enda kommando för att ersätta mellanslag, samt åäö:

for fil in *; do mv "$fil" `echo $fil | sed -e 's/ /_/g' -e 's/[åä]/a/g' -e 's/ö/o/g'`; done

Lista filer till fil

Har du många filer och vill ha en lista av dem:

find -name *.tif|sed -e 's/\.\///g' -e 's/\//;/g'>>foo.txt

Find hittar alla *.tif (även i underkataloger)
Sed gör om katalogavgränsaren (/) till semikolon (;)

I en databas till exempel, kanske du måste ha katalognamnet före filnamnet.
Då kan programemt awk komma till pass:

find -name '*.jpg'|awk -F \/ '{sub (/\.\//,""); print $2";"$1}'

Detta utgår naturligtvis att du vet hur många underkataloger som det gäller.
I det här fallet bara en.

tar

Packa upp en tar-fil i annan katalog
Istället för att kopiera arkivet till en katalog, packa upp, och sedan deleta,
går det att kombinera cd och tar med operatorn && (AND)

cd /ny_mapp && tar -xvf ~/arkiv.tar

notera sökvägen till arkiv.tar, eftersom du redan cd:at till /ny_mapp

Döda processer

Om ett program slutar fungera, kan du i en terminal skriva:

ps -e | grep amarok

Detta ger information om alla amarokprogram som är öppna
Bland annat ProcessID (PID)
Du kan då döda detta genom att skriva:

kill PID (Där PID givetvis är nummret på processen du vill döda)

Jag noterade vid ett tillfälle att just amarok hade ett stort antal processer, men inget öppnades på skärmen.

kill $(ps -e | awk '$4~/amarok/ {print $1}')

Skapa kataloger

För att skapa en ny katalog:

mkdir tmp

Kataloger i kataloger:

mkdir -p tmp/a/b/c/d
-p betyder "skapa föräldrakataloger" (parent)

En ny katalog med flera andra kataloger i:

mkdir -p tmp/{a,b,c,d/{adam,bertil}}

Detta gör att o tmp/ skapas a,b,c och d
d/ kommer att innehålla katalogerna adam och bertil

Återställ deletade filer

Även om du tar bort en fil finns data tills vidare kvar på disken men dess positioner markeras som lediga,
fram till att systemet behöver ledigt diskutrymme....
Om en fil är deletad med rm
Stoppa allt arbete!!!.
Så att inte området med data skrivs över.

lsof | grep FilNamn

Svaret ser ut ungefär:

less      31305      danno    4r      REG        3,1   114301    9241226 /home/danno/FilNamn (deleted)

Filen finns alltså i /proc/31305/fd/ och heter 4
Hämta sedan filen:

cp /proc/31305/fd/4 FilNamn.saved

useradd

useradd -g GRUPP -m -s /bin/bash USERNAME
  • -g = primär grupp
  • -m = skapa användarens katalog i /home/
  • -s = Ange vilket skal
  • -G = Övrig grupp som användaren skall vara med i

Behöver du tilldela en användare sudo-rättigheter, lägger du till henne i gruppen admin.

sudo usermod -G admin -a USERNAME

Växeln -a (apend) används när en användare ska bli medlem i fler grupper.

Glöm inte att ge den nya användaren ett lösenord:

sudo passwd USERNAME

Justera skärmbilden

Starta X, öppna en terminal och skriv xvidtune
Nu kan du justera höjd/bredd, och position mm.

Bränna CD

Installera programmet cdrecord först. Heter numera cdrtools
Att skapa en .iso-fil av en cd/dvd:

dd if=/dev/hdc of=minfil.iso

Kan vara ide att först kolla hur stor filen är:

isoinfo -d -i /dev/cdrom

Den intressanta informationen är 'logical block size (bs)' och antal block 'Volume size is (count)'
Därefter kommandot:

dd if=/dev/cdrom bs=2048 count=1621536 of=filname.iso

Där /dev/hdc motsvarar den enhet där CD-läsaren finns.
Detta kan också göras med cat:

cat /dev/hdc > minfil.iso

Skapa iso-fil av filer på disk:

mkisofs -r -J -o /dir/isofilen.iso /dir/källmapp/fil

En god idé är att kolla om isofilen funkar innan bränning:

 sudo mount -t iso9660 -o loop minfil.iso testmapp/

En vanlig CD-image bränner du genom att skriva:

cdrecord -speed=8 -eject minFinaImage.iso

Där -speed=8 anger att du vill bränna i 8X och
-eject att cdrecord skall mata ut skivan när det är klart.
minFinaImage.iso är filnamnet på CD-image-filen.

Ibland behöver vi ange vilken enhet CD-brännaren finns på,
det anger vi med hjälp av flaggan -dev=0,0,0 (exempel), där 0,0,0 är enhetens nummer.
Du hittar din CD-brännare och enhetsnummer med flaggan -scanbus, exempel:

cdrecord -scanbus

Du kan också lägga till flera flaggor till cdrecord:

cdrecord -v -eject -speed=16 dev=/dev/hdc minFinaImage.iso

-v Betyder "verbouse", man får mycket mer information om vad som händer då den bränner,
och -eject som säger till programmet att kasta ut skivan då den har brännts klart.
dev=/dev/hdc för att specifiera brännaren ifall du har mer än en brännare.

Ljudcd

LjudCD's går naturligtvis också att skapa med cdrecord.
Dock måste(?) filerna vara i .wav-format, så de behöver kanske converteras först.
Programmet mpg321 fixar detta:

mpg321 --wav foo.wav foo.mp3

Oftast har man kanske ett antal låtar att bränna på musikskivan,
en ide kan då vara att göra ett litet script som konverterar alla filer i katalogen:

#!/bin/bash
#

FILES="*.mp3"
for i in $FILES
do
  echo $i
  mpg321 --wav $i.wav $i
done

exit 0

eller som one-liner:

for i in *.mp3; do mpg321 --wav $i.wav $i; done

Detta kommer att ge wavfiler med namn som: foo.mp3.wav, och är alltså wav-filer.

Därefter kan man bränna ljudCD'n:

cdrecord -v -speed=1 -audio -pad -eject *.wav

Och sedan har man en ljudCD.
Som alltid när man gör något, är det en fördel att dubbelkolla!
Alltså: lyssna på wavfilerna så du är säker på att de fungerar.

Och som vanligt vid CD-bränning är det bättre att bränna med så låg hastighet som möjligt,
eftersom lasern hinner bränna "hårdare" när det inte går så fort.

Rippa en CD

cdparanoia -w -B

uniq

Låt säga att du har en textfil som innehåller artikelnummer.
Och att en del av dessa är dubletter.
Kommandot uniq + filnamn ger dig en lista på alla olika artikelnummer.
(eller egentligen rader, varför alltså artikelnumren i detta fall måste stå på varsin rad.)

Om du måste veta hur många av varje det finns, använder du uniq -c vilket betyder count.
Den nya listan kan du pipa till en annan textfil:

uniq -c fil.csv >> nyfil.txt

Se även man uniq för mer info.


iconv

Konverterar text från en teckenuppsättning till en annan.
Filer från DOS har CP850:
Exempel:

iconv -f CP850 -t UTF-8 infil >> utfil


pwgen

En passwordgenerator

sudo aptitude install pwgen
pwgen 20 -N 1
kommer att ge ett password som är 20 tecken långt.


B tar bort linkande tecken, som 1l O0 och så vidare
s secure, svårt att komma ihåg lösenord.
y använder specialtecken #¤%&/(