BASH-programmering

Kopiera lista över filer med Bash Script

Kopiera lista över filer med Bash Script
Bash (Bourne Again Shell) är den typ av skal som är för att utföra kommandon och skript. Bash var en utvecklad version av sh-skalet. Bash Script är en fil där flera skalkommandon skriptas för att utföra en viss uppgift. I den här artikeln kommer vi att se hur vi kan kopiera flera filer med ett bash-skript. För den här artikeln använder jag Ubuntu 20.04 för att demonstrera exemplet.

Obs: - $ USER skriver ut nuvarande användarnamn för inloggningsanvändare.

Om du är nyfiken på vilken version av bash shell som är installerad i systemet kan vi kontrollera det med följande kommando.

$ bash --version

Utgång för Bash-version.

Skapa och exekvera Bash Script

Låt oss börja med att skapa en enkel fil med valfri redigerare. För mig är vi-redaktören bekvämare. För att göra filen körbar måste vi lägga till shebang (!#) och bash-tolkplats i början av skriptet. Jag har skapat en text.txt-fil och lägg till den i bash_demo dir i mitt hem-dir som innehåller lite text för demoändamål.

$ touch bash_demo.sh
$ vi bash_demo.sh

Lägg till följande rader i din textredigerare för ett exempel på en demo efter att du skapat en fil; Om du inte har skapat redigeraren en ny fil när du skriver och avslutar.

#!/ bin / bash
cp-text.txt / tmp /
eko ”Fil kopierad.”

Vi kan köra skriptet med ./ före skriptfilen, som bestämmer den aktuella dir-filen.

$ ./ bash_demo.sh

När vi kör skriptet kastas följande fel i vår terminal.

Första körningen av bash-filen.

När vi skapar en fil som standard har användaren inte körrätt för filen. För att tillhandahålla körningstillstånd till användaren måste följande kommando köras.

$ chmod + x bash_demo.sh

Produktion efter tillstånd.

Kopiera endast filer från en viss katalog

För att hämta alla filer och dir från en specifik sökväg kommer vi att använda för loop i skriptet och sedan filtrera bort den enda filen med if-villkor. I exemplet nedan kör vi bara cp-kommandot som körs om iteratorn var en fil som bestäms -f flagga.

#!/ bin / bash
dpath = / var / log / nginx / *
för FILE i $ dpath
do
om [[-f $ FILE]]
sedan
cp $ FILE / home / $ USER /
annan
echo ”Det finns inga filer i den angivna sökvägen.”
fi
Gjort

Kopiera alla filer med specifika tillägg

I det här exemplet kopierar vi alla filer med .loggförlängning. Vi måste lägga till *.logga in på sökvägen så att den enda filen upprepas med .loggförlängning endast för loop.

#!/ bin / bash
för FIL i / var / log / nginx / *.logga
do
cp $ FILE / home / $ USER /
Gjort

Kopiera alla filer, inklusive katalog

I det här exemplet kopierar vi alla filer, inklusive kataloger, rekursivt. För det behöver vi helt enkelt lägga till -R cp-kommando där -R bestämmer rekursivt att hämta katalogen.

#!/ bin / bash
för FIL in / var / log / *
do
cp -R $ FILE / home / $ USER /
Gjort

Kopiera filer från den användardefinierade sökvägen

I det här exemplet kopierar vi filer från användardefinierad dir. För att göra det kommer vi att använda kommandot läsa för att begära sökvägen från användaren och sedan kontrollera om användaren tillhandahåller sökvägen till dir eller inte, vilket görs med flaggan -d i tillståndet. Efter att ha verifierat dir kommer vi att använda en for-loop för att upprepa alla filer och dir inuti den angivna sökvägen och sedan filtrera bort de enda filerna med if-villkoret. Om villkoret matchar kommer följande cp-kommando att utföras.

#!/ bin / bash
eko ”Vänligen ange en väg till dir.”
läsbana
om [[-d $ sökväg]]
sedan
för FIL i $ sökväg / *
do
om [[-f $ FILE]]
sedan
cp $ FILE / home / $ USER /
annan
echo ”Det finns inga filer i den angivna sökvägen.”
fi
Gjort
annan
eko "Path to dir is required"
fi

I mitt hem-dir har jag följande filer och dir.

Output när du anger sökvägen till en fil.

Output när du tillhandahåller dir plats sökväg.

Efter körning av skriptfilen kan vi kontrollera utdata i den fördefinierade dir i skriptet. I mitt fall har jag kopierat filen i min hemdirektör och följande är resultatet.

Slutsats

I den här artikeln lär vi oss hur man kopierar filer med bash-skript. Vi kan använda många andra operationer som en loop, if-else, etc. Bash-skript är effektivare när du arbetar med flera kommandon för att utföra specifika uppgifter. Jag hoppas att du gillar den här artikeln om att kopiera filer med ett bash-skript.

Mus Topp 5 Ergonomiska datormusprodukter för Linux
Topp 5 Ergonomiska datormusprodukter för Linux
Ger långvarig datoranvändning smärta i handleden eller fingrarna? Lider du av styva leder och måste ständigt skaka hand? Känner du en brännande smärta...
Mus Så här ändrar du inställningar för mus och pekplatta med Xinput i Linux
Så här ändrar du inställningar för mus och pekplatta med Xinput i Linux
De flesta Linux-distributioner levereras med "libinput" -bibliotek som standard för att hantera inmatningshändelser i ett system. Den kan bearbeta inm...
Mus Omforma dina musknappar på olika sätt för olika program med X-Mouse Button Control
Omforma dina musknappar på olika sätt för olika program med X-Mouse Button Control
Kanske behöver du ett verktyg som kan göra att musens kontroll ändras med alla applikationer som du använder. Om så är fallet kan du prova en ansökan ...