Kasulikke näpunäiteid

Kuidas saada faili juurde täielik tee?

Pin
Send
Share
Send
Send


Mõnikord peate teadma, millises kataloogis töötab skript. Noh, näiteks samas kataloogis on ka teisi skripte, mille peaks käivitama praegune töötav skript. Selleks, et ta neid käivitaks, oleks tore, kui ta teaks, kust neid otsida, kuna võite skripti käivitada täiesti suvalises kataloogis või kasutada selle käivitamiseks mitte skriptifaili ennast, vaid sümboolset linki teises kataloogis, mis näitab skriptifaili.

Muidugi saate seda teha ja muutuja skriptis endas saate kõvasti kodeerida kogu tee kataloogis, kus see skript asub. Saate midagi sellist:
See on töövalik ja kaks ülalnimetatud probleemi lahendatakse, kuid kui peate skripti teisaldama teise kataloogi, peate muutma skripti enda muutuja väärtust. Pole eriti mugav.

Probleemi ilusa lahenduse leidmiseks peate teadma ainult kolme asja:

  1. Tee jooksva skripti juurde võib leida 0 dollariga, kuid probleem on selles, et see on suhteline, s.t. kui käivitate skripti kujul ./script.sh, sisaldab $ 0 ./script.sh
  2. Meeskond readlink koos parameetriga -e see lahendab kaks probleemi korraga: esiteks tagastab see kogu skriptifaili tee, kui kasutasite selle käivitamiseks sümboolset linki (isegi kui see oli sümmeetriline link), ja teiseks teisendab see suhtelise tee, kui see on saadud kasutades 0 dollarit, absoluutseks
  3. Skriptifaili nimest vabanemiseks absoluutse tee lõpus peate kasutama käsku dirname
Näide:

13 kommentaari:

Ja kui te ei kasutanud sümboolse lingi käivitamist?
Ja milleks aeda vaevata.
Lihtsalt nii:
DIRSCRIPT = $ (pwd) # Praegune kataloog
kaja "$"

Parandus .. Lühidalt, ma arvasin selle välja. Kogu see jama ja mõlemad.
Siin on universaalne suurepärane lahendus, eriti kui arvestada sellega, et fraasis puudub "readlink".

Ja käivitage soovitud skript.

> Ja kui te ei kasutanud sümboolse lingi käivitamist?
Kõik töötab ideaalselt õigesti

Kas olete kindel, et hüüdlause nimetamiseks lahenduseks, milles te ikkagi head ideed välja ei mõelnud?

> fraasis puudub "readlink"
Kust ma kirjutasin, et see peaks toimima freebies'is? Loe blogi pealkirja ja postitusi.
Ma ei kasuta tasutabaasid, vaid lubage mul endalt küsida, millist käsutõlki te selles kasutate? Minu teada on vaikimisi tcsh või csh ja üldse mitte bash.

> Ja käivitage skript, nagu soovite
Mis sa oled? Okei Seejärel looge teises kataloogis (mitte selles, milles skript asub) oma skripti jaoks sümboolne link, sisestage see kataloog ja käivitage link. Olge väga üllatunud. Teie lahendus tagastab tee selle kataloogi juurde, kus skript asub, selle kataloogi asemel. Lootus kättesaadav selgitatud.

Ja palun selgitage ka, mis on minu antud kahe meeskonna lahendus teie kolme meeskonna otsusele? Lisaks sellele, et minna kataloogi, et teada saada tee sinna, on väike kargus, kas see ei tundu teile nii? Kuid muidugi leian ma selles juba süü, sest karkudeta bassis pole kuhugi.

PWD - käsk Unixis / Linuxis aktiivse kataloogi kuvamiseks

Kuidas saab käsku „PWD” kasutada Linuxi või Unixi laadsetes opsüsteemides?
PWD on lühend lühendist Print Working Directory - näidake kataloogi, kus kasutaja asub. Käsku „PWD” peetakse üheks kõige sagedamini kasutatavaks käsuks Linuxis, AIX, HP-UX, * BSD ja teistes UNIXi sarnastes opsüsteemides koos ls ja cd käsuga.
Käsku saab kasutada järgmistel eesmärkidel nii Apple OS X kui ka UNIX või Linux opsüsteemides:

  • Siit leiate täieliku tee praegusesse kataloogi
  • Salvestage kesta muutujasse praeguse kataloogi kogu tee
  • Kontrollige absoluutset rada
  • Kontrollige füüsilist rada, s.t. välista sümboolsed lingid
  • Praegune kataloog

Praegune kataloog pole midagi muud kui kataloog, milles praegune kasutaja töötab või asub, kui kasutate bash või ksh või zsh või tcsh / csh shell shell. Käsurea kasutamiseks peate avama terminali (GUI) või sisestama konsooli.
Näited:
Praeguse töökataloogi kuvamiseks tippige:

Selles näites on praegune kataloog / home / pavelzen. Mis tahes kataloogi täielik tee Unixi laadsetes opsüsteemides algab alati kaldkriipsuga. Lihtsamalt öeldes:

  1. / - kaldkriips - räägib teie süsteemi või failisüsteemi juurkataloogist
  2. kodu - kodukataloog, milles on kõigi süsteemis olevate kasutajate sätted ja isiklikud failid
  3. pavelzen - kasutaja kodukataloog, kus asuvad kõik pavelzeni kasutaja seaded ja isiklikud failid

Tüüpiline olukord Linuxi / Unixi kesta kasutamisel on PWD käsk aktiivse kataloogi kuvamiseks

Enamik Linuxi / Unixi kasutajaid kasutab PWD käsku koos ls ja cd käsuga:
# # Kus ma olen?

# # Loetlege praeguse kataloogi sisu

# # Loetlege praeguse kataloogi sisu koos kõigi failide üksikasjadega

# Muutke praegune kataloog "Video" kataloogiks

Ülaltoodud näites kasutatakse PWD-käsku, et kinnitada, et praegust kataloogi on tegelikult muudetud.

Vaadake kogu teavet PWD-käsu kohta terminalist:

Linuxis saate kasutada: -

realpath yourfile, et saada failini täielik tee, nagu paljud on soovitanud.

Sarnase stsenaariumi korral juhin cshelli skripti teisest kohast. Skripti õige absoluutse tee määramiseks nii, et see töötab ainult määratud kataloogis, kasutan järgmist koodi:

$ 0 salvestab skripti täitmise ajal täpse stringi.

Näiteks kui skripti käitati järgmiselt: $> ../../test/test.csh, sisaldab $ script_dir /home/abc/sandbox/v1/../../test

Töötab Macis, Linuxis, * nix:

See annab teile pakkumise kõigi aktiivse kataloogi failide kohta:

Selle tulemuse saab hõlpsalt kopeerida python-loendisse või mõnda muusse sarnasesse andmestruktuuri.

See on seletus @ ZeRemzi vastuses toimuvale:

  • See skript saab suhtelise tee argumendina "$ 1"
  • Siis saame selle tee dirname osa (selle skripti jaoks saate edastada kas dir või faili): dirname "$ 1"
  • Siis cd "$ (dirname" $ ​​1 ") sellele suhtelisele dir
  • && pwd -P ja saate selle jaoks absoluutse tee. -P variant väldib kõiki sümboolseid linke
  • Pärast seda lisame absoluutsele teele baasinime: $ (basenimi "$ 1")
  • Viimase sammuna kajastame seda

Pin
Send
Share
Send
Send