Navegar a través de la unidad USB con "cd / myOtherFolder" provoca el error "no existe ese directorio"

11

Al navegar por el sistema de archivos de mi unidad USB en el terminal, suceden algunas cosas extrañas que no solían suceder en mi Raspberry Pi B +. No estoy muy seguro de cómo articular esto, así que solo mostraré lo que es

  1. Abro la línea de comando y navego a mi unidad USB con cd /media/pi/MYUSB/

  2. Utilizo cdpara ingresar a una carpeta de la unidad USB concd /myFolder/myOtherFolder

  3. Navego hacia atrás myFolderconcd ..

  4. Intento navegar de nuevo a myOtherFoldercon cd /myOtherFolder. Sin embargo, esto genera el error bashbash: cd: /myOtherFolder: no such file or directory

No tengo idea de qué o por qué sucede esto, pero solía hacerlo sin el mensaje de error. A veces tengo cortes de energía que hacen que Raspberry Pi se apague con la unidad USB, por lo que tengo "unidades USB fantasma" como las descritas en las unidades USB Ghost que quedan atrás cuando se apaga y enciende la alimentación .

Henry Westfall
fuente

Respuestas:

32

¡Pones un líder / a tus nombres de ruta! Ese es el directorio raíz, lo que significa que lo que escribe a continuación es una ruta absoluta. Su / myFolder / myOtherFolder no está en su USB si está montado dentro de / media / pi / MYUSB / de todos modos.

Pero puedes usarlo cd myOtherFolderen el caso que estés preguntando. Sugiero leer algunos tutoriales básicos sobre el manejo de archivos de Linux (o Unix), sistemas de archivos y demás.

Nyos
fuente
10

Para entrar en un poco más de detalle:

Ya sea que provenga de Windows o Mac OS X, estará acostumbrado a que las unidades externas sean lugares independientes de su disco duro (más o menos).

Parte de la tradición de Unix es "evitar casos especiales siempre que sea posible". Por ejemplo, en Unix (y GNU / Linux), un teclado se representa como un archivo que puede abrirse y leerse como un archivo de texto. También lo es un puerto serie (que también se puede escribir). En una Raspberry Pi, incluso los pines GPIO se pueden controlar de esta manera. Hay un archivo llamado /dev/zeroque produce una secuencia de 0 bytes cuando lo lees. Etc.

Esta fue una idea brillante, ya que permitió que los programas se construyeran sin tener todo tipo de casos especiales.

De todos modos, en una tradición similar, hay una estructura de directorio para todo el sistema, comenzando en /(el directorio raíz). Sin casos especiales, sin "letras de unidad". Justo /.

Las unidades se pueden "adjuntar" en algún lugar de esta estructura utilizando el mountcomando (una Raspberry Pi está configurada para hacerlo automáticamente, pero también puede hacerlo manualmente).

La ruta de cada archivo desciende de /alguna manera (por ejemplo /home/pi/test.txt). Debido a esto, /se supone que una ruta que comienza con una ruta "absoluta", que comienza desde el directorio raíz de todo el sistema. Sin el /al principio, se considera una ruta "relativa", es decir, comienza desde el directorio actual.

Otros dos trucos: probablemente sepa que una ruta que comienza ..hace referencia al directorio principal. Una ruta que comienza con ~comienza desde su directorio de inicio, por ejemplo, ~/test.txtfunciona igual sin importar cuál sea su directorio actual.

Artelio
fuente
3
Para completar, una ruta que comienza con se .refiere al directorio actual. Esto es importante cuando se desea ejecutar un comando almacenado en el directorio actual: simplemente escribir foohará $PATHque se busque, y foose ejecutará el primer directorio que contenga un archivo llamado . Pero escribir le ./fooindica al shell que busque explícitamente en el directorio actual en lugar de buscar $PATH.
Monty Harder