GNU/Linux >> Znalost Linux >  >> Linux

Jak normalizujete cestu k souboru v Bash?

pokud chcete vyříznout část názvu souboru z cesty, "dirname" a "basename" jsou vaši přátelé a "realpath" je také užitečné.

dirname /foo/bar/baz 
# /foo/bar 
basename /foo/bar/baz
# baz
dirname $( dirname  /foo/bar/baz  ) 
# /foo 
realpath ../foo
# ../foo: No such file or directory
realpath /tmp/../tmp/../tmp
# /tmp

realpath alternativy

Pokud realpath není podporován vaším shellem, můžete zkusit

readlink -f /path/here/.. 

Také

readlink -m /path/there/../../ 

Funguje stejně jako

realpath -s /path/here/../../

v tom, že cesta nemusí existovat, aby byla normalizována.


Zkuste realpath . Níže je uveden celý zdroj, tímto darován do veřejného vlastnictví.

// realpath.c: display the absolute path to a file or directory.
// Adam Liss, August, 2007
// This program is provided "as-is" to the public domain, without express or
// implied warranty, for any non-profit use, provided this notice is maintained.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <libgen.h>   
#include <limits.h>

static char *s_pMyName;
void usage(void);

int main(int argc, char *argv[])
{
    char
        sPath[PATH_MAX];


    s_pMyName = strdup(basename(argv[0]));

    if (argc < 2)
        usage();

    printf("%s\n", realpath(argv[1], sPath));
    return 0;
}    

void usage(void)
{
    fprintf(stderr, "usage: %s PATH\n", s_pMyName);
    exit(1);
}

Nevím, jestli k tomu existuje přímý příkaz bash, ale obvykle to dělám

normalDir="`cd "${dirToNormalize}";pwd`"
echo "${normalDir}"

a funguje to dobře.


Linux
  1. Jak zvýraznit Bash skripty ve Vimu?

  2. Jak získat úplnou cestu k souboru?

  3. Jak grepovat část souboru v bash shellu

  1. Jak analyzovat soubor CSV v Bash?

  2. Jak zkontrolovat syslog v Bash na Linuxu?

  3. Jak převést .. v názvech cest na absolutní název v bash skriptu?

  1. Jak vytvořit soubor v Linuxu z okna terminálu?

  2. Jak zkontrolovat, zda je soubor prázdný v Bash?

  3. Jak zahrnout soubor do skriptu bash shell