Sex Linux-terminalsparare
Huralias
Att använda terminalen i Linux kan vara snabbare och mer produktiv än att använda en GUI, speciellt vid upprepade operationer. För att få ut det mesta, hjälper det att känna till några av skalets hemligheter.
Finner du ofta att du skriver i samma kommandotillfällen om och om igen? Har du ibland problem med att komma ihåg de rätta alternativen? Är du bara lat och vill undvika att skriva när det är möjligt? Om du svarade ja på någon av dessa är aliaserna för dig.
Du har redan några skalaliaser uppställda. För att lista dem, skriv:
alias
som kommer att returnera poster som detta (från Ubuntu):
alias ll = "ls -alF"
alias ls = "ls - färg = auto"
Det första av dessa exempel är enkelt - om du skriver in ll, den springer ls -A. Den andra är smartare, eftersom aliaset är detsamma som kommandonamnet, så det gamla ls-beteendet försvinner och det körs alltid med --color = auto alternativ.
Om du befinner dig alltid använder vissa alternativ med särskilda kommandon, gör alias så här effektivt de alternativen som standard.
Aliaset utökas innan resten av kommandoraden tolkas så:
ll X Y Z
blir
ls -alF X Y Z
Dessa alias är inte alltid lätt att komma ihåg, men rädda inte - du kan skapa egna aliaser med exakt samma syntax som i utmatningen från alias-kommandot:
alias myalias = "somecommand --option1 --option2"
Aliasing ett kommando till eget namn är ett snyggt knep, men vad händer om du då behöver använda det ursprungliga kommandot? Oroa dig inte - utvecklarna har tänkt på det. Prefix kommandot med en backslash och ditt alias kommer att ignoreras:
\ Documents
Föregående Sida 1 av 6 Nästa Föregående Sida 1 av 6 Nästaprofiler
Du kan anpassa din terminalupplevelse med aliaser och anpassade uppmaningar, men för att göra dem ännu mer praktiska behöver du ett sätt att tillämpa dessa automatiskt när du öppnar en terminal.
Det kan göras genom din profil, som är en fil som innehåller kommandon som läses och körs när du öppnar en skalsession.
Det finns flera lägen som läses, varav den första är / Etc / profile, som innehåller globala profilinställningar. Detta kör i sin tur några filer i /etc/profile.d, vilket gör det enkelt att lägga till globala inställningar utan att röra standardprofilen.
Då läses användarens profil från en av /.bash_profile, /.bash_login och /.profil. Endast den första av dessa filer som finns finns, och alla inställningar här överstyrar dem i den globala profilen om samma sak är inställd i båda.
Profilen är helt enkelt en uppsättning av skalkommandon, en per rad, som körs när skalet startar. Dessa kan ställa in aliaser, miljövariabler eller ange kommandotolken. En typisk användning av miljövariabler skulle vara att ändra standardtextredigeraren till nano:
EDITOR = / usr / bin / nano
Föregående Sida 2 av 6 Nästa Föregående Sida 2 av 6 NästaWord-slutförandet
Om du inte är en särskilt säker kontaktskrivare kommer du snart att bli trött på att skriva ut kommando- och filnamn i sin helhet och sedan hantera felmeddelandena som beror på felstavningar. Lyckligtvis ger skalet ett sätt att både spara skrivning och undvika misstag som kallas flikavslutning.
Namnet är ganska självförklarande - det använder tabulatorn för att slutföra ordet du skriver. Om detta är det första ordet på en rad, blir det ett kommando, så det ser ut i kommandobanan för matcher, till exempel skrivning chm och slår fliken kommer att slutföra till chmod.
Används efter kommandot kompletterar fliken på filnamn, så istället för att skriva:
cat /pathto/somelongdirectory/someevenlongerfilename.txt
du kan använda:
katt / pa [tryck på TAB] som [tryck TAB] som [tryck TAB]
Är det inte så lättare? När mer än en fil matchar, fyller Tab-tangenten upp till den punkt där den blir tvetydig. Om du trycker på Tab igen på denna punkt visas en lista med alternativ som du kan cykla genom med Tab, eller lägga till ett annat brev eller två och tryck på Tab igen. Det är faktiskt mycket lättare att använda än att beskriva - bara prova det.
Föregående Sida 3 av 6 Nästa Föregående Sida 3 av 6 Nästajoker~~POS=TRUNC
Det finns tillfällen som du vill inkludera mer än en fil i ett kommando, men vill inte skriva ut dem alla. Linux-skalet har ett par "wildcard" -operatörer som hjälper till med detta. Den mest använda är stjärnan, som används som ersättning för alla teckensträngar.
Så * på egen hand kommer att matcha alla filer i den aktuella katalogen (att detta skiljer sig från MS-DOS-skal där * matchar inte . och du måste använda *. * för att matcha alla filer med en förlängning).
Du kan också använda * för att matcha en del av ett filnamn: *.Text matchar alla filer som slutar med .txt och en * .txt matchar bara de som också börjar med a.
Denna matchning utförs av skalet. Det expanderar matcherna till en lista med filer innan de skickas till kommandot, som aldrig ser jokertecken eller ens vet att du använde en.
Detta kan vara en viktig skillnad, speciellt om du vill skicka en * till det program du kör. Till exempel, säg att du använder scp att kopiera filer från en fjärrdator och köra följande:
scp användare @ othercomputer: Documents / *. txt Dokument /
Du kan förvänta dig att detta kopierar alla .txt-filer från den andra datas dokumentkatalog till samma här, men det kommer inte. Skalet expanderar *.Text för att matcha alla .txt-filer på det lokala systemet, så du bara kopierar de filer du redan har.
I ett sådant fall måste du berätta att skalet inte expanderar * genom att föregå det med en backslash, känd som att fly den:
scp user @ othercomputer: Documents / \ *. txt Dokument /
Nu går det Dokument / * txt. oförändrad till fjärrdatorn och låter sitt skal hantera expansionen.
Det finns också ett andra jokertecken tecken. Medan * matchar valfritt antal tecken, inklusive inga, ? matchar exakt en. Så ab? .txt matchar abc.txt och ab1.txt men inte ab.txt eller abcd.txt, medan ab * .txt skulle matcha dem alla.
Föregående Sida 4 av 6 Nästa Föregående Sida 4 av 6 NästaKommandosubstitution
Det finns en kraftfull funktion i skal som kallas kommandosubstitution. Detta låter dig bädda in utgången från ett kommando till en annan.
Som ett enkelt exempel, låt oss säga att det finns ett kommando som heter foo på ditt system och låt oss säga att du vill veta vilken typ av program det är: kompilerat, Python eller till och med ett skalskript. De som Kommando ger dig vägen till ett program, och fil rapporterar typen av en fil. Du kan använda:
vilken foo
att få / Usr / local / bin / foo och då
fil / usr / local / bin / foo
för att få filtypen, men även med kopiera och klistra in, det här är mycket arbete och lätt att misslyckas. Alternativt kan du göra:
fil $ (vilken foo)
/ usr / local / bin / foo: a / usr / bin / perl-skript, ASCII-text körbar
Vad som händer är att skalet löper vad som helst innanför $ (...) och ersätter utmatningen från det till kommandoraden innan den körs. Du kan också använda backticks för detta:
fil 'vilken foo'
Detta är snabbare att skriva men mindre läsbart, speciellt när det läggs ut på ett forum där läsarens teckensnitt kan göra ' och ' se liknande ut. Med det första formatet finns det ingen sådan förvirring.
Föregående Sida 5 av 6 Nästa Föregående Sida 5 av 6 NästaTerminalsparare: Upprepa
En av de stora fördelarna med skalet är att det är enkelt att upprepa kommandon, oavsett hur komplicerat det är, med ett par tangenttryckningar. På det enklaste sättet kan du trycka på upp-tangenten för att visa tidigare kommandon, tryck sedan på Enter för att köra din valda en gång till.
Du kan också redigera kommandot innan du kör det, om du vill. Det är bra om du vill använda en av de sista kommandon som du sprang, men de flesta skalar har en historia om de senaste 500 eller så kommandon som du kan komma åt igen.
För att undvika att dra ut tangentbordets uppåtpil (och dina ögon), tryck Ctrl-R och skriv sedan in en del av kommandot. Terminalen visar dig det senaste kommandot som matchar vad du skriver, uppdaterar med varje knapptryckning.
Om du har kört flera mycket liknande kommandon behöver du inte fortsätta skriva - skriv bara några tecken och tryck Ctrl-R igen för att se föregående match. Fortsätt tills du hittar den du vill ha. (Var inte orolig - det här är en av de saker som tar längre tid att beskriva än att faktiskt göra.)
Du kan redigera kommandot innan du kör det. Sökordet som du skriver in behöver inte vara kommandot själv - någon del av kommandoraden kommer att matcha, så du kan börja med filnamnet.
Du kan också komma åt kommandon i historiken direkt. De ! tecken berättar det skal som du hänvisar till sin historia. !! är en genväg för föregående kommando medan !-n betyder "kör kommandot körning n kommandon sedan "(så !! är det samma som !-1). !xyz kör det sista kommandot som börjar med xyz och !?xyz gör detsamma för det sista kommandot som innehåller xyz (ungefär samma som Ctrl-R gör).
- Denna artikel gavs till TechRadar av Linux Format, och varje utgåva av tidningen är fylld med nyhetsanalys, djupgående funktioner på viktiga Linux-ämnen, kodningsguider, Raspberry Pi och Maker-projekt och mycket mer. Prenumerera på utskrift eller digital version av Linux Format här