3 votos

¿Cuáles son los directorios que veo cuando pulso tabulador en `cd ~` y que no se ven en `ls ~`?

Cuando pulso tabulador en cd ~ Veo una pérdida de directorios que empiezan por _ así que algo como _dirName que no se ven cuando enumero ls ~ . También veo myUsername , root , daemon , nobody , Guest directorios. ¿Qué son todos estos y cuál es la diferencia cuando se utiliza cd ~/ que parecen listar los archivos listados por ls ~ .

Además, ¿hay alguna forma de ls para listar esos directorios?

5voto

HTNW Puntos 101

~ solo se expande a tu propio directorio personal. Hay también a sintaxis ~username que se expande al directorio personal de un nombre de usuario determinado. Así, si myUsername es mi nombre de usuario, entonces ~myUsername es lo mismo que ~ y se amplía a /Users/myUsername . Mientras tanto, ~root se amplía a root que (en mi sistema) es /var/root . La mayoría de las otras posibilidades, como ~nobody parecen ir a /var/empty .

La gran lista de nombres que ves es cuando pulsas Tab después de cd ~ es simplemente una lista de nombres de usuario en su sistema. Puede completar la línea con cualquiera de los nombres de usuario y el resultado será cd intentará llevarte al directorio personal de ese usuario. Dado que los directorios ~root , ~nobody etc. no están en su ~ no es de extrañar que ls ~ no los muestra.

Tenga en cuenta que es típico que haya muchos más "usuarios" en un sistema que usuarios humanos reales, ya que, por razones de seguridad, a menudo es beneficioso ejecutar programas o servicios como su propio usuario. Dado que los programas no pueden acceder a cosas para las que sus usuarios no tienen permisos, esto evita que los programas toquen cosas que no deberían.

3voto

Douglas Puntos 10417

Esto entra dentro del concepto de expansión de parámetros en Bash y expansión de nombres de archivo en Zsh (esencialmente lo mismo). Básicamente, hay dos condiciones:

  • la tilde como parte inicial de una palabra
  • la tilde como carácter independiente

Si se utiliza como este último, se refiere al HOME variable. Cuando escriba ls ~ seguido de Return sin espacios en blanco, está listando el directorio ~ se expande hacia; típicamente HOGAR.

Cuando escriba un cd ~ seguido de un Tab (suponiendo que no haya espacios en blanco entre ellos), lo trata como parte del nombre del archivo. Zsh está intentando "adivinar" lo que podrías querer; ya no lo trata como un carácter singular. Como no tiene ni idea, te da lo que "piensa" que podrían ser posibilidades.

Para centrarlo en el directorio HOME (suponiendo que eso es lo que quieres) utiliza un comando / . Exampe: cd ~/ entonces Tab . Que delimitará entre ampliar ~ como variable HOME o ~ como parte del nombre del archivo.

Al final, ls ~ no le está "ocultando" directorios (para ver los archivos ocultos utilice ls -a ). Lo que estás viendo son las suposiciones de Zsh a partir de la función incorporada de completado de tabulaciones

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X