15 specialtecken som Du Behöver Veta för att Bash

0
1269

Om du vill behärska Bash-skalet på Linux, macOS eller annat UNIX-liknande system, speciella tecken (som ~, *, | och >) är kritisk. Vi hjälper dig att reda ut dessa kryptiska Linux kommando sekvenser och bli en hjälte av hieroglyfer.

Vad Är Speciella Tecken?

Det är en uppsättning tecken Bash-skalet behandlar på två olika sätt. När du skriver dem på skalet, de fungerar som instruktioner eller kommandon och tala om för skalet att utföra en viss funktion. Tänk på dem som en enda karaktär kommandon.

Ibland kanske du bara vill skriva ut en karaktär och inte behöver det för att fungera som en magisk symbol. Det finns ett sätt du kan använda ett tecken för att representera sig själv snarare än sin speciella funktion.

Vi ska visa dig vilka tecken som är “speciella” eller “meta -” – tecken, såväl som hur du kan använda dem funktionellt och bokstavligen.

~ Hemkatalog

Tilde (~) är en förkortning för din hemkatalog. Det innebär att du inte behöver ange den fullständiga sökvägen till din hemkatalog i-kommandon. Var du än befinner dig i filsystemet, du kan använda detta kommando för att gå till din hemkatalog:

cd ~

Du kan också använda det här kommandot med relativa sökvägar. Till exempel, om du är någonstans i filsystemet som inte är under din hemkatalog, och vill ändra till arkivets katalog i ditt arbete katalog, använda tilde att göra det:

cd ~/work/arkiv

. Aktuella Katalogen

En punkt (.) representerar den aktuella katalogen. Du ser det i listor katalog om du använder-a (all) alternativ med ls.

ls-a

Du kan också använda den period kommandon för att representera sökvägen till den aktuella katalogen. Till exempel, om du vill köra ett manus från den aktuella katalogen, skulle du kalla det så här:

./script.sh

Här berättar Bash för att titta i den aktuella katalogen för script.sh fil. På detta sätt, kommer det inte att söka i kataloger i din väg för matchning av körbar programvara eller skript.

.. Överordnade Katalogen

Den dubbla period eller “double dot” (..) är den överordnade katalogen av din nuvarande. Du kan använda detta för att flytta upp en nivå i katalogträdet.

cd ..

Du kan också använda det här kommandot med relativa sökvägar—till exempel, om du vill gå upp en nivå i katalogträdet, och sedan ange en annan katalog på den nivån.

Du kan även använda denna teknik för att snabbt gå till en katalog på samma nivå i katalogen träd som din nuvarande. Du hoppa upp en nivå, och sedan tillbaka ner en i en annan katalog.

cd ../gc_help

/ Stig Avskiljare

Du kan använda ett framåt snedstreck (/), ofta kallas bara ett snedstreck för att avgränsa kataloger i sökvägen.

ls ~/work/arkiv

Ett framåt snedstreck representerar kortast möjliga sökvägen. Eftersom allt i en Linux-katalog träd börjar på root-katalog, kan du använda detta kommando för att flytta till rotkatalogen snabbt:

cd /

# Kommentar eller Trimma Strängar

