Programmering

10 Unix-kommandoer, som enhver Mac- og Linux-bruger skal vide

GUI'er er gode - vi vil ikke leve uden dem. Men hvis du er en Mac- eller Linux-bruger, og du vil få mest muligt ud af dit operativsystem (og dine tastetryk), skylder du dig selv at stifte bekendtskab med Unix-kommandolinjen. Peg-og-klik er vidunderligt, når du har brug for at gøre noget en eller to gange. Men hvis du har brug for at gentage denne opgave mange gange, er kommandolinjen din frelser.

Kommandolinjen er et vindue i din computers fulde, fantastiske magt. Hvis du længes efter at komme fri af GUI'ens begrænsninger eller tror, ​​at programmering eller administration af eksterne maskiner er i din fremtid, så er det absolut noget, du lærer Unix-kommandolinjen.

Bare rolig, hvis Unix-kommandoer virker som magiske besværgelser eller de mystiske interner i systemet ser ud over din rækkevidde. De er ikke så vanskelige at lære, og denne artikel giver dig de 10 vigtige kommandoer, du har brug for for at komme i gang. Inden længe vil disse kryptiske strenge være anden natur.

Grundlæggende om shell

Unix-kommandolinjeskallen svarer omtrent til kommandovinduet i Microsoft Windows (cmd eller PowerShell). Kommandoerne, vi går igennem nedenfor, fungerer på ethvert Unix-lignende system, inklusive Linux, Darwin (grundlaget for MacOS), FreeBSD og endda Windows med noget som Git Bash eller den nye Bash-shell i Windows 10. Indstillingerne og output varierer lidt, men du skal ikke have nogen problemer med at få mening ud af dem.

Først skal du åbne en skal, undertiden kaldet et terminalvindue. Ofte placerer Unix-distributioner dette under Administration eller System-menuerne. I MacOS finder du terminalen i Programmer> Hjælpeprogrammer> Terminal. Når du starter det, ser du noget som dette:

Denne skærm, fra MacOS 10.11, er typisk for de fleste skaller i en GUI. Øverst i vinduet ser vi typen af ​​shell, i dette tilfælde Bash (Bourne Again Shell, som er standardskallen i MacOS og de fleste Linux-distributioner) og størrelsen på vinduet. Inde i vinduet er prompten, i dette tilfælde konfigureret til at vise maskinens navn (Kviksølv), navnet på den aktuelle arbejdsmappe (her tilde, ~, som er stenografi for brugerens hjemmekatalog), brugerens navn og til sidst prompt-symbolet ( $). Bemærk, at din prompt ændres, når du bevæger dig rundt i filsystemet, eller hvis du bliver en anden bruger på din maskine (såsom rod eller superbruger for at køre administrative kommandoer). Prompten viser disse oplysninger, så du nemt kan fortælle, hvor og hvem du er på enhver maskine.

Det er værd at vide, at der er to hovedsmag af Unix-skallen: Bourne og C-skal. Bourne og firma stammer fra den originale AT & T Unix, mens C-skallen kommer fra University of California i Berkeley og BSD Unix. Generelt er Bourne- og C-skalderivaterne gode til interaktivt arbejde i terminalen. POSIX-standardskallen, Korn-skallen, er den, du vil bruge til at skrive dine egne programmer i skallen, kaldet scripts. Vi bruger Bash-skal til eksemplerne i denne vejledning.

Skallen miljø

En af de første fakta at forstå om at arbejde på Unix-kommandolinjen er, at skallen fungerer i sit eget miljø. At forstå hvordan man styrer shell-miljøet er en vigtig del af at blive effektiv på kommandolinjen. Lad os se på miljøet ved hjælp af env kommando:

Du skal ikke bekymre dig om at forstå alle miljøvariablerne nu, men ved at de er der. Du skal allerede genkende et par variabler. For eksempel, SHELL = / bin / bash fortæller os, at vi bruger Bash-skallen. HJEM = / Brugere / nunez angiver placeringen af ​​brugerens hjemmekatalog. Du kan ændre eller oprette miljøvariabler, og du vil ofte gøre det. Her er et eksempel på indstilling af en miljøvariabel kaldet FOO og viser dens værdi:

Som du ser, sætter vi variabler i store bogstaver efter konvention. Vær særlig opmærksom på, hvordan vi refererer til miljøvariabler, når vi bruger dem i kommandoer med det foregående $. Det $ beder kommandotolken om at bruge variabelens værdi. Uden $, det ekko kommandoen ovenfor ville blot udskrive navnet på variablen, FOO.

Unix-kommandoer

Uanset hvilken skal du bruger, når du skriver en kommando i skallen, vil du få et Unix-program til at udføres. Unix designfilosofi er at skabe programmer, der gør en ting godt, og at kæde (eller "pibe") dem sammen for at udføre nyttigt arbejde. Lad os se på et simpelt eksempel for at tælle antallet af filer i / etc-biblioteket (vi vil se, hvordan vi flytter til / etc-biblioteket senere):

