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 --versionUtgå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 / bashcp-text.txt / tmp /
eko ”Fil kopierad.”
Vi kan köra skriptet med ./ före skriptfilen, som bestämmer den aktuella dir-filen.
$ ./ bash_demo.shNä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.shProduktion 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 / bashdpath = / 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 / bashfö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 / bashfö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 / basheko ”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.