Portál AbcLinuxu, 10. května 2025 07:14

Dotaz: Bash, jak zjistit uplny nazev souboru (FQN) ?

mutable avatar 3.1.2008 04:08 mutable | skóre: 7 | blog: mutable_the_mutative
Bash, jak zjistit uplny nazev souboru (FQN) ?
Přečteno: 658×
Odpovědět | Admin
Ahoj.

Chtel bych si udelat takovou bash funkci, ktera mi prida parametry do promenne CLASSPATH. Tzn. chtel bych to pouzivat nejak takhle:

$ addCP ../../java-libs/knihovna.jar

Potreboval bych ten parameter prevest na uplnou cestu (fqn), tzn. treba /home/lojza/java-libs/knihovna.jar. Nevite nekdo jak to udelat? Hodne sem uz dumal, googlil, ptal se na irc, ale zatim sem nezjistil jedinnej zpusob.

Dekuju.
Lizzie Nexuiz Server
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

3.1.2008 07:29 cronin | skóre: 49
Rozbalit Rozbalit vše Re: Bash, jak zjistit uplny nazev souboru (FQN) ?
Odpovědět | | Sbalit | Link | Blokovat | Admin
Zakladna myslienka ziskania plnej cesty je tato:
cd ../../java-libs/
lib_dir=`pwd`
if [ -z "${CLASSPATH}" ] ; then
        CLASSPATH="${lib_dir}/${1}"
else
        CLASSPATH="${CLASSPATH}:${lib_dir}/${1}"
fi
export CLASSPATH
[...]
Ak je to bash nie sh, mohla by ist namiesto lib_dir pouzit premenna ${PWD} (tusim).

Druha cast problemu je, ze to chces urobit tak, aby sa po spusteni "funkcie" (skriptu?) zmena premennej CLASSPATH prejavila aj vo volajucom shelli.
3.1.2008 07:35 Vojtěch Horký | skóre: 39 | blog: Vojtův zápisník | Praha
Rozbalit Rozbalit vše Re: Bash, jak zjistit uplny nazev souboru (FQN) ?
Odpovědět | | Sbalit | Link | Blokovat | Admin

Pro získání úplné cesty používám tenhle skript.

I am always ready to learn although I do not always like to be taught. (W. Churchill)
3.1.2008 08:40 Atom321 | skóre: 20
Rozbalit Rozbalit vše Re: Bash, jak zjistit uplny nazev souboru (FQN) ?
Odpovědět | | Sbalit | Link | Blokovat | Admin
Mno, na tohle používám readlink -f "soubor". Dereferencuje symlinky a vrací úplnou cestu k souboru. Jako bash skript to vypadá nějak takhle:
#!/bin/bash

FILENAME="../../java-libs/knihovna.jar"
PATHNAME="$(readlink -f "$FILENAME")"
3.1.2008 08:55 Atom321 | skóre: 20
Rozbalit Rozbalit vše Re: Bash, jak zjistit uplny nazev souboru (FQN) ?
A ještě si dovolím opsat kus skriptu od kolegy výše a podat to celé na "stříbrném podnose":
#!/bin/bash

function addCP
{
    PATHNAME_TMP="$(readlink -f "$1")"
    if [ -z "$PATHNAME_TMP" ]; then
        echo "addCP: soubor $1 neexistuje"
    else
        if [ -z "${CLASSPATH}" ] ; then
            CLASSPATH="$(readlink -f "$1")"
        else
            CLASSPATH="${CLASSPATH}:$(readlink -f "$1")"
        fi
    fi
}


addCP "../../java-libs/knihovna.jar"
addCP "../knihovna2.jar"
Pokud chcete funkci "addCP" používat z interaktivního shellu, zavolejte tenhle skript s tečkou před jménem:
. ./jmeno_skriptu
Přeju příjemnou zábavu :-)
mutable avatar 3.1.2008 21:29 mutable | skóre: 7 | blog: mutable_the_mutative
Rozbalit Rozbalit vše Re: Bash, jak zjistit uplny nazev souboru (FQN) ?
Odpovědět | | Sbalit | Link | Blokovat | Admin
Dekuju vam vsem
Lizzie Nexuiz Server

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.