Me gustaría una manera fácil de obtener la ruta completa a un archivo. Actualmente escribo esto:
echo `pwd`/file.ext
Intentando acortarlo, hice un alias bash:
alias fp='echo `pwd`/'
Pero ahora si escribo fp file.ext
, hay un espacio que aparece entre el /
y el file.ext
.
¿Ya existe dicho comando y me lo estoy perdiendo? Si no, ¿cómo haría para crear tal alias o función en bash?
command-line
bash
Jens Erat
fuente
fuente
readlink -f
(orealpath
, que es una utilidad más antigua mantenida por compatibilidad) expandirá adicionalmente todos los enlaces simbólicos, lo cual no es necesariamente deseable.realpath
.En lugar del
pwd
comando, use laPWD
variable (también está en POSIX):Si necesita admitir Windows, reconocer rutas absolutas será más complicado ya que cada puerto de herramientas Unix tiene sus propias reglas para traducir rutas de archivos. Con Cygwin, use la
cygpath
utilidad.fuente
para responder a su pregunta con lo que usa ahora:
el alias se expande en la posición donde está escribiendo en este momento. escribiste:
esto se convierte
podría usar una función para evitar eso:
puedes usar eso como siempre:
fuente
echo "`pwd`/$1"
*
en un directorio que contenga otros archivos).fp *
cede/tmp/4cc3ea0c1b34b
ya que ese es el primer parámetro para la función. los otros parámetros serían los otros archivos en el directorio. tan pronto como tengo un archivo llamado ' ' la función aún funciona como se esperaba, llamándola con "*" o * o *Puedes usar:
fuente
apt-cache search realpath
para revelar que los paquetes coreutils y simple realpath ambos lo contienen. Luego puede escribirsudo apt-get install realpath
(ocoreutils
) para instalarlo.Desde /programming//a/3915420/5795941
Esta es la única forma que es aceptable para mí. No expande enlaces como realpath y readlink y es la forma clásica de hacerlo que he visto en todas partes.
fuente