GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana Anda menormalkan jalur file di Bash?

jika Anda ingin memotong sebagian nama file dari jalur, "dirname" dan "basename" adalah teman Anda, dan "realpath" juga berguna.

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 alternatif

Jika realpath tidak didukung oleh shell Anda, Anda dapat mencoba

readlink -f /path/here/.. 

Juga

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

Bekerja sama dengan

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

di jalan yang tidak perlu ada untuk dinormalisasi.


Coba realpath . Di bawah ini adalah sumber secara keseluruhan, dengan ini disumbangkan ke domain publik.

// 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);
}

Saya tidak tahu apakah ada perintah bash langsung untuk melakukan ini, tetapi biasanya saya melakukannya

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

dan itu bekerja dengan baik.


Linux
  1. Bagaimana cara memeriksa syslog di Bash di Linux?

  2. Bagaimana cara mengonversi .. dalam nama jalur menjadi nama absolut dalam skrip bash?

  3. Bagaimana cara membuat file di Linux dari jendela terminal?

  1. Bagaimana cara memeriksa apakah suatu file kosong di Bash?

  2. Cara memasukkan file dalam skrip bash shell

  3. Bagaimana cara mendapatkan direktori absolut dari sebuah file di bash?

  1. Bagaimana cara menyorot skrip Bash di Vim?

  2. Bagaimana cara menyimpan riwayat bash saya di seluruh sesi?

  3. Cara grep untuk unicode � dalam skrip bash