Im tratando de trabajar con una ruta de acceso y reemplazar el directorio de inicio con una tilde en bash, estoy esperando hacerlo con tan pocos programas externos como sea necesario. ¿Hay alguna manera de hacerlo con Bash? Obtuve¿Hay una buena manera de reemplazar el directorio de inicio con tilde in bash?
${PWD/#$HOME/\~}
Pero eso no es del todo cierto. Que necesita para convertir:
/home/alice to ~
/home/alice/ to ~/
/home/alice/herp to ~/herp
/home/alicederp to /home/alicederp
Como nota de interés, aquí está la forma en la fuente de fiesta lo hace cuando se convierte la \w value in the prompt:
/* Return a pretty pathname. If the first part of the pathname is
the same as $HOME, then replace that with `~'. */
char *
polite_directory_format (name)
char *name;
{
char *home;
int l;
home = get_string_value ("HOME");
l = home ? strlen (home) : 0;
if (l > 1 && strncmp (home, name, l) == 0 && (!name[l] || name[l] == '/'))
{
strncpy (tdir + 1, name + l, sizeof(tdir) - 2);
tdir[0] = '~';
tdir[sizeof(tdir) - 1] = '\0';
return (tdir);
}
else
return (name);
}
Esto no es bash, más como código C. Pero reemplazar una cadena casi sin contexto es propenso a errores. ¿Seguro que quieres proceder de esa manera? – pizza
Disculpe si esto no estaba claro. El código C es un ejemplo de cómo hacerlo. Es como lo hace Bash. bash es un programa escrito en C. Ahora quiero hacer lo mismo en el lenguaje bash. – Jake
¿Puede decirnos qué produce tal como es ahora? – birryree