Bash katalog ze skryptem
- sauron
- Sędziwy Jeż
- Posty: 45
- Rejestracja: 13 cze 2009, 11:30
- Płeć: Mężczyzna
- Wersja Ubuntu: inny OS
- Środowisko graficzne: GNOME
- Architektura: x86_64
Bash katalog ze skryptem
Witam, chcę użyć katalogu w którym znajduje się skrypt i jego pliki. Katalog na pewno się będzie zmieniał i dlatego chcę w jakiś sposób rozwiązać problem dowiązań w skrypcie do plików w tym katalogu.
Próbowałem na rożne sposoby z kropką, z $0, ale nic z tego mi nie wyszło.
Chcę aby to wyglądało mniej więcej tak: mam katalog i w nim skrypt i jakieś pliki i chciałbym otworzyć te pliki skryptem znajdującym się w tym katalogu. Chcę uniknąć pisania ścieżki np. /home/, bo jak się zmieni ścieżka katalogu to skrypt nie zadziała
Mam nadzieję, że ktoś będzie w stanie pomóc :]
Pozdrawiam
Próbowałem na rożne sposoby z kropką, z $0, ale nic z tego mi nie wyszło.
Chcę aby to wyglądało mniej więcej tak: mam katalog i w nim skrypt i jakieś pliki i chciałbym otworzyć te pliki skryptem znajdującym się w tym katalogu. Chcę uniknąć pisania ścieżki np. /home/, bo jak się zmieni ścieżka katalogu to skrypt nie zadziała
Mam nadzieję, że ktoś będzie w stanie pomóc :]
Pozdrawiam
- borzole
- Serdeczny Borsuk
- Posty: 127
- Rejestracja: 10 sie 2010, 11:48
- Płeć: Mężczyzna
- Wersja Ubuntu: inny OS
- Środowisko graficzne: GNOME
- Architektura: x86_64
- Kontakt:
Odp: Bash katalog ze skryptem
Kod: Zaznacz cały
#!/bin/bash
abs_dir_path="$(readlink -f `dirname $0`)"
abs_file_path="$(readlink -f `dirname $0`)/$(basename $0)"
ls "$abs_dir_path"/*
echo "$abs_file_path"
- sauron
- Sędziwy Jeż
- Posty: 45
- Rejestracja: 13 cze 2009, 11:30
- Płeć: Mężczyzna
- Wersja Ubuntu: inny OS
- Środowisko graficzne: GNOME
- Architektura: x86_64
Odp: Bash katalog ze skryptem
Niestety to nie działa
Jeżeli skrypt ma nazwę qwerty to dostaję taki zwrot: ścieżka do skrytpu/qwerty
Tyle samo z $0 otrzymywałem
Jeżeli skrypt ma nazwę qwerty to dostaję taki zwrot: ścieżka do skrytpu/qwerty
Tyle samo z $0 otrzymywałem
- borzole
- Serdeczny Borsuk
- Posty: 127
- Rejestracja: 10 sie 2010, 11:48
- Płeć: Mężczyzna
- Wersja Ubuntu: inny OS
- Środowisko graficzne: GNOME
- Architektura: x86_64
- Kontakt:
Odp: Bash katalog ze skryptem
Ok, źle zrozumiałem. Myślałem, że chcesz mieć ścieżkę absolutną (to nie zawsze to samo co $0, czy pwd).
Postaraj się lepiej opisać co chcesz zrobić i jaki ma być końcowy efekt. Dlaczego katalog się będzie zmieniał? To ma być zależne od instalacji?
Więcej szczegółów proszę.
Postaraj się lepiej opisać co chcesz zrobić i jaki ma być końcowy efekt. Dlaczego katalog się będzie zmieniał? To ma być zależne od instalacji?
Więcej szczegółów proszę.
- sauron
- Sędziwy Jeż
- Posty: 45
- Rejestracja: 13 cze 2009, 11:30
- Płeć: Mężczyzna
- Wersja Ubuntu: inny OS
- Środowisko graficzne: GNOME
- Architektura: x86_64
Odp: Bash katalog ze skryptem
Ma to działać tak:
Mam katalog o nazwie skrypt np. tutaj: "/home/user/Skrypt"
w środku mam skrypt o nazwie np. "1.sh" oraz plik txt o nazwie "plik.txt", chcę aby skrypt wykorzystywał plik.txt (otwierał, kopiował gdzie indziej itd.)
jeżeli wywołam $0 to dostaję zwrot : "/home/user/Skrypt/1.sh", a bardziej pragnąłbym ścieżki samej tzn. "/home/user/Skrypt" to wtedy już plik zawsze będzie ok bo jak skopiuję cały katalog np. na "/Skrypt" to plik txt będzie się znajdował tu: "/Skrypt/plik.txt".
Potrzebuję ścieżki skryptu po prostu, bez samej nazwy skryptu
W pierwszym wypadku "/home/user/Skrypt" a w drugim "/Skrypt".
Mam nadzieję że już teraz napisałem to jakoś zrozumiale :]
Mam katalog o nazwie skrypt np. tutaj: "/home/user/Skrypt"
w środku mam skrypt o nazwie np. "1.sh" oraz plik txt o nazwie "plik.txt", chcę aby skrypt wykorzystywał plik.txt (otwierał, kopiował gdzie indziej itd.)
jeżeli wywołam $0 to dostaję zwrot : "/home/user/Skrypt/1.sh", a bardziej pragnąłbym ścieżki samej tzn. "/home/user/Skrypt" to wtedy już plik zawsze będzie ok bo jak skopiuję cały katalog np. na "/Skrypt" to plik txt będzie się znajdował tu: "/Skrypt/plik.txt".
Potrzebuję ścieżki skryptu po prostu, bez samej nazwy skryptu
W pierwszym wypadku "/home/user/Skrypt" a w drugim "/Skrypt".
Mam nadzieję że już teraz napisałem to jakoś zrozumiale :]
- ethanak
- Wygnańcy
- Posty: 3054
- Rejestracja: 04 gru 2007, 13:19
- Płeć: Mężczyzna
- Wersja Ubuntu: 12.04
- Środowisko graficzne: GNOME
- Architektura: x86
- Lokalizacja: Bielsko-Biała
- Kontakt:
Odp: Bash katalog ze skryptem
Napisałeś zrozumiale, ale sposób myslenia masz windowsiany.sauron pisze:Mam nadzieję że już teraz napisałem to jakoś zrozumiale :]
Takie coś akurat jest niemożliwe do zrealizowania (choćby ze względu na istnienie hardlinków), nie jesteś w stanie stwierdzić gdzie w rzeczywistości siedzi wykonywany skrypt/program. W Windowsie jest to możliwe, ale tam akurat hardlinków nie ma, a ichniejsze "skróty" to niezupełnie to samo co Uniksowe softlinki.
Nie wiem jak przy skryptach (nie próbowałem), ale przy normalnej binarce, jeśli nie jest to jakiś link, to można wydłubać rzeczywiste położenie programu z proca - coś w stylu /proc/<twój_pid>/exe. Tyle że na tym bym nie polegał.
Pytanie: dlaczego nie chcesz zrobić tego po ludzku (tzn. jakiś instalator)?
Кто жопой родился, чижиком не помрёт
- borzole
- Serdeczny Borsuk
- Posty: 127
- Rejestracja: 10 sie 2010, 11:48
- Płeć: Mężczyzna
- Wersja Ubuntu: inny OS
- Środowisko graficzne: GNOME
- Architektura: x86_64
- Kontakt:
Odp: Bash katalog ze skryptem
Albo ja nie umiem czytać ze zrozumieniem, albo Ty nadal coś plączesz.
abs_dir_path - absolutna ścieżka do katalogu
abs_file_path - absolutna ścieżka do skryptu
Polecenie readlink -f rozwija zwykłe linki nawet jeśli jest to link na link na link ...itd.
Poza tym zawsze można obciąć ostatni człon ścieżki tak ${0##/*} lub użyć dirname $0
Nie próbowałem nigdy sprawdzać odwołań do twardych linków, ale też można, bo mi kiedyś system wywalał błąd a pro po ilości odwołań (skoro wie ile ich jest, to musi też wiedzieć gdzie są).
Rozumiemy się, czy nadal nie?
no to Ci podałem, tyle że Ty nie potrafisz z tego skorzystać:Potrzebuję ścieżki skryptu po prostu, bez samej nazwy skryptu
abs_dir_path - absolutna ścieżka do katalogu
abs_file_path - absolutna ścieżka do skryptu
Polecenie readlink -f rozwija zwykłe linki nawet jeśli jest to link na link na link ...itd.
Poza tym zawsze można obciąć ostatni człon ścieżki tak ${0##/*} lub użyć dirname $0
Nie próbowałem nigdy sprawdzać odwołań do twardych linków, ale też można, bo mi kiedyś system wywalał błąd a pro po ilości odwołań (skoro wie ile ich jest, to musi też wiedzieć gdzie są).
Rozumiemy się, czy nadal nie?
- ethanak
- Wygnańcy
- Posty: 3054
- Rejestracja: 04 gru 2007, 13:19
- Płeć: Mężczyzna
- Wersja Ubuntu: 12.04
- Środowisko graficzne: GNOME
- Architektura: x86
- Lokalizacja: Bielsko-Biała
- Kontakt:
Odp: Bash katalog ze skryptem
Stawiałbym na obaborzole pisze:Albo ja nie umiem czytać ze zrozumieniem, albo Ty nadal coś plączesz.
Wie ile, wie gdzie, ale hardlinki są nieodróżnialne. Czyli nie ma tak jakw Windowsie że "exe siedzi w c:\gdzieś\tam" i tam siedzi. Jeśli zrobię coś w stylu:Nie próbowałem nigdy sprawdzać odwołań do twardych linków, ale też można, bo mi kiedyś system wywalał błąd a pro po ilości odwołań (skoro wie ile ich jest, to musi też wiedzieć gdzie są).
Kod: Zaznacz cały
echo 'HORTENSJA' > /tmp/HORTENSJA.txt
ln /tmp/HORTENSJA.txt /var/lib/HORTENSJA
Czyli jeśli zrobię sobie katalog typu "/o/jejku/jaki/fajny/katalog" i "/mnt/disk/spartolony/", w katalogu "/mnt/disk/spartolony" umieszczę plik "wybitnie.txt" a potem zrobię:
Kod: Zaznacz cały
ln /mnt/disk/spartolony/wybitnie.txt /o/jejku/jaki/fajny/katalog/zplikiem.txt
[code]
oba pliki będą równorzędne.
I co wtedy powiesz na istnienie jakiegoś "cośtam.txt" w tym samym katalogu? Który to mianowicie jest "ten sam"?
PS. Proszę uprzejmie Pana Administratora o zamianę "HORTENSJA" na "begonia" :)
Кто жопой родился, чижиком не помрёт
- borzole
- Serdeczny Borsuk
- Posty: 127
- Rejestracja: 10 sie 2010, 11:48
- Płeć: Mężczyzna
- Wersja Ubuntu: inny OS
- Środowisko graficzne: GNOME
- Architektura: x86_64
- Kontakt:
Odp: Bash katalog ze skryptem
wiem czym są hardlinki, ale nie wiem, o co chodzi sauronowi (że o pierścieniu nie wspomnę)
- sauron
- Sędziwy Jeż
- Posty: 45
- Rejestracja: 13 cze 2009, 11:30
- Płeć: Mężczyzna
- Wersja Ubuntu: inny OS
- Środowisko graficzne: GNOME
- Architektura: x86_64
Odp: Bash katalog ze skryptem
Problem już rozwiązany, a sposób było prozaiczne i wygląda tak:
Dzięki za wszystkie odpowiedzi. Tylko o to mi chodziło. Czy ja wiem czy windowsiany, nie siedziałem na windowsie już dobrych 6 lat w ogóle, a w poście #5 chciałem opisać wszystko jak najprościej, aby nic nie zamotać.
PS. Pierścień chwilowo jest poza moim wzrokiem, ale cały czas Nazgule poszukują
Kod: Zaznacz cały
dirname $0
PS. Pierścień chwilowo jest poza moim wzrokiem, ale cały czas Nazgule poszukują
Kto jest online
Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 26 gości