InnehÄllsförteckning
Jag tycker att lĂ€ra sig ett datorsystem Ă€r som att lĂ€ra sig ett nytt frĂ€mmande sprĂ„k. Ăven om handledningsböcker och dokumentation Ă€r till stor hjĂ€lp, mĂ„ste du öva sjĂ€lv. För att hjĂ€lpa dig att komma igĂ„ng pĂ„ ett smidigt sĂ€tt tar jag upp nĂ„gra grundlĂ€ggande punkter.
Den kraftfulla utformningen av Debian GNU/Linux kommer frÄn operativsystemet Unix, dvs. ett operativsystem för flera anvÀndare och flera arbetsuppgifter. Du mÄste lÀra dig att dra nytta av kraften i dessa funktioner och likheter mellan Unix och GNU/Linux.
Var inte rÀdd för Unix-orienterade texter och förlita dig inte enbart pÄ GNU/Linux-texter, eftersom du dÄ gÄr miste om mycket anvÀndbar information.
|
Notera |
|---|---|
|
Om du har anvÀnt nÄgot Unix-liknande system ett tag med kommandoradsverktyg kÀnner du förmodligen till allt jag förklarar hÀr. AnvÀnd det hÀr som en verklighetskontroll och uppfrÀschning. |
NÀr du startar systemet visas en teckenbaserad inloggningsskÀrm om du inte
har installerat nÄgon GUI-miljö som
t.ex. skrivbordssystemet GNOME eller KDE. Anta att ditt vÀrdnamn Àr foo,
sÄ ser inloggningsprompten ut pÄ följande sÀtt.
Om du har installerat en GUI-miljö kan du fortfarande komma till den teckenbaserade inloggningsprompten med Ctrl-Alt-F3, och du kan Ă„tergĂ„ till GUI-miljön med Ctrl-Alt-F2 (se Avsnitt 1.1.6, âVirtuella konsolerâ nedan för mer information).
foo login:
Vid inloggningsprompten skriver du ditt anvÀndarnamn,
t.ex. pingvin, och trycker pÄ Enter-tangenten, sedan
skriver du ditt lösenord och trycker pÄ Enter-tangenten igen.
|
Notera |
|---|---|
|
Enligt Unix-traditionen Àr anvÀndarnamn och lösenord för Debian-systemet
skiftlÀgeskÀnsliga. AnvÀndarnamnet vÀljs vanligtvis endast frÄn gemener.
Det första anvÀndarkontot skapas vanligtvis under installationen.
Ytterligare anvÀndarkonton kan skapas med |
Systemet startar med det hÀlsningsmeddelande som finns lagrat i
"/etc/motd" (Message Of The Day) och visar en
kommandotolk.
Debian GNU/Linux 12 foo tty3 foo login: penguin Password: Linux foo 6.5.0-0.deb12.4-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.5.10-1~bpo12+1 (2023-11-23) x86_64 The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. Last login: Wed Dec 20 09:39:00 JST 2023 on tty3 foo:~$
Nu befinner du dig i skalet. Skalet tolkar dina kommandon.
Om du installerade en GUI-miljö under installationen visas den grafiska inloggningsskÀrmen nÀr du startar systemet. Du skriver in ditt anvÀndarnamn och ditt lösenord för att logga in pÄ det icke-privilegierade anvÀndarkontot. AnvÀnd fliken för att navigera mellan anvÀndarnamn och lösenord, eller anvÀnd musens primÀra klick.
Du kan fÄ skalprompten under GUI-miljö genom att starta ett
x-terminal-emulatorprogram som
gnome-terminal(1), rxvt(1) eller
xterm(1). Under GNOME-skrivbordsmiljön trycker du pÄ
SUPER-tangenten (Windows-tangenten) och skriver in "terminal" i sökprompten.
Under vissa andra skrivbordssystem (som fluxbox) kanske
det inte finns nÄgon uppenbar startpunkt för menyn. Om detta hÀnder kan du
prova att (höger)klicka pÄ bakgrunden pÄ skrivbordsskÀrmen och hoppas att en
meny dyker upp.
Kontot root kallas Àven superuser eller privilegierad anvÀndare. FrÄn det hÀr kontot kan du utföra följande systemadministrativa uppgifter.
LÀsa, skriva och ta bort alla filer pÄ systemet oavsett deras filbehörigheter
Ange filÀgarskap och behörigheter för alla filer pÄ systemet
Ange lösenordet för alla icke-privilegierade anvÀndare i systemet
Logga in pÄ alla konton utan deras lösenord
Den hÀr obegrÀnsade kraften i root-kontot krÀver att du Àr hÀnsynsfull och ansvarsfull nÀr du anvÀnder det.
|
Varning |
|---|---|
|
Dela aldrig med dig av root-lösenordet till andra. |
|
Notera |
|---|---|
|
FilrĂ€ttigheterna för en fil (inklusive maskinvaruenheter som CD-ROM etc. som bara Ă€r en annan fil för Debiansystemet) kan göra den oanvĂ€ndbar eller otillgĂ€nglig för anvĂ€ndare som inte Ă€r root. Ăven om anvĂ€ndningen av root-kontot Ă€r ett snabbt sĂ€tt att testa den hĂ€r typen av situation, bör den lösas genom korrekt instĂ€llning av filbehörigheter och anvĂ€ndarens gruppmedlemskap (se Avsnitt 1.2.3, âBehörigheter i filsystemetâ). |
HÀr följer nÄgra grundlÀggande metoder för att fÄ root shell-prompten genom att anvÀnda root-lösenordet.
Skriv root i den teckenbaserade inloggningsprompten.
Skriv "su -l" frÄn valfri anvÀndarprompt.
Detta bevarar inte den aktuella anvÀndarens miljö.
Skriv "su" frÄn vilken anvÀndarprompt som helst.
Detta bevarar en del av den aktuella anvÀndarens miljö.
Om skrivbordsmenyn inte startar GUI-verktyg för systemadministration
automatiskt med rÀtt behörighet kan du starta dem frÄn root shell-prompten i
en terminalemulator, t.ex. gnome-terminal(1),
rxvt(1) eller xterm(1). Se Avsnitt 1.1.4, âPrompten för root-grĂ€nssnittetâ och Avsnitt 7.9, âAnslutning till X-serverâ.
|
Varning |
|---|---|
|
Starta aldrig GUI-display/sessionshanteraren under root-kontot genom att
skriva Kör aldrig ett opÄlitligt GUI-program under X-fönstret nÀr kritisk information visas, eftersom det kan avlyssna din X-skÀrm. |
I Debians standardsystem finns det sex omkopplingsbara VT100-liknande teckenkonsoler tillgÀngliga för att
starta kommandoraden direkt pÄ Linux-vÀrden. Om du inte befinner dig i en
GUI-miljö kan du vÀxla mellan de virtuella konsolerna genom att trycka pÄ
vÀnster-Alt-tangenten och en av tangenterna
F1 â F6 samtidigt. Varje teckenkonsol
tillÄter oberoende inloggning till kontot och erbjuder fleranvÀndarmiljön.
Den hÀr fleranvÀndarmiljön Àr en fantastisk Unix-funktion och mycket
beroendeframkallande.
Om du befinner dig i GUI-miljön fÄr du tillgÄng till teckenkonsolen 3 genom
att trycka pÄ Ctrl-Alt-F3, dvs. vÀnster
Ctrl-tangent, vÀnster Alt-tangent och
F3-tangenten trycks in samtidigt. Du kan komma tillbaka
till GUI-miljön, som normalt körs pÄ den virtuella konsolen 2, genom att
trycka pÄ Alt-F2.
Alternativt kan du byta till en annan virtuell konsol, t.ex. konsol 3, frÄn kommandoraden.
# chvt 3
Du skriver Ctrl-D, dvs. vÀnster
Ctrl-tangent och d-tangenten trycks ihop, vid
kommandotolken för att stÀnga skalaktiviteten. Om du befinner dig pÄ
teckenkonsolen Ă„tergĂ„r du till inloggningsprompten med detta. Ăven om dessa
kontrolltecken kallas "kontroll D" med versaler, behöver du inte trycka pÄ
Shift-tangenten. Kortkommandot ^D anvÀnds ocksÄ för
Ctrl-D. Alternativt kan du skriva "exit".
Om du befinner dig pÄ x-terminal-emulator(1) kan du
stÀnga x-terminal-emulatorfönstret med detta.
Precis som alla andra moderna operativsystem dÀr filoperationen innebÀr att data cachas i minnet för förbÀttrad prestanda, behöver Debiansystemet en korrekt avstÀngningsprocedur innan strömmen kan stÀngas av pÄ ett sÀkert sÀtt. Detta för att bibehÄlla filernas integritet genom att tvinga alla Àndringar i minnet att skrivas till disken. Om programvarans strömkontroll Àr tillgÀnglig, stÀnger avstÀngningsproceduren automatiskt av strömmen till systemet. (I annat fall kan du behöva trycka pÄ strömbrytaren i nÄgra sekunder efter avstÀngningsproceduren)
Du kan stÀnga av systemet i det normala fleranvÀndarlÀget frÄn kommandoraden.
# shutdown -h now
Du kan stÀnga av systemet i enanvÀndarlÀge frÄn kommandoraden.
# poweroff -i -f
Se Avsnitt 6.3.8, âHur man stĂ€nger av fjĂ€rrsystemet pĂ„ SSHâ.
NÀr skÀrmen gÄr bÀrsÀrk efter att ha gjort nÄgra roliga saker som
"cat some-binary-file", skriv
"reset" i kommandotolken. Det Àr inte sÀkert att du ser
kommandot ekas medan du skriver. Du kan ocksÄ skriva
"clear" för att stÀda upp pÄ skÀrmen.
Ăven om Ă€ven den minimala installationen av Debian-systemet utan nĂ„gra
skrivbordsmiljöuppgifter ger de grundlÀggande Unix-funktionerna, Àr det en
bra idé att installera nÄgra ytterligare kommandorads- och curses-baserade
teckenterminalpaket som mc och vim med
apt-get(8) för nybörjare för att komma igÄng med
följande.
# apt-get update ... # apt-get install mc vim sudo aptitude ...
Om du redan har dessa paket installerade installeras inga nya paket.
Tabell 1.1. Lista över intressanta programpaket i textlÀge
| paket | popcon | storlek | beskrivning |
|---|---|---|---|
mc
|
V:44, I:184 | 1590 | En filhanterare i textlÀge med fullskÀrm |
sudo
|
V:739, I:866 | 6773 | Ett program för att ge anvÀndare begrÀnsade root-rÀttigheter |
vim
|
V:87, I:347 | 4089 | Unix textredigerare Vi IMproved, en textredigerare för programmerare (standardversion) |
vim-tiny
|
V:58, I:978 | 1877 | Unix textredigerare Vi IMproved, en textredigerare för programmerare (kompakt version) |
emacs-nox
|
V:4, I:13 | 46536 | GNU-projektet Emacs, den Lisp-baserade extensibla textredigeraren |
w3m
|
V:11, I:145 | 2853 | WebblÀsare i textlÀge |
gpm
|
V:9.1, I:9.9 | 526 | Klipp-och-klistra i Unix-stil pÄ textkonsolen (daemon) |
Det kan vara en bra idé att lÀsa nÄgra informativa dokumentationer.
Tabell 1.2. Förteckning över informativa dokumentationspaket
| paket | popcon | storlek | beskrivning |
|---|---|---|---|
doc-debian
|
I:883 | 187 | Dokumentation för Debian-projektet, (Debian FAQ) och andra dokument |
debian-policy
|
I:8.2 | 5061 | Debians policyhandbok och relaterade dokument |
developers-reference
|
V:0.2, I:2.7 | 2601 | Riktlinjer och information för Debian-utvecklare |
debmake-doc
|
I:0.42 | 11807 | Guide för Debians underhÄllsansvariga |
debian-history
|
I:0.57 | 6251 | Debian-projektets historia |
debian-faq
|
I:881 | 791 | Debian FAQ |
Du kan installera nÄgra av dessa paket pÄ följande sÀtt.
# apt-get install package_name
Om du inte vill anvÀnda ditt huvudanvÀndarkonto för följande
utbildningsaktiviteter kan du skapa ett utbildningsanvÀndarkonto,
t.ex. fisk enligt följande.
# adduser fish
Svara pÄ alla frÄgor.
Detta skapar ett nytt konto med namnet fish. Efter din
övning kan du ta bort detta anvÀndarkonto och dess hemkatalog genom att göra
följande.
# deluser --remove-home fish
PÄ icke-Debian-system och specialiserade Debian-system mÄste ovanstÄende
aktiviteter i stÀllet anvÀnda verktygen useradd(8) och
userdel(8) pÄ lÀgre nivÄ.
För den typiska arbetsstationen för en anvÀndare, t.ex. Debian-systemet pÄ
den bÀrbara datorn, Àr det vanligt att anvÀnda en enkel konfiguration av
sudo(8) enligt följande för att lÄta en
icke-privilegierad anvÀndare, t.ex. pingvinen, fÄ
administrativa rÀttigheter bara med sitt anvÀndarlösenord men utan
root-lösenordet.
# echo "penguin ALL=(ALL) ALL" >> /etc/sudoers
Alternativt Àr det ocksÄ vanligt att göra pÄ följande sÀtt för att lÄta en
icke-privilegierad anvÀndare, t.ex. pingvinen, fÄ
administrativa rÀttigheter utan lösenord.
# echo "penguin ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
Detta trick bör endast anvÀndas för den arbetsstation som du administrerar och dÀr du Àr den enda anvÀndaren.
|
Varning |
|---|---|
|
Skapa inte konton för vanliga anvÀndare pÄ en arbetsstation med flera anvÀndare pÄ det hÀr sÀttet eftersom det skulle vara mycket dÄligt för systemsÀkerheten. |
|
Observera |
|---|---|
|
Lösenordet och kontot för Administrationsbehörighet i det hÀr sammanhanget tillhör nÄgon som Àr behörig att utföra systemadministrationsuppgifter pÄ arbetsstationen. Ge aldrig nÄgon chef pÄ företagets administrativa avdelning eller din chef sÄdana rÀttigheter om de inte Àr behöriga och kompetenta. |
|
Notera |
|---|---|
|
För att ge Ätkomstbehörighet till begrÀnsade enheter och begrÀnsade filer
bör du övervÀga att anvÀnda grupp för att
ge begrÀnsad Ätkomst i stÀllet för att anvÀnda
Med en mer genomtÀnkt och noggrann konfiguration kan
|
Nu Àr du redo att leka med Debian-systemet utan risker sÄ lÀnge du anvÀnder det icke-privilegierade anvÀndarkontot.
Detta beror pÄ att Debian-systemet, Àven efter standardinstallationen, Àr konfigurerat med korrekta filbehörigheter som förhindrar icke-privilegierade anvÀndare frÄn att skada systemet. Naturligtvis kan det fortfarande finnas nÄgra hÄl som kan utnyttjas, men de som oroar sig för dessa frÄgor bör inte lÀsa detta avsnitt utan bör lÀsa Securing Debian Manual.
Vi lÀr oss Debian-systemet som ett Unix-liknande system med följande.
Avsnitt 1.2, âUnix-liknande filsystemâ (enkla koncept)
Avsnitt 1.3, âMidnight Commander (MC)â (överlevnadsmetod)
Avsnitt 1.4, âDen grundlĂ€ggande Unix-liknande arbetsmiljönâ (enkel metod)
Avsnitt 1.5, âDet enkla shell-kommandotâ (skalmekanism)
Avsnitt 1.6, âUnix-liknande textbehandlingâ (metod för textbearbetning)
I GNU/Linux och andra Unix-liknande
operativsystem Àr filer organiserade i kataloger. Alla filer och kataloger Àr ordnade
i ett stort trÀd med rot i "/". Det kallas ett trÀd
eftersom filsystemet ser ut som ett trÀd om man ritar det, men det Àr upp
och ner.
Dessa filer och kataloger kan vara utspridda över flera
enheter. mount(8) anvÀnds för att koppla filsystemet som
finns pÄ en enhet till det stora filtrÀdet. OmvÀnt kopplar
umount(8) loss det igen. PÄ de senaste Linux-kÀrnorna
kan mount(8) med vissa alternativ binda en del av ett
filtrÀd nÄgon annanstans eller montera filsystemet som delat, privat, slav
eller obindbart. Vilka monteringsalternativ som stöds för varje filsystem
finns i
"/usr/share/doc/linux-doc-*/Documentation/filesystems/".
Kataloger i Unix-system kallas mappar i vissa andra system. Observera ocksÄ att
det inte finns nÄgot begrepp för enhet
som "A:" pÄ nÄgot Unix-system. Det finns ett filsystem
och allt Àr inkluderat. Detta Àr en enorm fördel jÀmfört med Windows.
HÀr följer nÄgra grunderna för Unix-filer.
Filnamn Àr skiftlÀgeskÀnsliga. Det vill
sÀga "MYFILE" och "MyFile" Àr olika
filer.
Rotkatalogen betyder roten till
filsystemet och kallas helt enkelt "/". FörvÀxla inte
detta med hemkatalogen för root-anvÀndaren: "/root".
Varje katalog har ett namn som kan innehÄlla alla bokstÀver eller symboler
utom "/".
Rotkatalogen Àr ett undantag; dess namn Àr "/" (uttalas
"slash" eller "rotkatalogen") och den kan inte döpas om.
Varje fil eller katalog betecknas med ett fullstÀndigt kvalificerat filnamn, ett absolut filnamn eller en sökvÀg som anger den sekvens av kataloger som mÄste passeras för att nÄ den. De tre termerna Àr synonyma.
Alla fullstÀndigt kvalificerade filnamn
börjar med katalogen "/", och det finns ett
"/" mellan varje katalog eller fil i filnamnet. Den
första "/" Àr den översta katalogen, och de andra
"/":erna separerar successiva underkataloger, tills vi
nÄr den sista posten som Àr namnet pÄ den faktiska filen. De ord som
anvÀnds hÀr kan vara förvirrande. Ta följande fullstÀndigt kvalificerade filnamn som exempel:
"/usr/share/keytables/us.map.gz". Men mÀnniskor hÀnvisar
ocksÄ till dess basnamn "us.map.gz" ensam som ett
filnamn.
Rotkatalogen har ett antal förgreningar, t.ex. "/etc/"
och "/usr/". Dessa underkataloger förgrenar sig i sin
tur till Ànnu fler underkataloger, t.ex. "/etc/systemd/"
och "/usr/local/". Allt detta sammantaget kallas
katalogtrÀdet. Du kan tÀnka pÄ ett
absolut filnamn som en vÀg frÄn trÀdets bas ( "/") till
slutet av nÄgon gren (en fil). Du hör ocksÄ folk prata om katalogtrÀdet som
om det vore ett slÀkttrÀd som omfattar
alla direkta Àttlingar till en enda figur som kallas rotkatalogen (
"/"): underkataloger har alltsÄ förÀldrar, och en sökvÀg visar en fils fullstÀndiga
hÀrkomst. Det finns ocksÄ relativa sökvÀgar som börjar nÄgon annanstans Àn
i rotkatalogen. Du bör komma ihÄg att katalogen "../"
hÀnvisar till den överordnade katalogen. Denna terminologi gÀller Àven för
andra katalogliknande strukturer, t.ex. hierarkiska datastrukturer.
Det finns ingen speciell komponent i katalogsökvÀgsnamnet som motsvarar en
fysisk enhet, t.ex. hÄrddisken. Detta skiljer sig frÄn RT-11, CP/M, OpenVMS, MS-DOS, AmigaOS och Microsoft
Windows, dÀr sökvÀgen innehÄller ett enhetsnamn som till exempel
"C:\". (Det finns dock katalogposter som hÀnvisar till
fysiska enheter som en del av det normala filsystemet. Se Avsnitt 1.2.2, âInternt i filsystemetâ.)
|
Notera |
|---|---|
|
Ăven om du kan anvĂ€nda nĂ€stan vilka
bokstÀver eller symboler som helst i ett filnamn Àr det i praktiken en dÄlig
idé att göra det. Det Àr bÀttre att undvika tecken som ofta har speciella
betydelser pÄ kommandoraden, t.ex. mellanslag, tabbar, nya rader och andra
specialtecken: |
|
Notera |
|---|---|
|
Ordet "root" kan betyda antingen "root user" eller "root directory". Det bör framgÄ av sammanhanget dÀr de anvÀnds. |
|
Notera |
|---|---|
|
Ordet path anvÀnds inte bara för fullt kvalificerade filnamn enligt ovan utan Àven för kommandots sökvÀg. Den avsedda betydelsen framgÄr vanligtvis tydligt av sammanhanget. |
Detaljerad bÀsta praxis för filhierarkin beskrivs i Filesystem Hierarchy
Standard (
"/usr/share/doc/debian-policy/fhs/fhs-2.3.txt.gz" och
hier(7)). Du bör komma ihÄg följande fakta som start.
Tabell 1.3. Lista över anvÀndning av nyckelkataloger
| katalog | anvÀndning av katalogen |
|---|---|
/ |
rotkatalogen |
/etc/ |
systemövergripande konfigurationsfiler |
/var/log/ |
systemets loggfiler |
/home/ |
alla hemkataloger för alla icke-privilegierade anvÀndare |
I enlighet med Unix-traditionen
tillhandahÄller Debian GNU/Linux-systemet det filsystem under vilket fysiska data pÄ hÄrddiskar
och andra lagringsenheter finns, och interaktionen med hÄrdvaruenheter som
konsolskÀrmar och seriella fjÀrrkonsoler representeras pÄ ett enhetligt sÀtt
under "/dev/".
Varje fil, katalog, named pipe (ett sÀtt för tvÄ program att dela data) eller fysisk enhet pÄ ett Debian GNU/Linux-system har en datastruktur som kallas inode som beskriver dess associerade attribut, t.ex. anvÀndaren som Àger den (owner), gruppen som den tillhör, tidpunkten för senaste Ätkomst osv. Idén att representera nÀstan allt i filsystemet var en Unix-innovation, och moderna Linux-kÀrnor har utvecklat denna idé Ànnu mer. Nu kan till och med information om processer som körs i datorn hittas i filsystemet.
Denna abstrakta och enhetliga representation av fysiska enheter och interna processer Àr mycket kraftfull eftersom den gör det möjligt för oss att anvÀnda samma kommando för samma typ av operation pÄ mÄnga helt olika enheter. Det Àr till och med möjligt att Àndra hur kÀrnan fungerar genom att skriva data till speciella filer som Àr kopplade till pÄgÄende processer.
|
Tips |
|---|---|
|
Om du behöver identifiera korrespondensen mellan filtrÀdet och den fysiska
enheten, kör |
Filsystembehörigheter för Unix-liknande system definieras för tre kategorier av berörda anvÀndare.
AnvÀndaren som Àger filen(u)
Andra anvÀndare i den grupp som filen tillhör(g)
Alla andra anvÀndare(o) Àven kallad "vÀrlden" och "alla"
För filen tillÄter varje motsvarande behörighet följande ÄtgÀrder.
Behörigheten read(r) ger Àgaren rÀtt att undersöka innehÄllet i filen.
SkrivrÀttigheten(w) ger Àgaren rÀtt att Àndra filen.
Behörigheten execute(x) ger Àgaren rÀtt att köra filen som ett kommando.
För katalogen tillÄter varje motsvarande behörighet följande ÄtgÀrder.
Behörigheten read(r) tillÄter Àgaren att lista innehÄllet i katalogen.
SkrivrÀttigheten(w) ger Àgaren rÀtt att lÀgga till eller ta bort filer i katalogen.
Behörigheten execute(x) ger Àgaren Ätkomst till filer i katalogen.
HÀr innebÀr exekveringsbehörigheten för en katalog inte bara att man fÄr lÀsa filer i katalogen utan ocksÄ att man fÄr visa deras attribut, t.ex. storlek och Àndringstid.
ls(1) anvÀnds för att visa behörighetsinformation (med
mera) för filer och kataloger. NÀr den anropas med alternativet
"-l" visas följande information i den ordning som anges.
Typ av fil (första tecknet)
à tkomstbehörighet för filen (nio tecken, bestÄende av tre tecken vardera för anvÀndare, grupp och annan i denna ordning)
Antal hÄrda lÀnkar till filen
Namnet pÄ den anvÀndare som Àger filen
Namnet pÄ den grupp som filen tillhör
Filens storlek i tecken (bytes)
Datum och tid för filen (mtime)
Filens namn
Tabell 1.4. Lista över det första tecknet i "ls -l"-utdata
| tecken | betydelse |
|---|---|
- |
normal fil |
d |
katalog |
l |
symlÀnk |
c |
tecken enhet nod |
b |
block enhet nod |
p |
namngivet rör |
s |
uttag |
chown(1) anvÀnds frÄn rotkontot för att Àndra filens
Àgare. chgrp(1) anvÀnds frÄn filens Àgare eller rotkontot
för att Àndra filens grupp. chmod(1) anvÀnds frÄn filens
Àgare eller rotkontot för att Àndra fil- och katalogÄtkomstbehörigheter.
GrundlÀggande syntax för att manipulera en foo-fil Àr
följande.
# chown newowner foo # chgrp newgroup foo # chmod [ugoa][+-=][rwxXst][,...] foo
Du kan t.ex. skapa ett katalogtrÀd som Àgs av anvÀndaren
foo och delas av gruppen bar pÄ
följande sÀtt.
# cd /some/location/
# chown -R foo:bar .
# chmod -R ug+rwX,o=rX .
Det finns ytterligare tre speciella behörighetsbitar.
Den instÀllda anvÀndar-ID-biten(s eller S istÀllet för anvÀndarens x)
Den instÀllda grupp-ID-biten(s eller S istÀllet för gruppens x)
Den kladdiga biten(t eller T istÀllet för andras x)
HÀr skrivs utdata frÄn "ls -l" för dessa bitar med
stor bokstav om exekveringsbitar som
döljs av dessa utdata Àr avaktiverade.
Om du anger set user ID för en körbar fil kan en anvÀndare köra den körbara filen med filens Àgar-ID (t.ex. root). PÄ samma sÀtt gör instÀllningen set group ID för en körbar fil att en anvÀndare kan köra den körbara filen med filens grupp-ID (t.ex. root). Eftersom dessa instÀllningar kan medföra sÀkerhetsrisker bör du vara extra försiktig nÀr du aktiverar dem.
Om du anger set group ID för en katalog kan du anvÀnda BSD-liknande filskapande dÀr alla filer som skapas i katalogen tillhör katalogens grupp.
Genom att stÀlla in sticky bit pÄ en
katalog förhindras att en fil i katalogen tas bort av en anvÀndare som inte
Àr Àgare till filen. För att sÀkra innehÄllet i en fil i kataloger som kan
skrivas av alla, sĂ„som â/tmpâ, eller i kataloger som kan
skrivas av gruppen, mÄste man inte bara ÄterstÀlla skriv-behörigheten för filen utan ocksÄ stÀlla in
sticky bit pÄ katalogen. Annars kan
filen tas bort och en ny fil med samma namn skapas av vilken anvÀndare som
helst som har skrivbehörighet till katalogen.
HÀr Àr nÄgra intressanta exempel pÄ filbehörigheter.
$ ls -l /etc/passwd /etc/shadow /dev/ppp /usr/sbin/exim4 crw------T 1 root root 108, 0 Oct 16 20:57 /dev/ppp -rw-r--r-- 1 root root 2761 Aug 30 10:38 /etc/passwd -rw-r----- 1 root shadow 1695 Aug 30 10:38 /etc/shadow -rwsr-xr-x 1 root root 973824 Sep 23 20:04 /usr/sbin/exim4 $ ls -ld /tmp /var/tmp /usr/local /var/mail /usr/src drwxrwxrwt 14 root root 20480 Oct 16 21:25 /tmp drwxrwsr-x 10 root staff 4096 Sep 29 22:50 /usr/local drwxr-xr-x 10 root root 4096 Oct 11 00:28 /usr/src drwxrwsr-x 2 root mail 4096 Oct 15 21:40 /var/mail drwxrwxrwt 3 root root 4096 Oct 16 21:20 /var/tmp
Det finns ett alternativt numeriskt lÀge för att beskriva filbehörigheter
med chmod(1). Detta numeriska lÀge anvÀnder 3- till
4-siffriga breda oktala (radix=8) tal.
Tabell 1.5. Det numeriska lÀget för filbehörigheter i
chmod(1)-kommandon
| tecken | betydelse |
|---|---|
| 1:a valfria siffran | summan av instÀllt anvÀndar-ID (=4), instÀllt grupp-ID (=2) och sticky bit (=1) |
| 2:a siffran | summan av behörigheterna lÀsa (=4), skriva (=2) och köra (=1) för anvÀndaren |
| 3:e siffran | dito för gruppen |
| 4:e siffran | dito för övriga |
Det hÀr lÄter komplicerat men Àr faktiskt ganska enkelt. Om du tittar pÄ de
första kolumnerna (2-10) i kommandoutmatningen frÄn "ls
-l" och lÀser dem som en binÀr (radix=2) representation av
filbehörigheter ("-" Àr "0" och "rwx" Àr "1"), bör de sista 3 siffrorna i
det numeriska lÀgesvÀrdet vara begripliga som en oktal (radix=8)
representation av filbehörigheter för dig.
Försök till exempel med följande
$ touch foo bar $ chmod u=rw,go=r foo $ chmod 644 bar $ ls -l foo bar -rw-r--r-- 1 penguin penguin 0 Oct 16 21:39 bar -rw-r--r-- 1 penguin penguin 0 Oct 16 21:35 foo
|
Tips |
|---|---|
|
Om du behöver komma Ät information som visas av " |
Vilka behörigheter som tillÀmpas pÄ en nyskapad fil eller katalog begrÀnsas
av det inbyggda kommandot umask i skalet. Se
dash(1), bash(1) och
builtins(7).
(file permissions) = (requested file permissions) & ~(umask value)
Tabell 1.6. Exempel pÄ umask-vÀrde
| umask | filbehörigheter skapade | katalogbehörigheter skapade | anvÀndning |
|---|---|---|---|
0022 |
-rw-r--r-- |
-rwxr-xr-x |
skrivbar endast av anvÀndaren |
0002 |
-rw-rw-r-- |
-rwxrwxr-x |
skrivbar av gruppen |
Debian-systemet anvÀnder ett UPG-system (User Private Group) som
standard. En UPG skapas varje gÄng en ny anvÀndare lÀggs till i systemet. En
UPG har samma namn som den anvÀndare för vilken den skapades och den
anvÀndaren Àr den enda medlemmen i UPG. UPG-systemet gör det sÀkert att
sÀtta umask till 0002 eftersom varje anvÀndare har sin
egen privata grupp. (I vissa Unix-varianter Àr det ganska vanligt att alla
normala anvÀndare tillhör en enda anvÀndare grupp och det Àr en
bra idé att sÀtta umask till 0022 för sÀkerhets skull i
sÄdana fall)
|
Tips |
|---|---|
|
Aktivera UPG genom att lÀgga till " |
|
Varning |
|---|---|
|
Se till att spara osparade Àndringar innan du startar om eller gör liknande ÄtgÀrder. |
Du kan lÀgga till en anvÀndarpingvin till en
gruppfÄgel i tvÄ steg:
Ăndra gruppkonfigurationen med hjĂ€lp av nĂ„got av följande:
Kör "sudo usermod -aG bird penguin".
Utför "sudo adduser penguin bird". (endast pÄ typiska
Debian-system)
Kör "sudo vigr" för /etc/group och
"sudo vigr -s" för /etc/gshadow för
att lÀgga till penguin i raden för
bird.
TillÀmpa konfigurationen med hjÀlp av nÄgot av följande:
Kall omstart och inloggning. (BĂ€sta alternativet)
Logout via GUI menu and login. (This may not work under the modern Desktop environment.)
Du kan ta bort en anvÀndarpingvin frÄn en
gruppfÄgel i tvÄ steg:
Ăndra gruppkonfigurationen med hjĂ€lp av nĂ„got av följande:
Kör "sudo usermod -rG bird penguin".
Utför "sudo deluser penguin bird". (endast pÄ typiska
Debian-system)
Kör "sudo vigr" för /etc/group och
"sudo vigr -s" för /etc/gshadow för
att ta bort penguin i raden för bird.
TillÀmpa konfigurationen med hjÀlp av nÄgot av följande:
Kall omstart och inloggning. (BĂ€sta alternativet)
Kör "kill -TERM -1" och gör nÄgra korrigeringsÄtgÀrder,
t.ex. "systemctl restart NetworkManager.service".
Logga ut via GUI-menyn Àr inte ett alternativ för Gnome Desktop.
Alla försök till varm omstart Àr brÀckliga ersÀttningar för den riktiga kalla omstarten under det moderna skrivbordssystemet.
|
Notera |
|---|---|
|
Alternativt kan du dynamiskt lÀgga till anvÀndare i grupper under
autentiseringsprocessen genom att lÀgga till raden " |
The hardware devices are just another kind of file on the Debian system. If you have problems accessing devices such as USB flash drive and CD-ROM from a user account, you should make that user a member of the relevant group.
Vissa grupper som tillhandahÄlls av systemet gör det möjligt för medlemmarna
att komma Ät vissa filer och enheter utan
root-behörighet.
Tabell 1.7. Lista över viktiga systemtillgÀngliga grupper för filÄtkomst
| grupp | beskrivning för tillgÀngliga filer och enheter |
|---|---|
dialout |
full och direkt tillgÄng till serieportar (
"/dev/ttyS[0-3]") |
dip |
begrÀnsad tillgÄng till serieportar för uppringd IP-anslutning till betrodda motparter |
cdrom |
CD-ROM, DVD+/-RW-enheter |
audio |
ljud enhet |
video |
video enhet |
scanner |
skanner(s) |
adm |
loggar för systemövervakning |
staff |
nÄgra kataloger för mindre administrativt arbete:
"/usr/local", "/home" |
|
Tips |
|---|---|
|
Du mÄste tillhöra |
Vissa grupper som tillhandahÄlls av systemet gör det möjligt för medlemmarna
att utföra vissa kommandon utan root-behörighet.
Tabell 1.8. Lista över anmÀrkningsvÀrda systemlevererade grupper för sÀrskilda kommandoexekveringar
| grupp | tillgÀngliga kommandon |
|---|---|
sudo |
kör valfritt kommando med superuser-behörighet |
lpadmin |
utföra kommandon för att lÀgga till, Àndra och ta bort skrivare frÄn skrivardatabaser |
En fullstÀndig lista över anvÀndare och grupper som tillhandahÄlls av
systemet finns i den senaste versionen av dokumentet "AnvÀndar och grupper"
i "/usr/share/doc/base-passwd/users-and-groups.html" som
tillhandahÄlls av paketet base-passwd.
Se passwd(5), group(5),
shadow(5), newgrp(1),
vipw(8), vigr(8) och
pam_group(8) för kommandon för hantering av anvÀndar- och
gruppsystemet.
Det finns tre typer av tidsstÀmplar för en GNU/Linux-fil.
Tabell 1.9. Lista över olika typer av tidsstÀmplar
| typ | betydelse (historisk Unix-definition) |
|---|---|
| mtime | filens modifieringstid(ls -l) |
| ctime | tid för Àndring av filstatus(ls -lc) |
| atime | den senaste tiden för filÄtkomst(ls -lu) |
|
Notera |
|---|---|
|
ctime Àr inte filens skapelsetid. |
|
Notera |
|---|---|
|
Det faktiska vÀrdet pÄ atime i GNU/Linux-system kan skilja sig frÄn det i den historiska Unix-definitionen. |
Om du skriver över en fil Àndras alla attribut mtime, ctime och atime för filen.
Om du Àndrar Àgarskap eller behörighet för en fil Àndras filens attribut ctime och atime.
NÀr du lÀser en fil Àndras filens atime-attribut i det historiska Unix-systemet.
LÀsning av en fil Àndrar atime-attributet
för filen pÄ GNU/Linux-systemet om dess filsystem Àr monterat med
"strictatime".
Om du lÀser en fil för första gÄngen eller efter en dag Àndras filens
atime-attribut pÄ GNU/Linux-systemet om
filsystemet Àr monterat med "relatime". (standardbeteende
sedan Linux 2.6.30)
LÀsning av en fil Àndrar inte atime-attributet för filen pÄ GNU/Linux-systemet om
filsystemet Àr monterat med "noatime".
|
Notera |
|---|---|
|
Monteringsalternativen " |
AnvÀnd kommandot touch(1) för att Àndra tidsstÀmplar för
befintliga filer.
För tidsstÀmplar skriver kommandot ls ut lokaliserade
strÀngar under icke-engelsk locale ( "fr_FR.UTF-8").
$ LANG=C ls -l foo -rw-rw-r-- 1 penguin penguin 0 Oct 16 21:35 foo $ LANG=en_US.UTF-8 ls -l foo -rw-rw-r-- 1 penguin penguin 0 Oct 16 21:35 foo $ LANG=fr_FR.UTF-8 ls -l foo -rw-rw-r-- 1 penguin penguin 0 oct. 16 21:35 foo
|
Tips |
|---|---|
|
Se Avsnitt 9.3.4, âAnpassad visning av tid och datumâ för att anpassa
utdata frÄn " |
Det finns tvÄ metoder för att associera en fil "foo" med
ett annat filnamn "bar".
Duplicerat namn för en befintlig fil
"ln foo bar"
Symbolisk lÀnk eller symlÀnk
SÀrskild fil som pekar pÄ en annan fil med namn
"ln -s foo bar"
Se följande exempel för förÀndringar i lÀnkantal och de subtila skillnaderna
i resultatet av kommandot rm.
$ umask 002 $ echo "Original Content" > foo $ ls -li foo 1449840 -rw-rw-r-- 1 penguin penguin 17 Oct 16 21:42 foo $ ln foo bar # hard link $ ln -s foo baz # symlink $ ls -li foo bar baz 1449840 -rw-rw-r-- 2 penguin penguin 17 Oct 16 21:42 bar 1450180 lrwxrwxrwx 1 penguin penguin 3 Oct 16 21:47 baz -> foo 1449840 -rw-rw-r-- 2 penguin penguin 17 Oct 16 21:42 foo $ rm foo $ echo "New Content" > foo $ ls -li foo bar baz 1449840 -rw-rw-r-- 1 penguin penguin 17 Oct 16 21:42 bar 1450180 lrwxrwxrwx 1 penguin penguin 3 Oct 16 21:47 baz -> foo 1450183 -rw-rw-r-- 1 penguin penguin 12 Oct 16 21:48 foo $ cat bar Original Content $ cat baz New Content
Den hÄrda lÀnken kan göras inom samma filsystem och delar samma inodnummer
som alternativet "-i" med ls(1)
avslöjar.
SymlÀnken har alltid den nominella filÄtkomstbehörigheten
"rwxrwxrwx", som visas i exemplet ovan, medan den
faktiska Ätkomstbehörigheten bestÀms av behörigheten för den fil som den
pekar pÄ.
|
Observera |
|---|---|
|
Det Àr i allmÀnhet en bra idé att inte skapa komplicerade symboliska lÀnkar eller hÄrda lÀnkar alls om du inte har en mycket god anledning. Det kan orsaka mardrömmar dÀr den logiska kombinationen av de symboliska lÀnkarna resulterar i loopar i filsystemet. |
|
Notera |
|---|---|
|
Det Àr i allmÀnhet att föredra att anvÀnda symboliska lÀnkar framför hÄrda lÀnkar, sÄvida du inte har ett gott skÀl att anvÀnda en hÄrd lÀnk. |
Katalogen "..." lÀnkar till den katalog den finns i,
vilket innebÀr att lÀnkantalet för en ny katalog börjar pÄ 2. Katalogen
"..." lÀnkar till den överordnade katalogen, vilket
innebÀr att katalogens lÀnkantal ökar nÀr nya underkataloger lÀggs till.
Om du precis har gÄtt över till Linux frÄn Windows blir det snart tydligt hur vÀl utformad Unix filnamnslÀnkning Àr, jÀmfört med Windows nÀrmaste motsvarighet till "genvÀgar". Eftersom det Àr implementerat i filsystemet kan applikationer inte se nÄgon skillnad mellan en lÀnkad fil och originalet. NÀr det gÀller hÄrda lÀnkar Àr det verkligen ingen skillnad.
En named pipe Àr en fil som fungerar som ett rör. Du lÀgger in nÄgot i filen och det kommer ut i andra Ànden. DÀrför kallas det FIFO, eller First-In-First-Out: det första du stoppar in i röret Àr det första som kommer ut i andra Ànden.
Om du skriver till en namngiven pipe avslutas inte den process som skriver
till pipen förrÀn den information som skrivs har lÀsts frÄn pipen. Om du
lÀser frÄn en namngiven pipe vÀntar lÀsprocessen tills det inte finns nÄgot
att lÀsa innan den avslutas. Storleken pÄ pipen Àr alltid noll --- den
lagrar inte data, den lÀnkar bara samman tvÄ processer pÄ samma sÀtt som
skalets "|"-syntax. Men eftersom pipen har ett namn
behöver de tvÄ processerna inte finnas pÄ samma kommandorad eller ens köras
av samma anvÀndare. Pipes var en mycket inflytelserik innovation inom Unix.
Försök till exempel med följande
$ cd; mkfifo mypipe $ echo "hello" >mypipe & # put into background [1] 8022 $ ls -l mypipe prw-rw-r-- 1 penguin penguin 0 Oct 16 21:49 mypipe $ cat mypipe hello [1]+ Done echo "hello" >mypipe $ ls mypipe mypipe $ rm mypipe
Uttag anvÀnds i stor utstrÀckning av all Internetkommunikation, databaser och sjÀlva operativsystemet. Den liknar named pipe (FIFO) och gör det möjligt för processer att utbyta information Àven mellan olika datorer. För ett uttag behöver dessa processer inte köras samtidigt eller köras som barn till samma förfadersprocess. Detta Àr slutpunkten för interprocesskommunikation (IPC). Informationsutbytet kan ske över nÀtverket mellan olika vÀrdar. De tvÄ vanligaste Àr Internet-uttaget och Unix-domÀn-uttaget.
|
Tips |
|---|---|
|
" |
Enhetsfiler hÀnvisar till fysiska eller
virtuella enheter i systemet, t.ex. hÄrddisk, grafikkort, skÀrm eller
tangentbord. Ett exempel pÄ en virtuell enhet Àr konsolen, som
representeras av "/dev/console".
Det finns 2 typer av enhetsfiler.
Teckenenhet
Ă tkomst till ett tecken i taget
1 tecken = 1 byte
T.ex. tangentbordsenhet, serieport, âŠ
Blockenhet
nÄs i större enheter som kallas block
1 block > 1 byte
T.ex. hĂ„rddisk, âŠ
Du kan lÀsa och skriva enhetsfiler, Àven om filen mycket vÀl kan innehÄlla
binÀr data som kan vara en obegriplig rappakalja för mÀnniskor. Att skriva
data direkt till dessa filer Àr ibland anvÀndbart för felsökning av
maskinvaruanslutningar. Du kan t.ex. dumpa en textfil till skrivarenheten
"/dev/lp0" eller skicka modemkommandon till lÀmplig
serieport "/dev/ttyS0". Men om detta inte görs noggrant
kan det orsaka en stor katastrof. SÄ var försiktig.
|
Notera |
|---|---|
|
För normal Ätkomst till en skrivare anvÀnder du |
Enhetens nodnummer visas genom att köra ls(1) pÄ följande
sÀtt.
$ ls -l /dev/sda /dev/sr0 /dev/ttyS0 /dev/zero brw-rw---T 1 root disk 8, 0 Oct 16 20:57 /dev/sda brw-rw---T+ 1 root cdrom 11, 0 Oct 16 21:53 /dev/sr0 crw-rw---T 1 root dialout 4, 64 Oct 16 20:57 /dev/ttyS0 crw-rw-rw- 1 root root 1, 5 Oct 16 20:57 /dev/zero
"/dev/sda" har det större enhetsnumret 8 och det mindre
enhetsnumret 0. Detta Àr lÀs-/skrivÄtkomligt för anvÀndare som tillhör
diskgruppen.
"/dev/sr0" har det stora enhetsnumret 11 och det lilla
enhetsnumret 0. Den Àr lÀs/skriv-Ätkomlig för anvÀndare som tillhör
cdrom-gruppen.
"/dev/ttyS0" har det större enhetsnumret 4 och det mindre
enhetsnumret 64. Detta Àr lÀs-/skrivÄtkomligt för anvÀndare som tillhör
dialout-gruppen.
"/dev/zero" har det större enhetsnumret 1 och det mindre
enhetsnumret 5. Detta Àr lÀs-/skrivÄtkomligt för alla.
PĂ„ ett modernt Linux-system fylls filsystemet under
"/dev/" automatiskt av
udev(7)-mekanismen.
Det finns nÄgra speciella enhetsfiler.
Tabell 1.10. Lista över speciella enhetsfiler
| enhetsfil | ÄtgÀrd | beskrivning av svar |
|---|---|---|
/dev/null |
lÀs | return "tecken för slutet av filen (EOF)" |
/dev/null |
skriv | returnera ingenting (en bottenlös datadumpningsgrop) |
/dev/zero |
lÀs | returnera "tecknet \0 (NUL)" (inte samma som siffran noll
ASCII) |
/dev/random |
lÀs | returnera slumpmÀssiga tecken frÄn en riktig slumptalsgenerator, vilket ger verklig entropi (lÄngsamt) |
/dev/urandom |
lÀs | returnera slumpmÀssiga tecken frÄn en kryptografiskt sÀker pseudorandomtalsgenerator |
/dev/full |
skriv | returnera felet disk full (ENOSPC) |
Dessa anvĂ€nds ofta i samband med shell-omdirigering (se Avsnitt 1.5.8, âTypiska kommandosekvenser och omdirigering av skalâ).
Procfs och sysfs
som Àr monterade pÄ "/proc" och "/sys"
Àr pseudofilsystem och exponerar interna datastrukturer i kÀrnan för
anvÀndarutrymmet. Med andra ord Àr dessa poster virtuella, vilket innebÀr
att de fungerar som ett bekvÀmt fönster in i operativsystemets funktion.
Katalogen "/proc" innehÄller (bland annat) en
underkatalog för varje process som körs i systemet och som har fÄtt sitt
namn efter process-ID (PID). Systemverktyg som hÀmtar information om
processer, t.ex. ps(1), hÀmtar sin information frÄn denna
katalogstruktur.
Katalogerna under "/proc/sys/" innehÄller grÀnssnitt för
att Àndra vissa kÀrnparametrar under körning. (Du kan göra samma sak genom
det specialiserade sysctl(8)-kommandot eller dess
förladdnings-/konfigurationsfil "/etc/sysctl.d/*.conf")
MÄnga fÄr panik nÀr de upptÀcker en fil - "/proc/kcore" -
som i allmÀnhet Àr enorm. Det hÀr Àr (mer eller mindre) en kopia av
innehÄllet i datorns minne. Den anvÀnds för att felsöka kÀrnan. Det Àr en
virtuell fil som pekar pÄ datorminnet, sÄ oroa dig inte för dess storlek.
Katalogen under "/sys" innehÄller exporterade
datastrukturer för kÀrnan, deras attribut och lÀnkarna mellan dem. Den
innehÄller ocksÄ grÀnssnitt för att Àndra vissa kÀrnparametrar under
körning.
Se "proc.txt(.gz)", "sysfs.txt(.gz)"
och andra relaterade dokument i dokumentationen för Linux-kÀrnan
("/usr/share/doc/linux-doc-*/Documentation/filesystems/*")
som tillhandahÄlls av paketet linux-doc-*.
Tmpfs Àr ett temporÀrt filsystem som förvarar alla filer i det virtuella minnet. Data frÄn tmpfs i sidcachen i minnet kan vid behov swappas ut till swaputrymmet pÄ disken.
Katalogen "/run" monteras som tmpfs i den tidiga
uppstartsprocessen. Detta gör det möjligt att skriva till den Àven nÀr
katalogen "/" Àr monterad som skrivskyddad. Detta Àr den
nya platsen för lagring av transienta tillstÄndsfiler och ersÀtter flera
platser som beskrivs i Filesystem
Hierarchy Standard version 2.3:
"/var/run" â "/run"
"/var/lock" â "/run/lock"
"/dev/shm" â "/run/shm"
Se "tmpfs.txt(.gz)" i dokumentationen för Linux-kÀrnan (
"/usr/share/doc/linux-doc-*/Documentation/filesystems/*")
som tillhandahÄlls av paketet linux-doc-*.
Midnight Commander (MC) Àr en "schweizisk armékniv" frÄn GNU för Linux-konsolen och andra terminalmiljöer. Detta ger nybörjare en menystyrd konsolupplevelse som Àr mycket lÀttare att lÀra sig Àn standard Unix-kommandon.
Du kan behöva installera Midnight Commander-paketet som heter
"mc" enligt följande.
$ sudo apt-get install mc
AnvÀnd kommandot mc(1) för att utforska Debian-systemet.
Detta Àr det bÀsta sÀttet att lÀra sig. Utforska nÄgra intressanta platser
bara med hjÀlp av markörknapparna och Enter-tangenten.
"/etc" och dess underkataloger
"/var/log" och dess underkataloger
"/usr/share/doc" och dess underkataloger
"/usr/sbin" och "/usr/bin"
För att fÄ MC att byta arbetskatalog vid avslutning och
cd till katalogen föreslÄr jag att du Àndrar
"~/.bashrc" sÄ att det innehÄller ett skript som
tillhandahÄlls av mc-paketet.
. /usr/lib/mc/mc.sh
Se mc(1) (under alternativet "-P") för
anledningen. (Om du inte förstÄr exakt vad jag menar hÀr, kan du göra det
senare)
MC kan startas pÄ följande sÀtt.
$ mc
MC sköter alla filoperationer via menyn, vilket krÀver minimal anstrÀngning av anvÀndaren. Tryck bara pÄ F1 för att komma till hjÀlpskÀrmen. Du kan leka med MC genom att trycka pÄ markör- och funktionsknappar.
|
Notera |
|---|---|
|
I vissa konsoler, t.ex. |
Om du stöter pÄ problem med teckenkodning som visar skrÀptecken kan du lÀgga
till "-a" pÄ MC:s kommandorad för att förhindra problem.
Om detta inte löser dina problem med MC-displayen, se Avsnitt 9.5.6, âTerminalens konfigurationâ.
Standard Àr tvÄ katalogpaneler som innehÄller fillistor. Ett annat
anvÀndbart lÀge Àr att stÀlla in det högra fönstret pÄ "information" för att
se information om filÄtkomstrÀttigheter etc. Nedan följer nÄgra viktiga
tangenttryckningar. NÀr daemon gpm(8) körs kan man Àven
anvÀnda musen pÄ Linux teckenkonsoler. (Se till att trycka pÄ
shift-tangenten för att fÄ det normala beteendet för klipp och klistra i MC)
Tabell 1.11. De viktigaste bindningarna för MC
| nyckel | nyckelbindning |
|---|---|
F1 |
hjÀlp meny |
F3 |
intern filvisare |
F4 |
intern redaktör |
F9 |
aktivera rullgardinsmeny |
F10 |
avsluta Midnight Commander |
Tab |
flytta mellan tvÄ fönster |
Insert eller Ctrl-T |
markera fil för en operation med flera filer, t.ex. kopiering |
Del |
radera fil (var försiktig - stÀll in MC till sÀkert raderingslÀge) |
| Piltangenter | sjÀlvförklarande |
cd-kommandot Àndrar den katalog som visas pÄ den valda
skÀrmen.
Ctrl-Enter eller Alt-Enter kopierar
ett filnamn till kommandoraden. AnvÀnd detta med kommandona
cp(1) och mv(1) tillsammans med
kommandoradsredigering.
Alt-Tab visar valmöjligheter för filnamnsexpansion i
skalet.
Man kan ange startkatalogen för bÄda fönstren som argument till MC,
t.ex. "mc /etc /root".
Esc + n-nyckel â Fn
(d.v.s. Esc + 1 â
F1, etc.; Esc + 0 â
F10)
Om du trycker pÄ Esc före tangenten fÄr du samma effekt
som om du trycker pÄ Alt och tangenten samtidigt,
t.ex. skriv Esc + c för
Alt-C. Esc kallas metatangent och
skrivs ibland som "M-".
Den interna editorn har ett intressant klipp-och-klistra-system. Genom att
trycka pÄ F3 markeras början av ett urval, ett andra
F3 markerar slutet av urvalet och markerar urvalet.
Sedan kan du flytta markören. Om du trycker pÄ F6 flyttas det markerade
omrÄdet till markörens plats. Om du trycker pÄ F5 kopieras det markerade
omrÄdet och infogas pÄ markörens plats. F2 sparar
filen. F10 tar dig ut ur programmet. De flesta
markörknappar fungerar intuitivt.
Denna editor kan startas direkt pÄ en fil med hjÀlp av nÄgot av följande kommandon.
$ mc -e filename_to_edit
$ mcedit filename_to_edit
Detta Ă€r inte en editor för flera fönster, men man kan anvĂ€nda flera Linux-konsoler för att uppnĂ„ samma effekt. För att kopiera mellan fönster anvĂ€nder du Alt-Fn-tangenterna för att vĂ€xla mellan virtuella konsoler och anvĂ€nder "FileâInsert file" eller "FileâCopy to file" för att flytta en del av en fil till en annan fil.
Denna interna editor kan ersÀttas med valfri extern editor.
MÄnga program anvÀnder ocksÄ miljövariablerna "$EDITOR"
eller "$VISUAL" för att bestÀmma vilken editor som ska
anvÀndas. Om du inte kÀnner dig bekvÀm med vim(1) eller
nano(1) frÄn början kan du stÀlla in dessa till
"mcedit" genom att lÀgga till följande rader i
"~/.bashrc".
export EDITOR=mcedit export VISUAL=mcedit
Jag rekommenderar att du stÀller in dessa pÄ "vim" om
möjligt.
Om du inte kÀnner dig bekvÀm med vim(1) kan du fortsÀtta
att anvÀnda mcedit(1) för de flesta
systemunderhÄllsuppgifter.
MC Àr en mycket smart viewer. Detta Àr ett utmÀrkt verktyg för att söka
efter ord i dokument. Jag anvÀnder det alltid för filer i katalogen
"/usr/share/doc". Det hÀr Àr det snabbaste sÀttet att
blÀddra igenom massor av Linux-information. Den hÀr visaren kan startas
direkt med nÄgot av följande kommandon.
$ mc -v path/to/filename_to_view
$ mcview path/to/filename_to_view
Tryck pĂ„ Enter i en fil, sĂ„ hanterar lĂ€mpligt program innehĂ„llet i filen (se Avsnitt 9.4.11, âAnpassning av program som ska startasâ). Detta Ă€r en mycket praktisk MC-funktion.
Tabell 1.12. Reaktionen pÄ enter-tangenten i MC
| filtyp | reaktion pÄ enter-tangenten |
|---|---|
| exekverbar fil | exekvera kommando |
| huvudfil | rörinnehÄll till visningsprogramvara |
| html fil | rörinnehÄll till webblÀsare |
"*.tar.gz" och "*.deb" fil |
blÀddra i dess innehÄll som i en underkatalog |
För att dessa funktioner för visare och virtuella filer ska fungera bör
visningsbara filer inte stĂ€llas in som körbara. Ăndra deras status med
hjÀlp av chmod(1) eller via MC-filmenyn.
MC kan anvÀndas för att komma Ät filer via Internet. GÄ till menyn genom
att trycka pÄ F9, "Enter" och
"h" för att aktivera filsystemet Shell. Ange en URL i
formen "sh://[user@]machine[:options]/[remote-dir]", som
hÀmtar en fjÀrrkatalog som ser ut som en lokal katalog med hjÀlp av
ssh.
Ăven om du kan göra nĂ€stan allt med MC Ă€r det mycket viktigt att du lĂ€r dig att anvĂ€nda kommandoradsverktygen frĂ„n skalprompten och blir bekant med den Unix-liknande arbetsmiljön.
Eftersom inloggningsskalet kan anvÀndas av vissa
systeminitialiseringsprogram Àr det klokt att behÄlla det som
bash(1) och undvika att byta inloggningsskal med
chsh(1).
Om du vill anvÀnda en annan interaktiv shell-prompt kan du stÀlla in den i
GUI-terminalemulatorns konfiguration eller starta den frÄn
~/.bashrc, t.ex. genom att placera "exec
/usr/bin/zsh -i -l" eller "exec /usr/bin/fish -i
-l" i den.
Tabell 1.13. Lista över skalprogram
| paket | popcon | storlek | POSIX skal | beskrivning |
|---|---|---|---|---|
bash
|
V:874, I:999 | 7277 | Ja | Bash: GNU Bourne Again SHell (de facto-standard) |
bash-completion
|
V:35, I:954 | 1952 | N/A | programmerbar komplettering för bash-skalet |
dash
|
V:912, I:998 | 207 | Ja | Debian Almquist Shell, bra för shell-skript |
zsh
|
V:41, I:71 | 2509 | Ja | Z-skal: standardskalet med mÄnga förbÀttringar |
tcsh
|
V:4, I:16 | 1366 | Nej | TENEX C Shell: en förbÀttrad version av Berkeley csh |
mksh
|
V:5.6, I:8.3 | 7713 | Ja | En version av Korn-skalet |
csh
|
V:1.1, I:5.7 | 348 | Nej | OpenBSD C Shell, en version av Berkeley csh |
sash
|
V:0.4, I:5.3 | 1335 | Ja | FristÄende skal med inbyggda
kommandon (inte avsett för standard "/usr/bin/sh") |
ksh
|
V:0.4, I:8.7 | 65 | Ja | den riktiga AT&T-versionen av Korn-skalet |
rc
|
V:0.08, I:0.73 | 182 | Nej | implementering av AT&T Plan 9 rc-skal |
posh
|
V:0.01, I:0.24 | 187 | Ja | Policyanpassad ordinÀr SHell(pdksh-derivat) |
|
Tips |
|---|---|
|
Ăven om POSIX-liknande skal delar den grundlĂ€ggande syntaxen kan de skilja sig Ă„t i beteendet för sĂ„ grundlĂ€ggande saker som skalvariabler och glob-expansioner. Kontrollera deras dokumentation för detaljer. |
I det hÀr handledningskapitlet betyder det interaktiva skalet alltid
bash.
Du kan anpassa bash(1)-beteendet genom
"~/.bashrc".
Försök till exempel med följande.
# enable bash-completion
if ! shopt -oq posix; then
if [ -f /usr/share/bash-completion/bash_completion ]; then
. /usr/share/bash-completion/bash_completion
elif [ -f /etc/bash_completion ]; then
. /etc/bash_completion
fi
fi
# CD upon exiting MC
. /usr/lib/mc/mc.sh
# set CDPATH to a good one
CDPATH=.:/usr/share/doc:~:~/Desktop:~
export CDPATH
PATH="${PATH+$PATH:}/usr/sbin:/sbin"
# set PATH so it includes user's private bin if it exists
if [ -d ~/bin ] ; then
PATH="~/bin${PATH+:$PATH}"
fi
export PATH
EDITOR=vim
export EDITOR
|
Tips |
|---|---|
|
Du kan hitta fler tips för anpassning av |
|
Tips |
|---|---|
|
Paketet |
I den Unix-liknande miljön finns det nÄgra
tangenttryckningar som har speciella betydelser. Observera att pÄ en normal
Linux-teckenkonsol Àr det bara de vÀnstra tangenterna
Ctrl och Alt som fungerar som
förvÀntat. HÀr Àr nÄgra viktiga tangenttryckningar att komma ihÄg.
Tabell 1.14. Lista över tangentbindningar för bash
| nyckel | beskrivning av nyckelbindning |
|---|---|
Ctrl-U |
radera raden före markören |
Ctrl-H |
radera ett tecken före markören |
Ctrl-D |
avsluta inmatning (avsluta shell om du anvÀnder shell) |
Ctrl-C |
avsluta ett pÄgÄende program |
Ctrl-Z |
tillfÀlligt stoppa programmet genom att flytta det till bakgrundsjobbet |
Ctrl-S |
stoppa utmatningen till skÀrmen |
Ctrl-Q |
Äteraktivera utmatning till skÀrm |
Ctrl-Alt-Del |
starta om/halta upp systemet, se inittab(5) |
VĂ€nster-Alt-tangent (valfritt,
Windows-tangent) |
metaknapp för Emacs och liknande anvÀndargrÀnssnitt |
Up-arrow |
starta sökning i kommandohistoriken under bash |
Ctrl-R |
starta inkrementell sökning i kommandohistoriken under
bash |
Tab |
fullstÀndig inmatning av filnamnet till kommandoraden under
bash |
Ctrl-V Tab |
inmatning Tab utan expansion till kommandoraden under
bash |
|
Tips |
|---|---|
|
Terminalfunktionen i |
Musoperationer för text pÄ Debian-system blandar 2 stilar med nÄgra vÀndningar:
Traditionella musoperationer i Unix-stil:
anvÀnd 3 knappar (klicka)
anvÀnd PRIMARY
anvÀnds av X-program som xterm och textprogram i
Linux-konsolen
Moderna musoperationer i GUI-stil:
anvÀnd 2 knappar (dra + klicka)
anvÀnda PRIMARY och CLIPBOARD
anvÀnds i moderna GUI-program som gnome-terminal
Tabell 1.15. Lista över musoperationer och relaterade nyckelÄtgÀrder pÄ Debian
| ÄtgÀrd | respons |
|---|---|
| VĂ€nsterklicka-och-drag med musen | vĂ€lj intervall som PRIMĂRt urval |
| VÀnsterklicka | vÀlj början pÄ intervallet för PRIMARY-urvalet |
| Högerklicka (traditionellt) | vÀlj slutet av intervallet för PRIMARY-urval |
| Högerklicka (modernt) | kontextberoende meny (klippa/kopiera/klistra in) |
Mittenklicka eller Shift-Ins |
infoga PRIMARY-urval vid markören |
Ctrl-X |
klippa PRIMARY-valet till CLIPBOARD |
Ctrl-C(Skift-Ctrl-C i terminal) |
kopiera PRIMARY-urvalet till CLIPBOARD |
Ctrl-V |
klistra in CLIPBOARD vid markören |
HĂ€r Ă€r det PRIMĂRA valet det markerade textomrĂ„det. I terminalprogrammet
anvÀnds istÀllet Shift-Ctrl-C för att undvika att avsluta
ett pÄgÄende program.
Det mellersta hjulet pÄ en modern hjulmus betraktas som den mellersta musknappen och kan anvÀndas för mittklick. Om du klickar pÄ vÀnster och höger musknapp tillsammans fungerar det som ett mittklick i ett mussystem med 2 knappar.
För att kunna anvÀnda en mus i Linux teckenkonsoler mÄste du ha
gpm(8) igÄng som daemon.
Kommandot less(1) Àr en förbÀttrad pager
(filinnehÄllslÀsare). Det lÀser filen som anges av dess kommandoargument
eller dess standardinmatning. Tryck pÄ "h" om du behöver
hjÀlp nÀr du blÀddrar med kommandot less. Det kan göra
mycket mer Àn more(1) och kan förstÀrkas genom att köra
"eval $(lesspipe)" eller "eval
$(lessfile)" i skalets startskript. Se mer i
"/usr/share/doc/less/LESSOPEN". Alternativet
"-R" tillÄter utmatning av rÄa tecken och aktiverar
ANSI-fÀrg-escape-sekvenser. Se less(1).
|
Tips |
|---|---|
|
I kommandot |
Du bör bli skicklig i en av varianterna av Vim- eller Emacs-programmen som Àr populÀra i det Unix-liknande systemet.
Jag tror att det Àr rÀtt att vÀnja sig vid Vim-kommandon, eftersom Vi-editor
alltid finns dÀr i Linux/Unix-vÀrlden. (Egentligen Àr original
vi eller nya nvi program som du hittar
överallt. Jag valde Vim istÀllet för nybörjare eftersom det erbjuder dig
hjÀlp via F1-tangenten medan det Àr tillrÀckligt liknande
och kraftfullare.)
Om du valde antingen Emacs eller XEmacs istÀllet som ditt val av redigerare Àr det ett annat bra val, sÀrskilt för programmering. Emacs har en uppsjö av andra funktioner ocksÄ, inklusive att fungera som en nyhetslÀsare, katalogredigerare, e-postprogram etc. NÀr det anvÀnds för programmering eller redigering av skalskript kÀnner det pÄ ett intelligent sÀtt igen formatet pÄ det du arbetar med och försöker ge hjÀlp. En del mÀnniskor hÀvdar att det enda program de behöver pÄ Linux Àr Emacs. Tio minuters inlÀrning av Emacs nu kan spara timmar senare. Att ha GNU Emacs-manualen som referens nÀr du lÀr dig Emacs rekommenderas starkt.
Alla dessa program levereras vanligtvis med handledningsprogram sÄ att du
kan lÀra dig dem genom övning. Starta Vim genom att skriva
"vim" och tryck pÄ F1-tangenten. Du bör Ätminstone lÀsa
de första 35 raderna. Gör sedan online-utbildningskursen genom att flytta
markören till "|tutor|" och trycka pÄ
Ctrl-].
|
Notera |
|---|---|
|
Bra editorer, som Vim och Emacs, kan hantera UTF-8 och andra exotiska kodningstexter korrekt. Det Àr en god idé att anvÀnda GUI-miljön i UTF-8-lokalen och att installera nödvÀndiga program och teckensnitt i den. Redigerare har alternativ för att stÀlla in filkodningen oberoende av GUI-miljön. Se deras dokumentation om multibyte-text. |
Debian levereras med ett antal olika redigeringsprogram. Vi rekommenderar
att du installerar vim-paketet, som nÀmnts ovan.
Debian ger enhetlig Ätkomst till systemets standardredigerare via kommandot
"/usr/bin/editor" sÄ att andra program
(t.ex. reportbug(1)) kan anropa den. Du kan Àndra den pÄ
följande sÀtt.
$ sudo update-alternatives --config editor
Valet "/usr/bin/vim.basic" framför
"/usr/bin/vim.tiny" Àr min rekommendation för nybörjare
eftersom det stöder syntaxmarkering.
|
Tips |
|---|---|
|
MÄnga program anvÀnder miljövariablerna " |
Den nya vim(1) startar sig sjÀlv med det sunda
alternativet "nocompatible" och gÄr in i
NORMAL-lÀget.[1]
Tabell 1.16. Lista över grundlÀggande tangenttryckningar i Vim
| lÀge | tangenttryckningar | ÄtgÀrd |
|---|---|---|
NORMAL |
:help|only |
visa hjÀlpfilen |
NORMAL |
:e filnamn.ext |
öppna ny buffert för att redigera filnamn.ext |
NORMAL |
:w |
skriv över aktuell buffert till originalfilen |
NORMAL |
:w filename.ext |
skriv aktuell buffert till filnamn.ext |
NORMAL |
:q |
avsluta vim |
NORMAL |
:q! |
tvinga att avsluta vim |
NORMAL |
:only |
stÀng alla andra öppna fönster |
NORMAL |
:set nocompatible? |
kontrollera om vim Àr i det sunda
icke-kompatibla lÀget |
NORMAL |
:set nocompatible |
stÀlla in vim till det sunda
icke-kompatibla lÀget |
NORMAL |
i |
gÄ till INSERT-lÀget |
NORMAL |
R |
gÄ till REPLACE-lÀget |
NORMAL |
v |
gÄ till VISUAL-lÀget |
NORMAL |
V |
gÄ in i det linjÀra VISUAL-lÀget |
NORMAL |
Ctrl-V |
gÄ in i det blockvisa VISUAL-lÀget |
utom TERMINAL-JOB |
ESC-tangent |
gÄ till NORMAL-lÀge |
NORMAL |
:term |
gÄ till lÀget TERMINAL-JOB |
TERMINAL-NORMAL |
i |
gÄ till lÀget TERMINAL-JOB |
TERMINAL-JOB |
Ctrl-W N (eller
Ctrl-\ Ctrl-N) |
gÄ till lÀget TERMINAL-NORMAL |
TERMINAL-JOB |
Ctrl-W : |
gÄ in i Ex-lÀge i TERMINAL-NORMAL-lÀge |
AnvÀnd programmet "vimtutor" för att lÀra dig
vim genom en interaktiv handledningskurs.
Programmet vim Àndrar sitt beteende för inmatade
tangenttryckningar baserat pÄ lÀge. Att
skriva in tangenttryckningar till bufferten görs mest i
INFOGNING-lĂ€ge och ERSĂTT-lĂ€ge.
Flyttning av markören görs mestadels i NORMAL-lÀge.
Interaktiva val görs i VISUELLT-lÀge. Om du skriver
":" i NORMAL-lÀge Àndras lÀget till
Ex-lÀget. Ex-lÀget accepterar
kommandon.
|
Tips |
|---|---|
|
Vim levereras med Netrw-paketet. Netrw
stöder lÀsning av filer, skrivning av filer, blÀddring i kataloger över ett
nÀtverk och lokal blÀddring! Prova Netrw med " |
För avancerad konfiguration av vim, se Avsnitt 9.2, âAnpassa vimâ.
Utdata frÄn shell-kommandot kan rulla bort frÄn skÀrmen och gÄ förlorade för alltid. Det Àr bra att logga shell-aktiviteter i filen sÄ att du kan granska dem senare. Den hÀr typen av dokumentation Àr viktig nÀr du utför systemadministrativa uppgifter.
|
Tips |
|---|---|
|
Den nya Vim (version>=8.2) kan anvÀndas för att spela in
skalaktiviteterna pÄ ett rent sÀtt med hjÀlp av
|
Den grundlÀggande metoden för att registrera skalaktiviteten Àr att köra den
under script(1).
Försök till exempel med följande
$ script Script started, file is typescript
Utför de shell-kommandon som finns i skriptet.
Tryck pÄ Ctrl-D för att avsluta
skriptet.
$ vim typescript
Se Avsnitt 9.1.1, âSpela in skalaktiviteterna pĂ„ ett rent sĂ€ttâ.
LÄt oss lÀra oss grundlÀggande Unix-kommandon. HÀr anvÀnder jag "Unix" i
dess generiska betydelse. Alla Unix-klonade operativsystem erbjuder
vanligtvis motsvarande kommandon. Debian-systemet Àr inget undantag. Oroa
dig inte om vissa kommandon inte fungerar som du önskar nu. Om
alias anvÀnds i skalet Àr motsvarande kommandoutgÄngar
annorlunda. De hÀr exemplen Àr inte avsedda att utföras i den hÀr
ordningen.
Prova alla följande kommandon frÄn det icke-privilegierade anvÀndarkontot.
Tabell 1.17. Lista över grundlÀggande Unix-kommandon
| kommando | beskrivning |
|---|---|
pwd |
visningsnamn för aktuell katalog/arbetskatalog |
whoami |
visa aktuellt anvÀndarnamn |
id |
visa aktuell anvÀndaridentitet (namn, uid, gid och tillhörande grupper) |
file foo |
visa en filtyp för filen "foo" |
type -p commandname |
visa en filplats för kommandot
"kommandonamn" |
which commandname |
, , |
type commandname |
visa information om kommandot
"kommandonamn" |
apropos nyckelord |
hitta kommandon relaterade till
"nyckelord" |
man -k nyckelord |
, , |
whatis kommandonamn |
visa en förklaring pÄ en rad för kommandot
"kommandonamn" |
man -a commandname |
visa förklaring till kommandot
"kommandonamn" (Unix-stil) |
info kommandonamn |
visa en ganska lÄng förklaring pÄ kommandot
"kommandonamn" (GNU-stil) |
ls |
lista innehÄllet i en katalog (icke-dot-filer och kataloger) |
ls -a |
lista innehÄllet i en katalog (alla filer och kataloger) |
ls -A |
lista innehÄllet i en katalog (nÀstan alla filer och kataloger, d.v.s. hoppa
över "..." och ".") |
ls -la |
lista allt innehÄll i katalogen med detaljerad information |
ls -lai |
lista allt innehÄll i katalogen med inode-nummer och detaljerad information |
ls -d |
lista alla kataloger under den aktuella katalogen |
tree |
visa innehÄllet i filtrÀdet |
lsof foo |
lista öppen status för filen "foo" |
lsof -p pid |
lista över filer som öppnats av process-ID:
"pid" |
mkdir foo |
skapa en ny katalog "foo" i den
aktuella katalogen |
rmdir foo |
ta bort en katalog "foo" i den
aktuella katalogen |
cd foo |
Ă€ndra katalog till katalogen "foo" i
den aktuella katalogen eller i den katalog som anges i variabeln
"$CDPATH" |
cd / |
Ă€ndra katalog till rotkatalogen |
cd |
Àndra katalog till den aktuella anvÀndarens hemkatalog |
cd /foo |
Àndra katalog till den absoluta sökvÀgen katalog
"/foo" |
cd .. |
Àndra katalog till den överordnade katalogen |
cd ~foo |
Àndra katalog till hemkatalogen för anvÀndaren
"foo" |
cd - |
Àndra katalog till föregÄende katalog |
</etc/motd pager |
visa innehÄllet i "/etc/motd" med hjÀlp av standard
personsökaren |
touch junkfile |
skapa en tom fil "skrÀpfil" |
cp foo bar |
kopiera en befintlig fil "foo" till
en ny fil "bar" |
rm skrÀpfil |
ta bort en fil "skrÀpfil" |
mv foo bar |
byta namn pÄ en befintlig fil "foo"
till ett nytt namn "bar"
("bar" fÄr inte existera) |
mv foo bar |
flytta en befintlig fil "foo" till
en ny
plats"bar/foo"
(katalogen "bar" mÄste existera) |
mv foo
bar/baz |
flytta en befintlig fil "foo" till
en ny plats med det nya namnet
"bar/baz"
(katalogen "bar" mÄste finnas men
katalogen
"bar/baz" fÄr
inte finnas) |
chmod 600 foo |
gör en befintlig fil "foo" till att
vara icke-lÀsbar och icke-skrivbar av de andra personerna (icke-exekverbar
för alla) |
chmod 644 foo |
gör en befintlig fil "foo" sÄ att
den blir lÀsbar men inte skrivbar för andra personer (ej exekverbar för
alla) |
chmod 755 foo |
gör en befintlig fil "foo" sÄ att
den blir lÀsbar men inte skrivbar av andra personer (körbar för alla) |
find . -name pattern |
hitta matchande filnamn med hjÀlp av shell
"mönster" (lÄngsammare) |
locate -d . pattern |
hitta matchande filnamn med hjÀlp av shell
"mönster" (snabbare med hjÀlp av
regelbundet genererad databas) |
grep -e "mönster" *.html |
hitta ett "mönster" i alla filer som
slutar med ".html" i den aktuella katalogen och visa dem
alla |
top |
visa processinformation i helskÀrm, skriv "q" för att
avsluta |
ps aux | pager |
visa information om alla processer som körs med BSD-stil |
ps -ef | pager |
visa information om alla processer som körs med hjÀlp av Unix system-V-stil |
ps aux | grep -e "[e]xim4*" |
visa alla processer som körs "exim" och
"exim4" |
ps axf | pager |
visa information om alla processer som körs med ASCII-bildutskrift |
kill 1234 |
döda en process som identifieras av process-ID:"1234" |
gzip foo |
komprimera "foo" för att
skapa"foo.gz" med hjÀlp av
Lempel-Ziv-kodning (LZ77) |
gunzip foo.gz |
dekomprimera"foo.gz" för att skapa
"foo" |
bzip2 foo |
komprimera "foo" för att
skapa"foo.bz2" med Burrows-Wheeler
blocksorteringsalgoritm för textkomprimering och Huffman-kodning (bÀttre
komprimering Àn gzip) |
bunzip2 foo.bz2 |
dekomprimera"foo.bz2" för att skapa
"foo" |
xz foo |
komprimera "foo" för att
skapa"foo.xz" med hjÀlp av
Lempel-Ziv-Markov-kedjealgoritmen (bÀttre komprimering Àn
bzip2) |
unxz foo.xz |
dekomprimera"foo.xz" för att skapa
"foo" |
tar -xvf foo.tar |
extrahera filer frÄn
arkivet"foo.tar" |
tar -xvzf foo.tar.gz |
extrahera filer frÄn
gzippat"foo.tar.gz"-arkiv |
tar -xvjf foo.tar.bz2 |
extrahera filer frÄn
arkivet"foo.tar.bz2" |
tar -xvJf foo.tar.xz |
extrahera filer frÄn
arkivet"foo.tar.xz" |
tar -cvf foo.tar
bar/ |
arkivera innehÄllet i mappen"bar/" i
arkivet"foo.tar" |
tar -cvzf foo.tar.gz
bar/ |
arkivera innehÄllet i mappen"bar/" i
det komprimerade arkivet"foo.tar.gz" |
tar -cvjf foo.tar.bz2
bar/ |
arkivera innehÄllet i mappen"bar/" i
arkivet"foo.tar.bz2" |
tar -cvJf foo.tar.xz
bar/ |
arkivinnehÄllet i mappen"bar/" i
arkivet"foo.tar.xz" |
zcat README.gz | pager |
visa innehÄllet i den komprimerade filen "README.gz" med
hjÀlp av standardsökaren |
zcat README.gz > foo |
skapa en fil "foo" med det dekomprimerade innehÄllet i
"README.gz" |
zcat README.gz >> foo |
lÀgg till det dekomprimerade innehÄllet i "README.gz" i
slutet av filen "foo" (om den inte finns, skapa den
först) |
|
Notera |
|---|---|
|
Unix har en tradition att dölja filnamn som börjar med
" För Standard personsökaren i Debian-systemet med bara ben Àr
" |
GÄ igenom kataloger och kika in i systemet med hjÀlp av ovanstÄende kommandon som trÀning. Om du har frÄgor om nÄgot av konsolkommandona kan du lÀsa manualsidan.
Försök till exempel med följande
$ man man $ man bash $ man builtins $ man grep $ man ls
Stilen pÄ man pages kan vara lite svÄr att vÀnja sig vid, eftersom de Àr ganska kortfattade, sÀrskilt de Àldre, mycket traditionella. Men nÀr man vÀl har vant sig kommer man att uppskatta deras kortfattade form.
Observera att mÄnga Unix-liknande kommandon, inklusive de frÄn GNU och BSD, visar kortfattad hjÀlpinformation om du anropar dem pÄ nÄgot av följande sÀtt (eller utan nÄgra argument i vissa fall).
$ commandname --help $ commandname -h
Nu har du en viss kÀnsla för hur man anvÀnder Debian-systemet. LÄt oss
titta djupt in i mekanismen för kommandokörning i Debiansystemet. HÀr har
jag förenklat verkligheten för nybörjaren. Se bash(1)
för den exakta förklaringen.
Ett enkelt kommando Àr en sekvens av komponenter.
Tilldelning av variabler (valfritt)
Kommando namn
Argument (valfritt)
Omdirigeringar (valfritt: >,
>>, <,
<<, etc.)
Kontrolloperator (valfritt: && ,
||, nyrad, ;,
&, (, ) )
VÀrdena pÄ vissa miljövariabler Àndrar beteendet hos vissa Unix-kommandon.
StandardvÀrdena för miljövariablerna faststÀlls initialt av PAM-systemet och sedan kan vissa av dem ÄterstÀllas av vissa tillÀmpningsprogram.
PAM-systemet, t.ex. pam_env, kan stÀlla in miljövariabler
med /etc/pam.conf", "/etc/environment"
och "/etc/default/locale".
Displayhanteraren, t.ex. gdm3, kan ÄterstÀlla
miljövariablerna för GUI-sessionen med "~/.profile".
Den anvÀndarspecifika programinitialiseringen kan ÄterstÀlla miljövariabler
genom "~/.profile", "~/.bash_profile"
och "~/.bashrc".
Standardlokalen definieras i miljövariabeln "$LANG" och
konfigureras som "LANG=xx_YY.UTF-8" av
installationsprogrammet eller av den efterföljande grafiska
grĂ€nssnittskonfigurationen, t.ex. "InstĂ€llningar" â "Region och sprĂ„k" â
"SprÄk" / "Format" för GNOME.
|
Notera |
|---|---|
|
Jag rekommenderar att du för tillfÀllet bara konfigurerar systemmiljön med
variabeln " |
Det fullstÀndiga locale-vÀrdet som ges till variabeln
"$LANG" bestÄr av 3 delar:
"xx_YY.ZZZZ".
Tabell 1.18. De 3 delarna av locale-vÀrdet
| lokalt vÀrde | betydelse |
|---|---|
xx |
ISO 639 sprÄkkoder (gemener) som t.ex. "en" |
YY |
ISO 3166 landskoder (versaler), t.ex. "US" |
ZZZZ |
codeset, alltid instÀlld pÄ "UTF-8" |
Tabell 1.19. Lista över lokala rekommendationer
| lokal rekommendation | SprÄk (omrÄde) |
|---|---|
en_US.UTF-8 |
Engelska (USA) |
en_GB.UTF-8 |
Engelska (Storbritannien) |
fr_FR.UTF-8 |
Franska (Frankrike) |
de_DE.UTF-8 |
Tyska (Tyskland) |
it_IT.UTF-8 |
Italien (Italienska) |
es_ES.UTF-8 |
Spanien (Spanska) |
ca_ES.UTF-8 |
Katalanska (Spanien) |
sv_SE.UTF-8 |
Svenska (Sverige) |
pt_BR.UTF-8 |
Portugisiska (Brasiliansk) |
ru_RU.UTF-8 |
Ryska (Ryssland) |
zh_CN.UTF-8 |
Kinesiska (f.d. republiken Kina) |
zh_TW.UTF-8 |
Kinesiska (Taiwan R.O.C.) |
ja_JP.UTF-8 |
Japanska (Japan) |
ko_KR.UTF-8 |
Koreanska (Republiken Korea) |
vi_VN.UTF-8 |
Vietnamesiska (Vietnam) |
Ett typiskt kommando utförs med en skalradsekvens enligt följande.
$ echo $LANG en_US.UTF-8 $ date -u Wed 19 May 2021 03:18:43 PM UTC $ LANG=fr_FR.UTF-8 date -u mer. 19 mai 2021 15:19:02 UTC
HÀr körs programmet date(1) med olika locale-vÀrden.
För det första kommandot Àr "$LANG" instÀllt pÄ systemets
standardvÀrde för locale
"en_US.UTF-8".
För det andra kommandot sÀtts "$LANG" till det franska
UTF-8-lokalvÀrdet
"fr_FR.UTF-8".
De flesta kommandokörningar har vanligtvis inte nÄgon föregÄende miljövariabeldefinition. I exemplet ovan kan du alternativt köra kommandot pÄ följande sÀtt.
$ LANG=fr_FR.UTF-8 $ date -u mer. 19 mai 2021 15:19:24 UTC
|
Tips |
|---|---|
|
NÀr du lÀmnar in en felrapport Àr det en bra idé att köra och kontrollera
kommandot under " |
För mer detaljerad information om locale-konfigurationen, se Avsnitt 8.1, âLokalenâ.
NÀr du skriver in ett kommando i skalet söker skalet efter kommandot i
listan över kataloger som finns i miljövariabeln
"$PATH". VÀrdet pÄ miljövariabeln
"$PATH" kallas ocksÄ för skalets sökvÀg.
I standardinstallationen av Debian kanske miljövariabeln
"$PATH" för anvÀndarkonton inte inkluderar
"/usr/sbin" och "/usr/sbin". Till
exempel mÄste kommandot ifconfig utfÀrdas med fullstÀndig
sökvÀg som "/usr/sbin/ifconfig". (Liknande
ip-kommando finns i "/usr/bin".)
Du kan Àndra miljövariabeln "$PATH" i Bash-skalet med
filerna "~/.bash_profile" eller
"~/.bashrc".
MÄnga kommandon lagrar anvÀndarspecifik konfiguration i hemkatalogen och
Àndrar sitt beteende med hjÀlp av innehÄllet. Hemkatalogen identifieras av
miljövariabeln "$HOME".
Tabell 1.20. Lista över "$HOME"-vÀrden
vÀrdet av "$HOME" |
programgenomförande situation |
|---|---|
/ |
program som körs av init-processen (daemon) |
/root |
program som körs frÄn det normala rotskalet |
/home/normal_user |
program som körs frÄn det vanliga anvÀndarskalet |
/home/normal_user |
programmet körs frÄn den vanliga GUI-skrivbordsmenyn för anvÀndare |
/home/normal_user |
program körs som root med "sudo program" |
/root |
program körs som root med "sudo -H program" |
|
Tips |
|---|---|
|
Shell expanderar " |
Se Avsnitt 12.1.5, âShell-miljövariablerâ om
$HOME inte Àr tillgÀngligt för ditt program.
Vissa kommandon tar emot argument. Argument som börjar med
"-" eller "--" kallas alternativ och
styr kommandots beteende.
$ date Thu 20 May 2021 01:08:08 AM JST $ date -R Thu, 20 May 2021 01:08:12 +0900
HÀr Àndrar kommandoradsargumentet "-R"
date(1)-beteendet sÄ att datumstrÀngen matas ut i
enlighet med RFC2822.
Ofta vill man att ett kommando ska fungera med en grupp filer utan att man behöver skriva in dem alla. Filnamnsexpansionsmönstret med hjÀlp av shell glob, (ibland kallat wildcards), underlÀttar detta behov.
Tabell 1.21. Mönster för skalglob
| skalglobsmönster | beskrivning av matchningsregel |
|---|---|
* |
filnamnet (segmentet) börjar inte med "." |
.* |
filnamn (segment) inleds med "." |
? |
exakt ett tecken |
[âŠ] |
exakt ett tecken med alla tecken inom parentes |
[a-z] |
exakt ett tecken med valfritt tecken mellan "a" och
"z" |
[^âŠ] |
exakt ett annat tecken Àn nÄgot tecken inom parentes (utom
"^") |
Försök till exempel med följande
$ mkdir junk; cd junk; touch 1.txt 2.txt 3.c 4.h .5.txt ..6.txt $ echo *.txt 1.txt 2.txt $ echo * 1.txt 2.txt 3.c 4.h $ echo *.[hc] 3.c 4.h $ echo .* . .. .5.txt ..6.txt $ echo .*[^.]* .5.txt ..6.txt $ echo [^1-3]* 4.h $ cd ..; rm -rf junk
Se glob(7).
|
Notera |
|---|---|
|
Till skillnad frÄn normal filnamnsexpansion av skalet, matchar skalmönstret
" |
|
Notera |
|---|---|
|
BASH kan anpassas för att Àndra globbeteendet med de inbyggda alternativen i
shopt, t.ex. " |
Varje kommando returnerar sin exit-status (variabel:
"$?") som returvÀrde.
Tabell 1.22. Kommandots utgÄngskoder
| kommando UtgÄngsstatus | numeriskt returvÀrde | logiskt returvÀrde |
|---|---|---|
| lyckades | noll, 0 | SANT |
| fel | ej noll, -1 | FALSK |
Försök till exempel med följande.
$ [ 1 = 1 ] ; echo $? 0 $ [ 1 = 2 ] ; echo $? 1
|
Notera |
|---|---|
|
Observera att i det logiska sammanhanget för skalet behandlas framgÄng som det logiska TRUE som har 0 (noll) som sitt vÀrde. Detta Àr nÄgot icke-intuitivt och behöver pÄminnas om hÀr. |
LÄt oss försöka komma ihÄg följande shell-kommandon som skrivs pÄ en rad som en del av shell-kommandot.
Tabell 1.23. Idiom för Shell-kommandon
| kommando idiom | beskrivning |
|---|---|
command & |
bakgrundskörning av
kommando i underskalet |
kommando1 | kommando2 |
AnvÀnd pipe för standard ut frÄn
kommando1 till standard in frÄn
kommando2 (samtidig
körning) |
command1 2>&1 | command2 |
skicka bÄde standardutdata och
standardfel frÄn kommando1 till standardinmatningen för
kommando2(samtidig
körning) |
command1 ; command2 |
utföra kommando1 och kommando2
sekventiellt |
command1 && command2 |
kör kommando1; om det lyckas, kör
kommando2 sekventiellt
(returnerar success om bÄde kommando1 och kommando2 lyckas) |
command1 || command2 |
kör kommando1; om det inte lyckas, kör
kommando2 sekventiellt
(returnerar success om kommando1 eller kommando2 lyckas) |
command > foo |
omdirigera kommandots standardutdata till en fil
foo (överskriva) |
command 2> foo |
omdirigera kommandots standardfel till en fil
foo (överskriva) |
command >> foo |
omdirigera standardutdata frÄn kommandot till en fil
foo (append) |
command 2>> foo |
omdirigera kommandots standardfel till en fil
foo (append) |
kommando > foo 2>&1 |
omdirigera bÄde standardutdata och standardfel för
kommandot till en fil foo |
command < foo |
omdirigera kommandots standardinmatning till en fil
foo |
command << delimiter |
omdirigera kommandots standardinmatning till följande
rader tills "delimiter" uppfylls (hÀr dokument) |
command <<- delimiter |
omdirigera kommandots standardinmatning till följande
rader tills "delimiter" uppfylls (hÀr dokument, de
inledande tabbtecknen tas bort frÄn inmatningsraderna) |
Debian-systemet Àr ett multitasking-system. Bakgrundsjobb gör det möjligt
för anvÀndare att köra flera program i ett enda skal. Hanteringen av
bakgrundsprocessen involverar skalets inbyggda funktioner:
jobs, fg, bg och
kill. LĂ€s avsnitten i bash(1) under "SIGNALER" och
"JOBBKONTROLL" och builtins(1).
Försök till exempel med följande
$ </etc/motd pager
$ pager </etc/motd
$ pager /etc/motd
$ cat /etc/motd | pager
Ăven om alla fyra exemplen pĂ„ omdirigeringar av skal visar samma sak, kör
det sista exemplet ett extra cat-kommando och slösar
resurser utan anledning.
Med skalet kan du öppna filer med hjÀlp av den inbyggda funktionen
exec med en godtycklig filbeskrivare.
$ echo Hello >foo $ exec 3<foo 4>bar # open files $ cat <&3 >&4 # redirect stdin to 3, stdout to 4 $ exec 3<&- 4>&- # close files $ cat bar Hello
Filbeskrivarna 0-2 Àr fördefinierade.
Tabell 1.24. Fördefinierade filbeskrivare
| enhet | beskrivning | filbeskrivare |
|---|---|---|
stdin |
standardinmatning | 0 |
stdout |
standardutgÄng | 1 |
stderr |
standardfel | 2 |
Du kan stÀlla in ett alias för ett ofta anvÀnt kommando.
Försök till exempel med följande
$ alias la='ls -la'
Nu fungerar "la" som en förkortning av "ls
-la" som listar alla filer i formatet "long listing".
Du kan lista alla befintliga alias med alias (se
bash(1) under "SHELL BUILTIN COMMANDS").
$ alias ... alias la='ls -la'
Du kan identifiera den exakta sökvÀgen eller identiteten för kommandot efter
typ (se bash(1) under "SHELL BUILTIN
COMMANDS").
Försök till exempel med följande
$ type ls ls is hashed (/bin/ls) $ type la la is aliased to ls -la $ type echo echo is a shell builtin $ type file file is /usr/bin/file
HÀr söktes ls nyligen medan "file"
inte gjorde det, sÄ "ls" Àr "hashed", dvs. skalet har ett
internt register för snabb Ätkomst till platsen för kommandot
"ls".
I Unix-liknande arbetsmiljöer sker textbearbetningen genom att texten skickas genom kedjor av standardverktyg för textbearbetning. Detta var en annan viktig Unix-innovation.
Det finns ett fÄtal standardverktyg för textbehandling som anvÀnds mycket ofta i Unix-liknande system.
Inget reguljÀrt uttryck anvÀnds:
cat(1) sammanfogar filer och skriver ut hela innehÄllet.
tac(1) sammanfogar filer och matar ut dem i omvÀnd
ordning.
cut(1) vÀljer ut delar av rader och utdata.
head(1) matar ut den första delen av filerna.
tail(1) matar ut den sista delen av filer.
sort(1) sorterar rader i textfiler.
uniq(1) tar bort dubbletter av rader frÄn en sorterad
fil.
tr(1) översÀtter eller raderar tecken.
diff(1) jÀmför filer rad för rad.
GrundlÀggande reguljÀra uttryck(BRE) anvÀnds som standard:
ed(1) Àr en primitiv linjeeditor.
sed(1) Àr en strömredigerare.
grep(1) matchar text med mönster.
vim(1) Àr en skÀrmredigerare.
emacs(1) Àr en skÀrmredigerare. (nÄgot utökad BRE)
Utökat reguljÀrt uttryck(ERE) anvÀnds:
awk(1) gör enkel textbearbetning.
egrep(1) matchar text med mönster.
tcl(3tcl) kan göra all tÀnkbar textbehandling: Se
re_syntax(3). AnvÀnds ofta med
tk(3tk).
perl(1) kan göra all tÀnkbar textbehandling. Se
perlre(1).
pcre2grep(1) frÄn pcregrep-paketet
matchar text med Perl
Compatible Regular Expressions (PCRE) -mönster.
python(1) med modulen re kan göra all
tÀnkbar textbehandling. Se
"/usr/share/doc/python/html/index.html".
Om du inte Àr sÀker pÄ exakt vad dessa kommandon gör kan du anvÀnda
"man command" för att ta reda pÄ det sjÀlv.
|
Notera |
|---|---|
|
Sorteringsordning och intervalluttryck Ă€r lokalberoende. Om du vill att ett kommando ska fungera pĂ„ traditionellt sĂ€tt ska du anvĂ€nda C locale eller C.UTF-8 locale i stĂ€llet för normala UTF-8 locale (se Avsnitt 8.1, âLokalenâ). |
|
Notera |
|---|---|
|
ReguljÀra uttryck i Perl |
ReguljÀra uttryck anvÀnds i mÄnga textbehandlingsverktyg. De Àr analoga med shell globs, men de Àr mer komplicerade och kraftfulla.
Det reguljÀra uttrycket beskriver matchningsmönstret och bestÄr av texttecken och metatecken.
Ett metatecken Àr bara ett tecken med en speciell betydelse. Det finns tvÄ huvudstilar, BRE och ERE, beroende pÄ textverktygen enligt beskrivningen ovan.
Tabell 1.25. Metatecken för BRE och ERE
| BRE | ERE | beskrivning av det reguljÀra uttrycket |
|---|---|---|
\ . [ ] ^ $ * |
\ . [ ] ^ $ * |
gemensamma metatecken |
\+ \? \( \) \{ \} \| |
 | BRE endast "\" escapade metatecken |
| Â | + ? ( ) { } | |
ERE endast icke-"\"-escapade metatecken |
c |
c |
matcha icke-metatecken
"c" |
\c |
\c |
matcha ett bokstavligt tecken "c" Àven om
"c" Àr metatecken
sjÀlv |
. |
. |
matcha alla tecken inklusive ny rad |
^ |
^ |
position i början av en strÀng |
$ |
$ |
position i slutet av en strÀng |
\< |
\< |
position i början av ett ord |
\> |
\> |
position i slutet av ett ord |
[abcâŠ] |
[abcâŠ] |
matcha alla tecken i "abc..." |
[^abcâŠ] |
[^abcâŠ] |
matcha alla tecken utom i "abc..." |
r* |
r* |
matcha noll eller flera reguljÀra uttryck som identifieras av
"r" |
r\+ |
r+ |
matcha ett eller flera reguljÀra uttryck som identifieras av
"r" |
r\? |
r? |
matcha noll eller ett reguljÀrt uttryck som identifieras av
"r" |
r1\|r2 |
r1|r2 |
matcha ett av de reguljÀra uttryck som identifieras av
"r1" eller "r2" |
\(r1\|r2\) |
(r1|r2) |
matcha ett av de reguljÀra uttryck som identifieras av
"r1" eller "r2" och behandla det som
ett reguljÀrt uttryck inom parentes |
Det reguljÀra uttrycket för emacs Àr i princip BRE men har utökats till att behandla
"+" och "?" som metatecken som i ERE. Det finns alltsÄ inget behov av att undkomma
dem med "\" i det reguljÀra uttrycket i
emacs.
grep(1) kan anvÀndas för att utföra en textsökning med
hjÀlp av ett reguljÀrt uttryck.
Försök till exempel med följande
$ egrep 'GNU.*LICENSE|Yoyodyne' /usr/share/common-licenses/GPL GNU GENERAL PUBLIC LICENSE GNU GENERAL PUBLIC LICENSE Yoyodyne, Inc., hereby disclaims all copyright interest in the program
För ersÀttningsuttrycket har vissa tecken sÀrskilda betydelser.
Tabell 1.26. ErsÀttningsuttrycket
| ersÀttningsuttryck | beskrivning av den text som ska ersÀtta ersÀttningsuttrycket |
|---|---|
& |
vad det reguljÀra uttrycket matchade (anvÀnd \& i
emacs) |
\n |
vad det n:te reguljÀra uttrycket inom parentes matchade ("n" Àr ett nummer) |
För ersÀttningsstrÀngar i Perl anvÀnds "$&" i stÀllet för "&" och "$n" i stÀllet för "\n".
Försök till exempel med följande
$ echo zzz1abc2efg3hij4 | \ sed -e 's/\(1[a-z]*\)[0-9]*\(.*\)$/=&=/' zzz=1abc2efg3hij4= $ echo zzz1abc2efg3hij4 | \ sed -E -e 's/(1[a-z]*)[0-9]*(.*)$/=&=/' zzz=1abc2efg3hij4= $ echo zzz1abc2efg3hij4 | \ perl -pe 's/(1[a-z]*)[0-9]*(.*)$/=$&=/' zzz=1abc2efg3hij4= $ echo zzz1abc2efg3hij4 | \ sed -e 's/\(1[a-z]*\)[0-9]*\(.*\)$/\2===\1/' zzzefg3hij4===1abc $ echo zzz1abc2efg3hij4 | \ sed -E -e 's/(1[a-z]*)[0-9]*(.*)$/\2===\1/' zzzefg3hij4===1abc $ echo zzz1abc2efg3hij4 | \ perl -pe 's/(1[a-z]*)[0-9]*(.*)$/$2===$1/' zzzefg3hij4===1abc
HÀr bör du vara extra uppmÀrksam pÄ stilen för det parentesförsedda reguljÀra uttrycket och hur de matchade strÀngarna anvÀnds i textutbytesprocessen i olika verktyg.
Dessa reguljÀra uttryck kan ocksÄ anvÀndas för markörrörelser och textutbyte i vissa redigeringsverktyg.
Det bakre snedstrecket "\" i slutet av raden i
shell-kommandoraden undviker newline som ett tecken för vitt utrymme och
fortsÀtter inmatningen i shell-kommandoraden till nÀsta rad.
LÀs alla relaterade manualsidor för att lÀra dig dessa kommandon.
Kommandot ed(1) kan ersÀtta alla förekomster av
"FROM_REGEX" med "TO_TEXT" i
"file".
$ ed file <<EOF ,s/FROM_REGEX/TO_TEXT/g w q EOF
Kommandot sed(1) kan ersÀtta alla förekomster av
"FROM_REGEX" med "TO_TEXT" i
"file".
$ sed -i -e 's/FROM_REGEX/TO_TEXT/g' file
Kommandot vim(1) kan ersÀtta alla förekomster av
"FROM_REGEX" med "TO_TEXT" i
"file" med hjÀlp av ex(1)-kommandon.
$ vim '+%s/FROM_REGEX/TO_TEXT/gc' '+update' '+q' file
|
Tips |
|---|---|
|
" |
Flera filer ( "file1", "file2" och
"file3") kan bearbetas med reguljÀra uttryck pÄ samma
sÀtt som i vim(1) eller perl(1).
$ vim '+argdo %s/FROM_REGEX/TO_TEXT/gce|update' '+q' file1 file2 file3
|
Tips |
|---|---|
|
Flaggan " |
$ perl -i -p -e 's/FROM_REGEX/TO_TEXT/g;' file1 file2 file3
I exemplet med perl(1) stÄr "-i" för redigering pÄ plats
av varje mÄlfil och "-p" för en implicit loop över alla
givna filer.
|
Tips |
|---|---|
|
Om du anvÀnder argumentet " |
|
Notera |
|---|---|
|
|
LÄt oss betrakta en textfil som heter "DPL" i vilken
nÄgra Debian-projektledares namn frÄn före 2004 och deras startdatum listas
i ett mellanslagsseparerat format.
Ian Murdock August 1993 Bruce Perens April 1996 Ian Jackson January 1998 Wichert Akkerman January 1999 Ben Collins April 2001 Bdale Garbee April 2002 Martin Michlmayr March 2003
|
Tips |
|---|---|
|
Se "En kort historik över Debian" för den senaste historiken över Debians ledarskap. |
Awk anvÀnds ofta för att extrahera data frÄn den hÀr typen av filer.
Försök till exempel med följande
$ awk '{ print $3 }' <DPL # month started
August
April
January
January
April
April
March
$ awk '($1=="Ian") { print }' <DPL # DPL called Ian
Ian Murdock August 1993
Ian Jackson January 1998
$ awk '($2=="Perens") { print $3,$4 }' <DPL # When Perens started
April 1996
Skal som Bash kan ocksÄ anvÀndas för att analysera den hÀr typen av filer.
Försök till exempel med följande
$ while read first last month year; do
echo $month
done <DPL
... same output as the first Awk example
HÀr anvÀnder det inbyggda kommandot read tecken i
"$IFS" (internal field separators) för att dela upp rader
i ord.
Om du Àndrar "$IFS" till ":" kan du
analysera "/etc/passwd" pÄ ett snyggt sÀtt med shell.
$ oldIFS="$IFS" # save old value
$ IFS=':'
$ while read user password uid gid rest_of_line; do
if [ "$user" = "bozo" ]; then
echo "$user's ID is $uid"
fi
done < /etc/passwd
bozo's ID is 1000
$ IFS="$oldIFS" # restore old value
(Om Awk anvÀnds för att göra motsvarande, anvÀnd "FS=':'"
för att ange fÀltseparatorn)
IFS anvÀnds ocksÄ av skalet för att dela upp resultat av parameterutvidgning, kommandosubstitution och aritmetisk utbyggnad. Dessa förekommer inte inom dubbel- eller enkelciterade ord. StandardvÀrdet för IFS Àr mellanslag, tabb och ny rad kombinerat.
Var försiktig med att anvÀnda detta shell IFS-trick. Konstiga saker kan hÀnda, nÀr skalet tolkar vissa delar av skriptet som dess input.
$ IFS=":," # use ":" and "," as IFS $ echo IFS=$IFS, IFS="$IFS" # echo is a Bash builtin IFS= , IFS=:, $ date -R # just a command output Sat, 23 Aug 2003 08:30:15 +0200 $ echo $(date -R) # sub shell --> input to main shell Sat 23 Aug 2003 08 30 36 +0200 $ unset IFS # reset IFS to the default $ echo $(date -R) Sat, 23 Aug 2003 08:30:50 +0200
Följande skript gör trevliga saker som en del av en pipe.
Tabell 1.27. Lista över skriptutdrag för piping-kommandon
| skriptutdrag (skriv en rad) | effekt av kommando |
|---|---|
find /usr -print |
hitta alla filer under "/usr" |
seq 1 100 |
skriv 1 till 100 |
| xargs -n 1 command |
kör kommandot upprepade gÄnger med varje objekt frÄn pipe som argument |
| xargs -n 1 echo |
dela upp white-space-separerade objekt frÄn pipe i linjer |
| xargs echo |
sammanfoga alla linjer frÄn röret till en linje |
| grep -e regex_pattern |
extrahera rader frÄn rör som innehÄller regex_mönster |
| grep -v -e regex_pattern |
extrahera rader frÄn rör som inte innehÄller regex_mönster |
| cut -d: -f3 - |
extrahera tredje fÀltet frÄn pipe separerat med ":"
(passwd-fil etc.) |
| awk '{ print $3 }' |
extrahera tredje fÀltet frÄn pipe separerat med blanksteg |
| awk -F'\t' '{ print $3 }' |
extrahera tredje fÀltet frÄn rör separerat med flik |
| col -bx |
ta bort backspace och expandera tabbar till mellanslag |
| expand - |
expandera flikar |
| sort| uniq |
sortera och ta bort dubbletter |
| tr 'A-Z' 'a-z' |
konvertera versaler till gemener |
| tr -d '\n' |
sammanfoga rader till en rad |
| tr -d '\r' |
ta bort CR |
| sed 's/^/# /' |
lÀgg till "#" i början av varje rad |
| sed 's/\.ext//g' |
ta bort .ext |
| sed -n -e 2p |
skriv ut den andra raden |
| head -n 2 - |
skriv ut de första 2 raderna |
| tail -n 2 - |
skriv ut de 2 sista raderna |
Ett skalskript pÄ en rad kan loopa över mÄnga filer med hjÀlp av
find(1) och xargs(1) för att utföra
ganska komplicerade uppgifter. Se Avsnitt 10.1.5, âIdiom för urval av filerâ och Avsnitt 9.4.9, âUpprepa ett kommando loopa över filerâ.
NĂ€r det blir för komplicerat att anvĂ€nda det interaktiva lĂ€get i skalet kan du övervĂ€ga att skriva ett skalskript (se Avsnitt 12.1, âShell-skriptetâ).
[1] Ăven den Ă€ldre vim kan starta i det sunda lĂ€get
"nocompatible" genom att starta den med alternativet
"-N".