Hogyan kaphatom meg a jelenlegi munkakönyvtárat? [duplicate]

Erre a kérdésre már itt vannak válaszok :

megjegyzések

  • Kapcsolódó: belülről származó Bash szkript forráskönyvtára
  • Ez nem másolata annak a kérdésnek, amelyre jelenleg egyként van jelölve. A két kérdést legalább a címük (és a válaszaik) alapján össze kell hasonlítani. Az, hogy erre a kérdésre a választ már lefedi egy másik, nem releváns, vagy ennek lennie kell.
  • @KennyEvitt valójában az egyik fő ok, amit bezárunk, éppen azért van, mert a válasz másutt adták. És valójában itt a fő kérdés az, hogy hogyan rendelhető hozzá egy parancs kimenete egy változóhoz, amelyet a dupe lefed. Erre a konkrét esetre is megadtam a választ, így minden alapot lefedünk. Nem lenne előnye ennek újbóli megnyitásának.
  • @terdon Ez a Unix & Linux felhasználók teljes állományának számára elérhető és szánt erőforrásként értékes kérdés, még akkor is, ha az eredeti kérdezőnek valóban csak máshol már megválaszolt válaszra volt szüksége. Ha van valami, úgy gondolom, hogy ezt a kérdést úgy kell szerkeszteni, hogy jobban megfeleljen a címének, és újra meg kell nyitni, hogy ne engedje meg a további tevékenységeket, de nem arra utal, hogy ez a kérdés ' rossz '.
  • A @KennyEvitt mint duplikátum bezárása semmiképpen nem jelenti azt, hogy a kérdés rossz! Ez a kérdés örökre itt marad, megválaszolva. Ha valóban tudni szeretné, hogyan szerezze be a jelenlegi munkakönyvtárat, itt megtalálja a választ. Ha csak azt akarja tudni, hogyan mentse el a parancs kimenetét egy változóba, akkor itt is megtalálja a választ a dupe linkjének követésével. Mindenesetre ez nem ' nem igazán olyasmi, amit egyedül kellene tennem, ha erősen úgy érzi, hogy újra meg kell nyitni, kérjük, nyisson meg egy vitát a következővel kapcsolatban: / div> Unix és Linux Meta , ahol ezeket meg kell oldani.

Válasz

Ott “ezt nem kell megtenni, ez már benne van egy változóban:

$ echo $PWD /home/terdon 

A PWD változót a POSIX határozza meg , és minden POSIX-kompatibilis héjon működni fog:

PWD

A shell és a cd segédprogram állítja be. A héjban az értéket a környezettől kell inicializálni az alábbiak szerint. Ha a PWD értéke a végrehajtás során a környezetben lévő héjhoz kerül, akkor az érték az aktuális munkakönyvtár abszolút elérési útja, amely nem hosszabb, mint {PATH_MAX} bájt, beleértve a befejező null bájtot, és az érték nem tartalmaz minden olyan pont, amely pont vagy pont, akkor a shellnek a PWD-t a környezeti értékre kell állítania. Ellenkező esetben, ha a PWD értékét végrehajtásakor átadjuk a környezetben lévő héjnak, akkor az érték az aktuális munkakönyvtár abszolút elérési útja, és az érték nem tartalmaz pontot vagy pontot tartalmazó összetevőket, akkor nincs meghatározva, hogy a shell beállítja-e a PWD-t a környezeti értékre, vagy a PWD-t a pathwyn-re állítja-e, amelyet a pwd -P adna ki. Ellenkező esetben az sh segédprogram a PWD-t arra az útvonalnévre állítja be, amelyet a pwd -P adna ki. Abban az esetben, ha a PWD értékét a környezettől állítják be, az érték olyan elemeket tartalmazhat, amelyek szimbolikus típusú fájlokra hivatkoznak. Azokban az esetekben, amikor a PWD beállítása a pwd -P által kiadott elérési útra van beállítva, ha az aktuális munkakönyvtárban vagy a könyvtár bármelyik szülőjében nincs elegendő engedély annak meghatározásához, hogy mi lenne az az útnév, akkor a meg nem határozott. A változóhoz való hozzárendeléseket figyelmen kívül lehet hagyni. Ha egy alkalmazás beállítja vagy letiltja a PWD értékét, a cd és a pwd segédprogramok viselkedése nincs meghatározva.


Az általánosabb válaszért: A parancs kimenetének egy változóba történő mentésének módja az, hogy a parancsot $() vagy ` ` (backticks) mezőbe foglalja:

var=$(command) 

vagy

var=`command` 

A kettő közül a $() előnyös, mivel könnyebb olyan összetett parancsokat létrehozni, mint a command0 $(command1 $(command2 $(command3))).

Válasz

dir=$(pwd)

Ez sokkal hordozhatóbb, és előnyösebb a backticks módszerrel szemben.

A $() használatával beágyazhatja a parancsokat.

Például: mech_pwd=$(pwd; echo in $(hostname))

Megjegyzések

  • Valójában, ha van ilyen, a háttérképek sokkal hordozhatóbbak, mivel a $() formátumot megelőzik.Elképzelhető, hogy még mindig vannak olyan gépek, amelyek olyan kagylót futtatnak, amelyek nem ' nem támogatják az újabb $() jelölést. Míg mindkettőt a POSIX határozza meg, a $() -et ma előnyben részesítjük, mivel ez tisztább szintaxis és beágyazható ($(command1 $(command2))) egy távoli egyszerűbb módszer, mint a háttérbillentyűk.

Válasz

Használhatja a , vagy írjon hasonlót:

dir=`pwd` 

Válasz

A pwd parancs kimenetének változóba történő mentéséhez parancscserét kell használnia. A parancs behelyettesítéséhez backtickeket vagy dollár karaktereket használhat. Így:

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

Válasz

Az aktuális munkakönyvtár értéke másnak lenni. Ha szimbolikus linkeket használt az aktuális könyvtár megszerzéséhez, a pwd más eredményeket ad, mint az / usr / bin / pwd. Mivel a bash-t használja, a következőt használnám:

dir=$(/usr/bin/pwd) 

vagy a megjegyzés szerint:

dir=$(pwd -P) 

mivel nem szeretem az idézőjeleket, mivel nem tudnak fészkelni.

Megjegyzések

  • dir = $ (pwd -P) is működik.

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük