Vodič: Nabavite imenik Bash skripte

Vodič: Nabavite imenik Bash skripte
Bash Script

Razumijevanje dohvaćanja direktorija s Bash skriptom

Kada radite s Bash skriptama, često je potrebno znati direktorij u kojem se skripta nalazi. Ovo može biti korisno za različite zadatke, kao što je postavljanje radnog direktorija ili pristup datotekama u odnosu na lokaciju skripte.

U ovom ćemo vodiču istražiti kako dohvatiti put direktorija Bash skripte iz same skripte. Ovaj pristup je osobito koristan kada želite da vaša skripta djeluje kao pokretač za druge aplikacije, osiguravajući da radi na ispravnim datotekama.

Naredba Opis
readlink -f Rješava puni put simboličke veze, pružajući apsolutni put Bash skripte.
dirname Ekstrahira put direktorija iz danog puta datoteke, koji se koristi za određivanje direktorija skripte.
os.path.realpath(__file__) Vraća kanonski put navedene datoteke, rješavajući sve simboličke veze u Pythonu.
os.chdir() Mijenja trenutni radni direktorij u navedenu stazu u Pythonu.
abs_path($0) Pruža apsolutni put skripte koja se izvršava u Perlu.
chdir() Mijenja trenutni radni direktorij u navedenu stazu u Perlu i PHP-u.
system() Izvršava vanjsku naredbu unutar skripte u Perlu.
exec() Pokreće vanjski program unutar skripte u PHP-u, zamjenjujući trenutni proces.

Detaljno objašnjenje skripte

Priložene skripte dizajnirane su za određivanje direktorija u kojem se nalaze i promjenu radnog direktorija na taj put. Ovo je korisno kada skripta treba raditi na datotekama unutar vlastitog direktorija ili pokretati druge aplikacije s tog mjesta. Na primjer, u Bash skripti, naredba readlink -f koristi se za dobivanje apsolutne putanje skripte, i dirname izdvaja direktorij iz te staze. Onda cd naredba mijenja trenutni radni direktorij u direktorij skripte, osiguravajući da sljedeće naredbe rade na ispravnoj lokaciji.

U primjeru Pythona, os.path.realpath(__file__) dobiva apsolutnu putanju skripte i os.chdir() mijenja radni direktorij. Perl skripta koristi abs_path($0) da biste dobili apsolutni put skripte i chdir() mijenjati direktorije. Slično, PHP skripta koristi realpath(__FILE__) pronaći put skripte i chdir() za promjenu imenika. Svaka skripta završava naredbom za pokretanje aplikacije, čime se osigurava da se izvršava u kontekstu direktorija skripte.

Određivanje direktorija Bash skripte

Primjer bash skripte

#!/bin/bash
# Get the directory of the script
SCRIPT_DIR=$(dirname "$(readlink -f "$0")")
echo "The script is located in: $SCRIPT_DIR"

# Change to the script's directory
cd "$SCRIPT_DIR" || exit

# Execute the application
./application

Python alternativa za dohvaćanje direktorija skripti

Primjer Python skripte

#!/usr/bin/env python3
import os
import sys

# Get the directory of the script
script_dir = os.path.dirname(os.path.realpath(__file__))
print(f"The script is located in: {script_dir}")

# Change to the script's directory
os.chdir(script_dir)

# Execute the application
os.system('./application')

Perl skripta za određivanje direktorija skripti

Primjer Perl skripte

#!/usr/bin/env perl
use Cwd 'abs_path';
use File::Basename;

# Get the directory of the script
$script_dir = dirname(abs_path($0));
print "The script is located in: $script_dir\n";

# Change to the script's directory
chdir $script_dir or die "Cannot change directory: $!";

# Execute the application
system('./application');

PHP skripta za lociranje njegovog direktorija

Primjer PHP skripte

<?php
# Get the directory of the script
$script_dir = dirname(realpath(__FILE__));
echo "The script is located in: $script_dir\n";

# Change to the script's directory
chdir($script_dir);

# Execute the application
exec('./application');
?>

Alternativne metode za određivanje direktorija skripti

Osim prethodno spomenutih metoda, postoje i druge tehnike za određivanje direktorija Bash skripte. Jedna takva metoda je korištenje varijabli okoline. Na primjer, $BASH_SOURCE varijabla sadrži putanju datoteke Bash skripte, koja može biti korisna za skripte koje izvorno koriste druge skripte. Drugi pristup je korištenje argumenata naredbenog retka. Analizirajući se $0 parametra, koji sadrži naziv skripte koja se izvršava, možete odrediti lokaciju skripte kada se izvršava iz različitih konteksta, kao što su simboličke veze ili izvorne datoteke.

Ove alternativne metode mogu pružiti fleksibilnost ovisno o kontekstu u kojem se skripta koristi. Na primjer, kada se radi o simboličkim vezama, readlink često je potrebno za rješavanje pravog puta skripte. Razumijevanje ovih različitih tehnika osigurava da su vaše skripte robusne i prilagodljive različitim okruženjima izvršavanja, povećavajući njihovu korisnost i pouzdanost.

Često postavljana pitanja

  1. Kako mogu dobiti direktorij skripte pomoću $BASH_SOURCE?
  2. Možeš koristiti dirname "$(realpath "${BASH_SOURCE[0]}")" da dobijete direktorij skripte.
  3. Koja je razlika između $0 i $BASH_SOURCE?
  4. $0 je naziv skripte koja se izvršava, dok $BASH_SOURCE sadrži punu stazu izvorne skripte.
  5. Mogu li koristiti readlink sa simboličkim vezama?
  6. Da, readlink -f rješava puni put simboličke veze.
  7. Što znači os.chdir() raditi u Pythonu?
  8. os.chdir() mijenja trenutni radni direktorij na navedenu stazu.
  9. Kako mogu dobiti apsolutnu putanju skripte u Perlu?
  10. Korištenje abs_path($0) iz modula Cwd daje apsolutnu putanju skripte.
  11. Koja se naredba koristi u PHP-u za izvršavanje vanjskog programa?
  12. exec() koristi se za pokretanje vanjskog programa u PHP-u.
  13. Kako mogu promijeniti direktorij u PHP-u?
  14. chdir() koristi se za promjenu trenutnog radnog direktorija u PHP-u.
  15. Zašto je dirname koristan u skriptama?
  16. dirname izdvaja put direktorija iz zadanog puta datoteke, pomažući locirati direktorij skripte.

Završne misli o dohvaćanju direktorija skripti

Određivanje direktorija Bash skripte ključni je zadatak za skripte koje trebaju raditi na lokalnim datotekama ili pokretati aplikacije. Korištenjem naredbi poput readlink, dirname, i koristeći varijable okoline, skripte mogu dinamički prilagođavati svoj radni direktorij. Ova praksa osigurava da skripta radi ispravno, bez obzira na to odakle se izvršava. Razumijevanje i implementacija ovih metoda povećava fleksibilnost i pouzdanost vaših skripti, čineći ih učinkovitijima za različite aplikacije i slučajeve korištenja.