GNU/Linux
Skal
Sök…
Introduktion
Skalet kör ett program som svar på dess snabba. När du ger ett kommando söker skalet efter programmet och kör sedan det. När du till exempel anger kommandot ls, söker skalet efter verktyget / programmet som heter ls och kör sedan det i skalet. Argumenten och alternativen som du tillhandahåller med verktygen kan påverka resultatet du får. Skalet är också känt som ett CLI- eller kommandoradsgränssnitt.
Ändrar standardskal
De flesta moderna distributioner kommer med BASH ( B ourne A gain SH ell) förinstallerade och konfigurerade som ett standardskal.
Kommandot (faktiskt en körbar binär, en ELF) som ansvarar för att byta skal i Linux är chsh
( ch ange sh ell).
Vi kan först kontrollera vilka skal som redan är installerade och konfigurerade på vår maskin med chsh -l
, vilket ger ett resultat som liknar detta:
[user@localhost ~]$ chsh -l
/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin
/usr/bin/fish
I vissa Linux-distributioner är chsh -l
ogiltig. I detta fall kan listan över alla tillgängliga skal hittas i filen / etc / shells. Du kan visa filinnehållet med cat
:
[user@localhost ~]$ cat /etc/shells
# /etc/shells: valid login shells
/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin
/usr/bin/fish
Nu kan vi välja vårt nya standardskal, t.ex. fish
, och konfigurera det genom att använda chsh -s
,
[user@localhost ~]$ chsh -s /usr/bin/fish
Changing shell for user.
Password:
Shell changed.
Nu är det enda som återstår att göra för att skapa en logo-logon-cykel och njuta av vårt nya standardskal.
Om du vill ändra standardskalet för en annan användare och du har administratörsbehörighet på maskinen kan du göra detta genom att använda chsh
som root
. Så förutsatt att vi vill ändra user_2
standardskal till fisk, kommer vi att använda samma kommando som tidigare, men med tillägg av den andra användarens användarnamn, chsh -s /usr/bin/fish user_2
.
För att kontrollera vad det nuvarande standardskalet är, kan vi se $SHELL
, som pekar på sökvägen till vårt standardskal, så efter vår förändring skulle vi förvänta oss att få ett resultat som liknar detta,
~ echo $SHELL
/usr/bin/fish
chsh
alternativ:
-s shell
Ställer in skal som inloggningsskal.
-l
, - --list-shells
Skriv ut listan med skal som anges i / etc / skal och avsluta.
-h
, --help
Skriv ut ett användningsmeddelande och avsluta.
-v
, --version
Skriv ut versioninformation och avsluta.
Grundläggande skalverktyg
Anpassa Shell-prompten
Standardkommandotolken kan ändras så att den ser annorlunda och kort ut. Om den aktuella katalogen är lång blir standardkommandotolken för stor. Att använda PS1
blir användbart i dessa fall. Ett kort och anpassat kommando ganska och elegant. I tabellen nedan har PS1
använts med ett antal argument för att visa olika former av skalmeddelanden. Standardkommandotolken ser ut så här: user@host ~ $
i mitt fall ser det ut så här: bruce@gotham ~ $
. Det kan ändras enligt tabellen nedan:
Kommando | Verktyg |
---|---|
PS1 = '\ w $' | ~ $ skalprompt som katalognamn. I detta fall är rotkatalogen root. |
PS1 = '\ h $' | gotham $ shell prompt som värdnamn |
PS1 = '\ u $' | bruce $ shell prompt som användarnamn |
PS1 = '\ t $' | 22:37:31 $ i 24-timmarsformat |
PS1 = '@ $' | 10:37 PM skalprompt i 12 timmars tidsformat |
PS1 = "! $ ' | 732 visar historiknumret för kommandot i stället för skalprompt |
PS1 = 'kille $' | dude $ kommer att visa skalet som du vill |
Några grundläggande skalkommandon
Kommando | Verktyg |
---|---|
Ctrl-k | skär / kill |
Ctrl-y | yank / klistra |
Ctrl-a | tar markören till början av raden |
Ctrl-e | tar markören till slutet av raden |
Ctrl-d | tar bort tecknet efter / vid markören |
Ctrl-l | kommer att rensa skärmen / terminalen |
Ctrl-u | kommer att rensa allt mellan snabb och markör |
Ctrl-_ | kommer att ångra det sista som skrivs på kommandoraden |
Ctrl-c | kommer att avbryta / stoppa jobbet / processen som körs i förgrunden |
Ctrl-r | omvänd sökning i historien |
~/.bash_history | lagrar de senaste 500 kommandona / händelserna som används på skalet |
history | kommer att visa kommandohistoriken |
history | grep <key-word> | visar alla kommandon i historiken som har nyckelord <nyckelord> (användbart i de fall du kommer ihåg en del av kommandot som använts tidigare) |
Skapa ditt eget kommandolias
Om du är trött på att använda långa kommandon i bash kan du skapa ditt eget kommandoalias.
Det bästa sättet att göra detta är att ändra (eller skapa om den inte finns) en fil som heter .bash_aliases i din hemmapp. Den allmänna syntaxen är:
alias command_alias='actual_command'
där actual_command
är det kommando du byter namn på och command_alias
är det nya namnet du har gett det. Till exempel
alias install='sudo apt-get -y install'
kartlägger det nya kommandot alias install
till det faktiska kommandot sudo apt-get -y install
. Detta betyder att när du använder installation i en terminal tolkas detta av bash som sudo apt-get -y install .
Leta reda på en fil på ditt system
Med bash kan du enkelt hitta en fil med kommandot locate
. Till exempel säger att du letar efter filen mykey.pem:
locate mykey.pem
Ibland har filer konstiga namn, till exempel kan du ha en fil som random7897_mykey_0fidw.pem
. Låt oss säga att du letar efter den här filen men du kommer bara ihåg mykey och pem-delarna. Du kan kombinera locate
med grep
med ett rör som så här:
locate pem | grep mykey
Vilket skulle få fram alla resultat som innehåller båda dessa stycken.
Observera att inte alla system har locate
installerat och många som inte har aktiverat det. locate
är snabbt och effektivt eftersom det regelbundet skannar ditt system och cachar namn och platser för varje fil på den, men om den datainsamlingen inte är aktiverad kan den inte säga något till dig. Du kan använda updatedb
att manuellt initiera filsystemets skanning för att uppdatera cache-informationen om filer på ditt filsystem.
Om du inte har en fungerande locate
, kan du falla tillbaka på find
verktyget:
find / -name mykey.pem -print
är ungefär likvärdigt med att locate mykey.pem
men måste skanna dina filsystem (er) varje gång du kör den för filen i fråga, snarare än att använda cache-data. Detta är uppenbarligen långsammare och mindre effektivt, men mer realtid. Den find
verktyget kan göra mycket mer än hitta filer, men en fullständig beskrivning av sin kapacitet är utanför ramen för detta exempel.