¿Cómo tener una mejor vista al escribir directorios en la terminal?

8

Actualmente estoy usando una Mac y estoy aprendiendo a usar el terminal, pero la pregunta también se aplica a los sistemas Linux.

Me gustaría preguntar, al escribir rutas en la línea de terminal / comando, ¿hay alguna forma dentro de la terminal para tener una mejor vista de los directorios?

Por ejemplo, quiero cd a un directorio particular. Una vez que empiezo a escribir la dirección, ¿hay alguna forma de básicamente ls en cada directorio? Si, por ejemplo, quiero copiar un archivo de un directorio a otro y quiero escribir 2 rutas absolutas, ¿debo memorizar 2 rutas? Sé que presionar Tab ayuda con el autocompletado, pero ¿qué pasa si no sé la primera letra?

En este momento confío en usar Finder para eso, pero imagino que las personas que usan el terminal exclusivamente tienen una mejor manera.

Gracias !

usuario1367903
fuente

Respuestas:

9

Tabes precisamente lo que necesitas Si presiona tabdos veces, le mostrará todas las finalizaciones posibles:

$ cd /usr/  ## Hit tab twice here
bin/     include/ lib64/   sbin/    src/     
games/   lib/     local/   share/   var/     

No necesita saber la primera letra, la segunda table mostrará todo.

terdon
fuente
<kbd> Tab </kbd> se aplica también a la línea de comandos de Windows.
Hind-D
Y bash / zsh al menos en linux
linuxdev2013
5

Algunas palabras más sobre Tab

Tabes genial completar un comando escrito parcial (o una opción) entre los disponibles, tal como Terdon subraya en otra respuesta .

Para completar un comando es suficiente presionarTab una vez. Para tener la lista completa, presioneTab nuevamente.
Además, es posible que desee personalizar el comportamiento deTab . Pruebe, por ejemplo, esas 2 líneas:

bind "TAB:menu-complete"
bind "set show-all-if-ambiguous on"

La primera Tabmuestra todas las posibilidades y completa automáticamente el comando con la primera disponible, desde la segunda vez que presiona Tab comenzará a alternar entre ellas.

Notas:

Puede escribir sus propios guiones de finalización de bash , con opciones de reglas ...
Hay más que algunas sugerencias en el artículo Una introducción a la finalización de bash : la primera parte es para las bases y la segunda para escribir su propio guión.

Puede encontrar interesantes bind completey las referencias aquí abajo.

2da Respuesta: Caminos absolutos y atajos

No siempre es obligatorio escribir la ruta absoluta (completa) en cada comando, incluso si es una buena práctica cuando escribe un script y desea evitar el riesgo de explotar como troyanos .

Hay algunos atajo para ir más rápido como, por ejemplo, Tab, , , y una todas las variables definidas en el shell actual. Alt+..~

A continuación, algunos ejemplos ( .significa aquí y ~significa casa ):

Copiar un archivo al directorio actual es suficiente para escribir . Copiar de su directorio un archivo al directorio actual que puede escribir . Copiar un archivo del directorio actual al último escribe el último argumento del último comando almacenado en el historial. . Si se presiona nuevamente, sustituirá el que acaba de encontrar con el de la posición anterior en el historial de bash. Con un ejemplo es más simple:cp /my/far/far/away/myfile .
homecp ~/myfile .
cp myfile $OLDPWD
Alt+.

mkdir OldDir
mkdir NewDir
cd # here press `Alt + .` and it will autocomplete with NewDir
   # press `Alt + .` again and you will see "cd OldDir"

Referencias

  • Una introducción a la finalización de bash : parte 1 y parte 2
  • help bind, sí ayuda porque bindes un comando incorporado
  • help completey complete -p | lesstener una lista en un formato acogedor.
  • help pushdy help popdpara empujar y hacer estallar un directorio de la pila.
  • Construcciones programables de terminación
Hastur
fuente
2

Y eche un vistazo a Midnight Commander: un administrador de archivos en modo texto que es realmente genial. Puede navegar en dos paneles, una vez que un archivo ubicado en un simple F5 lo copia. F6 lo mueve ... Uso muchas terminales, si no la mayoría de las veces, pero no podría vivir sin mc(el nombre normal del paquete).

jcoppens
fuente