Oftast kan du använda hash eller antal tecken (#) för att tala om för skalet vad som följer är en kommentar, och det bör inte agera på det. Du kan använda den i shell-skript och—mindre fördel—på kommandoraden.

# Det här kommer att ignoreras av Bash-skalet

Det är verkligen inte ignoreras, men eftersom det läggs till ditt kommando historia.

Du kan också använda hash att trimma en string-variabel och ta bort en del text från början. Detta kommando skapar en string-variabel som heter this_string.

I detta exempel kommer vi tilldela sms: a “Dave Nörd!” till variabeln.

this_string=”Dave Nörd!”

Detta kommando använder echo för att skriva ut orden “How-To” till terminalfönstret. Det hämtar värdet som lagrats i sträng variabel via en parameter expansion. Eftersom vi lägga hash och texten “Dave”,” det trimmar bort den del av strängen innan det skickas till ekot.

echo Hur-Till ${this_string#Dave}

Detta ändrar inte det värde som lagras i en sträng variabel, endast påverkar vad som skickats till ekot. Vi kan använda echo för att skriva ut värdet av den strängvariabel en gång till och kolla in det här:

echo $this_string

? Enda Tecken Jokertecken

Bash-skalet har stöd för tre wildcards, av vilka det ena är ett frågetecken (?). Du kan använda jokertecken om du vill byta tecken i filnamn mallar. Ett filnamn som innehåller ett jokertecken utgör en mall som matchar ett utbud av filnamn, snarare än bara en.

Frågetecknet jokertecken motsvarar exakt ett tecken. Beakta följande filnamn mall:

ls badge?.txt

Detta kan översättas med “att lista en fil med ett namn som börjar med “märke” och följs av ett enda tecken före filnamnstillägget.”

Det matchar följande filer. Observera att vissa har siffror och vissa har bokstäver efter “badge” del av filnamnet. Frågetecknet wildcard kommer att matcha både bokstäver och siffror.

Som filnamn mallen inte stämmer “badge.txt” om, eftersom filnamnet inte har ett enda tecken mellan “badge” och den file extension. Frågetecknet wildcard måste matcha ett motsvarande tecken i filnamn.

Du kan också använda frågetecken för att hitta alla filer med ett visst antal tecken i filnamn. Här listar alla textfiler som innehåller exakt fem tecken i filnamn:

ls ?????.txt

* Tecken Jokertecken

Du kan använda en asterisk (*) som jokertecken för att stå för en sekvens av tecken, inklusive några tecken. Beakta följande filnamn mall:

ls-badge*

Detta stämmer överens med alla följande egenskaper:

Det matcher “badge.txt” eftersom asterisk representerar en sekvens av tecken eller nej tecken.

Detta kommando matchar alla filer som kallas “källa,” oberoende av filändelse.

ls källa.*

[] Teckenuppsättning Jokertecken

Som beskrivs ovan, du använd frågetecken för att representera varje enskilt tecken och en asterisk representerar en sekvens av tecken (inklusive några tecken).

Du kan bilda ett wildcard med hakparenteser ( [] ) och de tecken de innehåller. Den relevanta tecken i filnamnet måste då matcha minst en av karaktärerna i jokertecken teckenuppsättning.

I detta exempel kommandot kan översättas till: “vilken fil som helst med en “.png” förlängning, ett filnamn som börjar med “pipes_0,” och där nästa tecken är antingen 2, 4, eller 6.”

ls badge_0[246].txt

Du kan använda mer än en uppsättning av fästen per filename template:

ls badge_[01][789].txt

Du kan även innehålla områden i teckenuppsättning. Följande kommando väljer filer med nummer 21 till 25, och 31 till 35 i filnamnet.

ls badge_[23][1-5].txt

; Skal Avgränsare

Du kan skriva så många kommandon som du vill på kommandoraden, så länge som du separera dem med ett semikolon (;). Vi kommer att göra detta i följande exempel:

ls > count.txt; wc -l count.txt; rm count.txt

Observera att det andra kommandot körs även om den första misslyckas, den tredje kör även om den andra inte, och så vidare.

Om du vill avbryta en sekvens av verkställigheten om ett kommando inte, använd en dubbel-tecken (&&) i stället för ett semikolon:

cd: n ./doesntexist && cp ~/Documents/rapporter/* .

& I Bakgrunden

När du skriver ett kommando i ett terminalfönster och det är klar, kan du återgå till kommandotolken. Normalt, detta tar bara ett ögonblick eller två. Men om du startar ett annat program, till exempel gedit, du kan inte använda din terminal-fönstret tills du stänger programmet.

Du kan, emellertid, starta ett program som en bakgrundsprocess och att fortsätta att använda terminal-fönstret. För att göra detta, lägg bara till ett och-tecken i kommandoraden:

gedit command_address.sida &

Bash visar du på vilket process-ID för vad som lanserades, och sedan återvänder du till kommandoraden. Sedan kan du fortsätta att använda din terminal-fönstret.

< Ingående Omdirigering

Många Linux-kommandon i acceptera en fil som parameter och ta deras data från filen. De flesta av dessa kommandon kan också ta input från en ström. För att skapa en ström, du använder vänster vinkelparentes ( < ), så som visas i följande exempel vill omdirigera en fil till ett kommando som:

sortera < words.txt

När ett kommando har ingång omdirigerad till det, kan det bete sig annorlunda än när den läser från en namngiven fil.

Om vi använder wc för att räkna ord, rader och tecken i en fil, skriver de värden, och sedan filnamnet. Om vi styra innehållet i filen till toalett, det skriver ut samma numeriska värden men inte vet namnet på den fil som data kom. Det går inte att skriva ut ett filnamn.

Här är några exempel på hur du kan använda wc:

wc words.txt
wc < words.txt

> Output Omdirigering

Du kan använda höger vinkelparentes ( > ) om du vill omdirigera utdata från ett kommando (vanligtvis, i en fil), här är ett exempel:

ls > files.txt
katt files.txt

Utgång omdirigering kan också omdirigera felmeddelanden om du använder en siffra (2, i vårt exempel) med >. Här är hur man gör det:

wc doesntexist.txt 2> errors.txt
katt errors.txt

RELATERAT: Vad Är stdin, stdout och stderr på Linux?

| Rör

En “pipe” – kedjor kommandon tillsammans. Det tar utdata från ett kommando och skickar det till nästa ingång. Antalet kommandon med rörledning (längden på kedjan) är godtycklig.

Här kommer vi att använda cat för att mata innehåll words.txt fil till grep, som extraherar alla rader som innehåller antingen en lägre eller versaler “C.” grep kommer då att passera dessa rader att sortera. sortera med hjälp av-r (bakåt) alternativ, så sorteras resultatet kommer att visas i omvänd ordning.

Vi skrev följande:

katt words.txt | grep [kn] | sort-r

! Pipeline logiskt INTE och Historia Operatör

Utropstecknet (!) är en logisk operator som innebär INTE.

Det finns två kommandon i detta kommando:

[ ! -d ./backup ] && mkdir ./backup

  • Det första kommandot är den text inom hakparenteser;
  • Det andra kommandot är den text som följer double-tecken &&.

Det första kommandot använder ! som en logisk operator. Hakparenteser indikerar ett test kommer att göras. -D (katalog) alternativ tester för förekomsten av en katalog som heter backup. Det andra kommandot skapar katalogen.

Eftersom dubbel-tecken skilja de två kommandon, Bash kommer bara att utföra det andra om den första lyckas. Men, det är motsatsen till vad vi behöver. Om testet för “backup” – katalog lyckas, vi behöver inte skapa det. Och om testet för “backup” – katalog misslyckas, det andra kommandot kommer inte att verkställas, och det saknas katalogen kommer inte att skapas.

Det är där den logiska operator ! kommer i. Det fungerar som ett logiskt INTE. Så, om testet lyckas (dvs, den katalogen finns), den ! vänder det för att “INTE lyckas”, vilket är fel. Så, det andra kommandot är inte aktiverad.

Om katalogen test misslyckas (dvs, den katalog inte existerar), den ! förändringar svaret att “INTE misslyckas”, som är framgång. Så, kommandot för att skapa den saknade katalog utförs.

Som liten ! packar en massa punch när du behöver det!

För att kontrollera status för backup-mappen måste du använda ls-kommandot och l (lång lista) och d (katalog) alternativ, som visas nedan:

ls -l -d backup

Du kan också köra kommandon från din kommandot historia med utropstecken. Historien kommando listar ditt kommando historia, och sedan skriv numret på det kommando som du vill köra med ! för att köra det, som visas nedan:

!24

Följande re-går det föregående kommandot:

!!

$ Variabel Uttryck

I Bash-skalet kan du skapa variabler för att hålla värden. Vissa, som miljövariabler, alltid att finnas, och du kan använda dem varje gång du öppnar ett terminalfönster. Dessa innehålla värden, såsom ditt användarnamn, hemkatalog, och sökväg.

Du kan använda echo för att se det värde som en variabel har—precis före variabelnamnet med dollartecken ($), så som visas nedan:

echo $USER
echo $HOME
echo $PATH

För att skapa en variabel, måste du ge den ett namn och ange ett värde för att det ska hålla. Du behöver inte använda dollartecken för att skapa en variabel. Du bara lägger till $ när du referera till en variabel, som i följande exempel:

ThisDistro=Ubuntu
MyNumber=2001
echo $ThisDistro
echo $MyNumber

Lägg till klammerparenteser ( {} ) runt dollartecken och utföra en parameter expansion för att erhålla värdet av en variabel och gör det möjligt att ytterligare förändringar av värde.

Detta skapar en variabel som innehåller en sträng av tecken, som visas nedan:

MyString=123456qwerty

Använd följande kommando för att upprepa sträng till terminal-fönstret:

echo ${MyString}

För att återgå delsträngen börjar på position 6 i hela strängen, använd följande kommando (det finns ett noll-offset, så det första läget är noll):

echo ${myString:6}

Om du vill upprepa en del som börjar på position noll och innehåller följande sex tecken, använd följande kommando:

echo ${myString:0:6}

Använd följande kommando för att upprepa en delsträng som börjar på position fyra och innehåller fyra tecken:

echo ${myString:4:4}

Citera Specialtecken

Om du vill använda en speciell karaktär som en bokstavlig (icke-special) karaktär, du måste berätta för Bash-skalet. Detta kallas att citera, och det finns tre sätt att göra det.

Om du texten ska anges inom citattecken (“…”), detta förhindrar Bash från att agera på de flesta av de specialtecken, och de bara ut. Ett anmärkningsvärt undantag är dock dollartecken ($). Att det fortfarande fungerar som tecken för variabel uttryck, så att du kan inkludera värden från variabler i din produktion.

Till exempel, kan detta kommando skriver ut datum och tid:

echo “i Dag är $(datum)”

Om du bifoga texten i apostrof ( ‘ … ‘ ), som framgår nedan, den hindrar funktionen av alla specialtecken:

echo ” i Dag är $(datum)”

Du kan använda ett omvänt snedstreck ( ) för att förhindra följande karaktär från att fungera som en speciell karaktär. Detta kallas “att fly” karaktär, se exempel nedan:

echo “Idag är $(datum)”

Tänk bara på speciella tecken som väldigt korta kommandon. Om du memorera deras användning kan det gynna din förståelse för Bash-skalet—och andra människors skript—oerhört.

RELATERAT: 37 Viktiga Linux-Kommandon Du Bör Veta

LÄS NÄSTA

  • “Hur att Använda Kommandot finger på Linux
  • “Chrome Genvägar Du Bör Veta
  • “Varför Ska Du Överklocka Ditt RAM-minne (Det är Enkelt!)
  • “Hur att Öka Din MacBook Lagring
  • “Inaktivera Svep åt att Skriva på iPhone-Tangentbord