Denne kommandosekvens illustrerer to vigtige begreber: piping og optioner. Det ls kommando (svarende til dir kommando i Windows) viser indholdet af et bibliotek og Toilet (antal ord) antallet af ord. Læg mærke til den lodrette bjælke mellem dem? Det er rørkarakteren. Røret tager output fra den første kommando og dirigerer det som input til den anden kommando. Du kan kæde et hvilket som helst antal kommandoer sammen i Unix ved at forbinde hinanden med rør.

Den anden ting at bemærke er de muligheder, der gives til hver kommando. I Unix er valgmuligheder traditionelt præfikset med et enkelt bindestreg, -. Disse kommandolinjemuligheder ændrer kommandoens adfærd. I dette eksempel er -l mulighed for at ls betyder at outputte biblioteksindholdet i “langt” format, mens –L mulighed for at Toilet betyder at tælle “linjerne” i stedet for ordene. På engelsk kan denne kommando læses:

Angiv antallet af linjer i det aktuelle bibliotek, og send dem derefter til ordtællingsprogrammet for at tælle antallet af linjer.

Ofte tilsidesætter disse kommandolinjemuligheder standardindstillinger, der er indstillet i miljøet. Hvis du vil ændre den måde, kommandoen opfører sig permanent på, kan du indstille miljøvariablen automatisk, når du logger ind. Mange kommandoer giver dig mulighed for at kombinere indstillinger i en enkelt streng - for eksempel ls -la—Men andre ikke. Du kan lære om alle valgmulighederne for en kommando ved at kontrollere dens manual eller "man-sider" (som vi diskuterer nedenfor).

At lære og bruge kommandolinjemuligheder er en stor del af at være effektiv på Unix-kommandolinjen. Nogle kommandoer har så mange muligheder, at dokumentationen kører til snesevis af sider. Lad det ikke bekymre dig nu. Du har ofte kun brug for et par muligheder for at udføre en given opgave, og mange muligheder bruges kun, når du skriver programmer på shell-sproget.

Manualen

Når du først har forstået det grundlæggende i kommandolinjen og miljøet, kan vi begynde at dykke dybere ned i systemet. Det første sted at starte er med manualen.

Et af de gode aspekter ved Unix er den høje kvalitet af dokumentationen. Der er dokumentation for brugere, systemadministratorer og softwareudviklere. Du får adgang til dokumentationen med mand kommando. Lad os starte med at læse manualen til manualen (indtast mand mand på kommandolinjen):

Manualerne er opdelt i otte sektioner, som varierer lidt afhængigt af om du bruger en BSD / Linux / Mac eller System V-type Unix. Det er nyttigt at starte med at læse introduktionen til hvert afsnit, og du kan gøre dette med en besværgelse som mand-1 introduktion, hvilket betyder at se i afsnit 1 for at finde en manuel side kaldet “intro”:

Hvis du ikke er sikker på, hvilken kommando du leder efter, kan du prøve -f og -k muligheder. mand –f kommando vil fortælle dig en kommandos funktion, hvis du kender dens navn, mens mand –k antydning viser navnene på relevante kommandoer baseret på et eller flere nøgleord. Begge muligheder søger i en indbygget database (hvis den er konfigureret; den har normalt) og returnerer alle matches. For eksempel, mand –k bzer viser de manuelle sider, der starter med strengen bz:

Filsystemet

Der er mange kommandoer relateret til Unix-filsystemet, da det er kernen i operativsystemet. Vi så en af ​​dem tidligere: ls, der viser filer i et bibliotek:

Det ls kommando er muligvis den hyppigst anvendte kommando af alle, og den har mange muligheder for at justere dens output. En mulighed, du med det samme vil vide om, er ls -a (liste alle). Dette afslører "prik" -filer (filer eller mapper, hvis navne begynder med en prik eller punktum), som er skjult som standard. Disse filer eller mapper indeholder typisk konfigurationsoplysninger eller logfiler til Unix-systemet. .Bash_history-filen logger f.eks. Alle de kommandoer, du indtaster på kommandolinjen.

Den anden kommando, du har brug for med det samme, er cd kommando, som du bruger til at ændre mapper. Dette ligner den samme kommando i Windows, men med en vigtig forskel. I Unix vises alle drev (enheder) som et enkelt drev. Mens du i Windows muligvis har dine billeder på en ekstern harddisk, der vises som E :, i Unix kan dette drev være / hjem / bruger / billeder. Der er adgang til alle filer på et Unix-system via en sti, der starter med / (rodmappen), og du kan montere forskellige harddiske på forskellige punkter i filsystemet efter dine behov.

