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.
Bagaimana saya meminta input Ya/Tidak/Batalkan dalam skrip shell Linux?
Bagaimana cara membuat proses anak mati setelah orang tua keluar?