Finne katalogen til Bash-skriptet ditt
I mange skriptscenarier er det viktig å vite katalogen der Bash-skriptet ditt er plassert. Denne kunnskapen lar deg navigere til skriptets katalog og operere på filer i den effektivt.
Enten du bruker skriptet til å starte et annet program eller utføre operasjoner på spesifikke filer, sikrer det jevn og forutsigbar utførelse å finne skriptets katalog. Denne veiledningen vil vise hvordan du utfører denne oppgaven.
Kommando | Beskrivelse |
---|---|
${BASH_SOURCE[0]} | Refererer til hele banen til skriptet som kjøres i Bash. |
cd $(dirname ...) | Endrer gjeldende katalog til overordnet katalog for den angitte filen eller skriptet. |
pwd | Skriver ut gjeldende arbeidskatalog. |
realpath() | Returnerer den kanoniske banen til det angitte filnavnet i Python. |
sys.argv[0] | Inneholder skriptnavnet som ble brukt til å starte Python-skriptet. |
os.chdir() | Endrer gjeldende arbeidskatalog til den angitte banen i Python. |
os.system() | Utfører en kommando i subshell i Python. |
ls -al | Viser alle filer og kataloger med detaljert informasjon i gjeldende katalog. |
Forstå skriptkatalogplassering
Skriptene som følger med demonstrerer metoder for å bestemme katalogen der et Bash-skript er plassert. I Bash-skripteksemplet, kommandoen brukes til å hente skriptbanen, mens endrer arbeidskatalogen til skriptets katalog. De kommandoen skriver ut gjeldende arbeidskatalog, som bekrefter endringen. Dette er viktig for å starte applikasjoner fra skriptets plassering, og sikre at alle operasjoner skjer innenfor riktig kontekst.
I Python-skripteksemplet, henter skriptets katalog, og endrer arbeidskatalogen. De kommandoen brukes til å kjøre en annen applikasjon. Det avanserte Bash-skripteksemplet kombinerer disse teknikkene ved å bruke ls -al for å liste filer i skriptets katalog. Denne tilnærmingen er nyttig for skript som trenger å administrere eller operere på filer i forhold til deres plassering.
Bestem katalogen til et Bash-skript
Eksempel på Bash-skript
# Method to get the directory of the script
DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
# Print the directory
echo "The script is located in: $DIR"
# Change to the script's directory
cd "$DIR"
# Execute another application
./application
Endre arbeidskatalog til skriptets plassering
Python-skripteksempel
import os
import sys
def get_script_directory():
return os.path.dirname(os.path.realpath(sys.argv[0]))
# Get the script's directory
script_dir = get_script_directory()
# Print the directory
print(f"The script is located in: {script_dir}")
# Change to the script's directory
os.chdir(script_dir)
# Execute another application
os.system("./application")
Finne skriptets katalog i Shell Script
Eksempel på avansert Bash-skript
#!/bin/bash
# Resolve the directory of the script
SCRIPT_DIR=$(cd $(dirname "${BASH_SOURCE[0]}") && pwd)
# Print the resolved directory
echo "Script directory is: $SCRIPT_DIR"
# Move to the script's directory
cd "$SCRIPT_DIR"
# Example operation in script's directory
echo "Listing files in script directory:"
ls -al
# Launch another application from the script directory
./application
Ytterligere metoder for å finne skriptkatalog
En annen nyttig metode for å finne katalogen der et skript ligger, involverer utnyttelse av miljøvariabler. I noen systemer er variabelen inneholder banen til det kjørende skriptet. Ved å kombinere dette med kommandoer som og , kan du bestemme skriptets katalog på en mer bærbar måte. Dette er spesielt nyttig når skript kjøres i forskjellige miljøer eller gjennom symbolkoblinger.
Ved hjelp av kan løse symbolske lenker til deres faktiske filstier, og sikre nøyaktighet ved å bestemme katalogen. For eksempel, vil gi skriptets katalog selv om det er en symbolkobling. Å forstå disse metodene utvider skriptverktøysettet ditt, og muliggjør mer robust og tilpasningsdyktig skriptdistribusjon.
- Hvordan kan jeg få katalogen til et skript i Bash?
- Bruk kombinert med og for å finne katalogen.
- Hvorfor er det viktig å bestemme skriptkatalogen?
- Det sikrer at operasjoner i skriptet skjer i riktig kontekst, spesielt når du arbeider med relative filbaner.
- Kan jeg bruke miljøvariabler for å finne skriptkatalogen?
- Ja, variabler som og kommandoer som kan hjelpe med å finne skriptets plassering.
- Hva gjør gjøre?
- Den løser alle symbolske lenker til deres endelige destinasjon, og gir en absolutt vei.
- Hvordan gjør fungerer i Python-skript?
- Den inneholder skriptnavnet som brukes til å starte Python-skriptet, nyttig for å bestemme skriptets katalog.
- Er nødvendig i Python-skript?
- Ja, den returnerer den kanoniske banen til det angitte filnavnet, noe som hjelper med å bestemme den absolutte banen.
- Kan disse metodene brukes i andre skriptspråk?
- Selv om spesifikasjonene kan variere, kan lignende konsepter brukes på andre språk for å bestemme skriptplasseringer.
Å finne katalogen der et Bash-skript ligger er avgjørende for skriptpålitelighet og korrekt filbehandling. Ved å bruke kommandoer som , , og , kan du sikre at skriptet ditt fungerer innenfor den tiltenkte katalogen. Denne tilnærmingen er ikke bare effektiv i Bash, men kan også tilpasses for Python-skript os.path.realpath() og . Disse teknikkene bidrar til å lage robuste skript som er i stand til å administrere filer og starte applikasjoner nøyaktig, uavhengig av deres utførelsesmiljø.