Inden du begynder at vandre rundt i filsystemet, lad mig introducere en anden kommando, du har brug for: pwd (udskriv arbejdsmappe). Da der potentielt er mange steder at gå tabt i et voksende filsystem, giver denne kommando dig mulighed for hurtigt at bestemme, hvor du er. Lad os skifte mapper til det sted, hvor systemkonfigurationsfiler opbevares, og kontrollere vores placering:

Bemærk, at du kan bruge cd kommando uden argumenter for hurtigt at vende tilbage til dit hjemmekatalog. Et andet tip: ~ kan bruges som en genvej til at henvise til din hjemmekatalog i både Bash og C shell.

På dette tidspunkt ved du, hvordan du bevæger dig rundt i filsystemet og viser indholdet af mapper. Nu har vi brug for en måde at læse de filer, der er gemt i dem. Disse dage kommer de fleste systemer med mindre kommando for dette. mindre viser en fil side for side og giver dig mulighed for at navigere ved hjælp af Vi-kommandoer (tryk på j at flytte ned, k at rykke op, h at få hjælp, og q for at afslutte filen).

Lad os se, hvad der er i vores / etc / passwd-fil ved at indtaste mindre / etc / passwd:

Passwd-filen viser brugerkonti på et Unix-system sammen med deres bruger- og gruppe-ID-numre, deres hjemmekatalog og stien til den tilsvarende kommando eller shell. På MacOS finder du dog kun systemtjenestekonti i passwd. Det skyldes, at menneskelige brugere er konfigureret under Brugere og grupper i MacOS's Systemindstillinger.

Diskplads

At løbe tør for diskplads er en gradvis proces, der kan tage år, men som stadig kan fange dig på vagt. Der er to kommandoer, du kan bruge til at kontrollere din ledige plads og bestemme, hvilke filer der hogger din disk: du (diskbrug) og df (diskfri). De tager begge en -h mulighed (læsbar for mennesker). For at få en fornemmelse af, hvor fuld din disk er, skal du bruge df kommando:

Indtil videre skal du fokusere på %jeg brugte og monteret på kolonner. Dette viser, at min hjemmekatalog er 92 procent fuld, så jeg burde sandsynligvis rense den. Men hvordan ved jeg, hvor al pladsen bruges? Det er hvad du er for:

Til dette eksempel gik jeg med en besværgelse, der begrænser output til de første 10 linjer. Ellers du vil liste alle mapper på maskinen, som let kunne være for meget at forstå. Fra denne liste kan du se, hvor meget plads der forbruges af hvert bibliotek. Du kan også se, hvordan vi ved at kæde et par kommandoer sammen let kunne sammensætte et script, der viser de 10 bedste mapper efter pladsforbrug. Den kommando, vi har brug for for at sortere output, er selvfølgelig sortere kommando.

Fordi MacOS's version af sortere kan ikke håndtere du'S menneskelige læsbare output, brugte jeg -m mulighed for du for at få vist diskbrug i megabyte (brug -g eller -k mulighed for at vise i gigabyte eller kilobyte). Det -n og -r muligheder for sortere Sorter output numerisk og i omvendt rækkefølge, så de største mapper vises øverst på listen.

Superbrugere, su og sudo

Et antal kommandoer vedrører systemadministration. Prøv at skrive mand -s 8 intro til en introduktion til dem. Jeg vil give dig den ene vigtige kommando til systemadministration her: su. Dette står for "superbruger" og henviser til den administrative bruger eller rodkonto. Alle filer, der tilhører systemet, ejes af denne bruger, og du bliver nødt til at blive denne bruger for at udføre administration.

En relateret kommando, sudo, giver dig mulighed for at blive superbruger til en enkelt kommando. Hvorfor bruge sudo i stedet for su? Fordi bedste praksis dikterer, at du ikke løber rundt som rootbruger med magt til at gøre uoprettelig skade ved et uheld. Du vil altid gerne gøre alt, hvad du overhovedet kan, som en normal bruger og kun blive en superbruger, når du har brug for det. Præcis hvordan du får superbrugerrettigheder, afhænger af din Unix-distribution. Lad os se hvordan su fungerer på MacOS:

Hvad? Jeg er sikker på, at jeg har skrevet adgangskoden korrekt. Hvad der er sket her er, at min nuværende bruger, nunez, har ikke tilladelse til su. På nogle Unix betyder dette, at brugeren skal være i hjul gruppe og på andre systemer (inklusive MacOS) skal brugeren være i sudoers fil.

Lad os afslutte med at tilføje nunez til sudoers, som giver dig en smag af redigering af filer på kommandolinjen. Kraftbrugere roser Emacs og Vi-redaktørerne, og jeg opfordrer dig til at prøve dem, men vi bruger Nano her. Nano er let at lære og bruge, og MacOS og mange Linux-distroer leveres med det allerede installeret.