Kuinka saan nykyisen työhakemiston? [kaksoiskappale]

Tähän kysymykseen on jo saatu vastauksia :

Kommentit

  • Liittyvät: Bash-komentosarjan lähdehakemisto sisältä
  • Tämä ei ole kopio kysymyksestä, jolle se on tällä hetkellä merkitty. Näitä kahta kysymystä tulisi verrata ainakin niiden otsikoiden (ja vastausten) perusteella. Sillä, että vastaus tähän kysymykseen on jo toinen kysymys, ei ole tai sen pitäisi olla merkitystä.
  • @KennyEvitt todellakin, yksi tärkeimmistä syistä, jonka lopetamme, johtuu juuri siitä, että vastaus on annettu muualla. Ja itse asiassa pääkysymys on tosiasiallisesti, kuinka komennon ulostulo osoitetaan muuttujalle, jonka dupe kattaa. Olen antanut vastauksen myös tähän tapaukseen, joten kaikki perusteet on katettu. Ei ole mitään hyötyä tämän avaamisesta uudelleen.
  • @terdon Tämä on resurssi, joka on käytettävissä ja tarkoitettu koko Unix & Linux-käyttäjien populaatiolle. arvokas kysymys, vaikka alkuperäinen kysyjä todella tarvitsisi vastausta jo muualle. Jos jotain, mielestäni tätä kysymystä on muokattava vastaamaan tarkemmin sen otsikkoa ja se olisi avattava uudelleen, ei sallia lisätoimintaa, mutta ei tarkoita, että kysymys on ' huono '.
  • @KennyEvitt kaksoiskappaleena sulkeminen ei tarkoita, että kysymys on huono! Tämä kysymys pysyy täällä vastauksena ikuisesti. Jos haluat todella tietää, kuinka saada nykyinen työkirja, löydät vastauksesi täältä. Jos haluat vain tietää, kuinka komennon lähtö tallennetaan muuttujaan, löydät vastauksen myös täältä seuraamalla linkkiä dupe. Joka tapauksessa tämä ei ole ' oikeastaan jotain, jonka minun pitäisi tehdä yksin, jos sinusta tuntuu vahvasti, että se olisi avattava uudelleen, avaa keskustelu aiheesta Unix ja Linux Meta , joissa tällaiset asiat pitäisi ratkaista.

Vastaa

Siellä ”Sitä ei tarvitse tehdä, se on jo muuttujassa :

$ echo $PWD /home/terdon 

PWD muuttuja on POSIXin määrittelemä ja toimii kaikissa POSIX-yhteensopivissa kuoreissa:

PWD

Asettaa kuoren ja cd-apuohjelman avulla. Kuoressa arvo on alustettava ympäristöstä seuraavasti. Jos PWD: n arvo välitetään kuorelle ympäristössä, kun se suoritetaan, arvo on nykyisen työhakemiston absoluuttinen polunimi, joka on enintään {PATH_MAX} tavua, mukaan lukien lopetettava nolla tavu, ja arvo ei sisällä kaikki komponentit, jotka ovat pisteitä tai pisteitä, kuoren on asetettava PWD ympäristön arvoon. Muussa tapauksessa, jos PWD: n arvo välitetään kuorelle ympäristössä, kun se suoritetaan, arvo on nykyisen työhakemiston absoluuttinen polunimi, eikä arvo sisällä piste- tai piste-piste-komponentteja, niin se on määrittelemätön, asettako kuori PWD: n arvoksi ympäristöstä vai asettaako PWD polun nimeksi, jonka pwd -P tuottaa. Muuten sh-apuohjelma asettaa PWD: n polun nimeksi, jonka pwd -P tuottaa. Tapauksissa, joissa PWD on asetettu arvoon ympäristöstä, arvo voi sisältää komponentteja, jotka viittaavat symbolisen linkin tyyppisiin tiedostoihin. Tapauksissa, joissa PWD on asetettu polunimeksi, jonka pwd -P tuottaisi, jos nykyisessä työhakemistossa tai sen hakemiston missä tahansa ylätasossa ei ole riittävästi lupaa määrittää, mikä polku olisi, PWD: n arvo on määrittelemätön. Tämän muuttujan määritykset voidaan jättää huomiotta. Jos sovellus asettaa tai poistaa PWD-arvon, cd- ja pwd-apuohjelmien käyttäytymistä ei ole määritelty.


Yleisemmäksi vastaukseksi tapa tallentaa komennon lähtö muuttujaan on liittää komento $() tai ` ` (taaksepäin):

var=$(command) 

tai

var=`command` 

Näistä kahdesta $() on suositeltava, koska monimutkaisten komentojen, kuten command0 $(command1 $(command2 $(command3))), rakentaminen on helpompaa.

Vastaa

dir=$(pwd)

Tämä on siirrettävämpi ja suositeltavampi kuin backticks-menetelmä.

$() -toiminnon avulla voit sijoittaa komennot.

esim .: mech_pwd=$(pwd; echo in $(hostname))

Kommentit

  • Jos mitään, taustakuvat ovat kannettavampia, koska ne edeltävät $() -muotoa.Mahdollisesti voi silti olla joitain koneita, jotka käyttävät kuoria, jotka <

eivät tue uudempaa $() -merkintää. Vaikka molemmat on määritelty POSIX: lla, $() on nykyään suositeltava, koska se on puhtaampi syntaksi ja voidaan sijoittaa ($(command1 $(command2))) kauas yksinkertaisempi tapa kuin backticks.

Vastaa

Voit käyttää joko ympäristömuuttujaa $PWD, tai kirjoita jotain:

dir=`pwd` 

Vastaa

Sinun on käytettävä komennon korvaamista komennon pwd tallennukseen muuttujaan. Komennon korvaaminen voi käyttää taaksepäin tai dollarimerkkejä. Näin:

$ mkdir "/tmp/new dir" $ cd "/tmp/new dir" $ CWD="$(pwd)" $ echo $CWD /tmp/new dir $ cd ~ $ echo $CWD /tmp/new dir $ pwd /home/ja 

Vastaa

Nykyisen työhakemiston arvo voi ole erilainen. Jos käytit symbolisia linkkejä nykyisen hakemiston hakemiseen, pwd antaa erilaisia tuloksia kuin / usr / bin / pwd. Koska käytät bashia, käytän:

dir=$(/usr/bin/pwd) 

tai kommentin mukaan:

dir=$(pwd -P) 

koska en pidä lainausmerkeistä, koska ne eivät voi pesiä.

Kommentit

  • dir = $ (pwd -P) toimii myös.

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *