Directorio borrado / usr / local / bin por error

3

Soy un poco novato en Unix. Hace poco comencé un tutorial de bash donde creé un script de hola world bash como este:

#!/bin/bash
echo 'Hello World!'

luego, lo moví a / usr / local / bin usando este comando:

sudo mv hello.sh /usr/local/bin

ahora / bin bajo / usr / local ya no es un directorio, sino un archivo, y al usar ls -l en él, obtengo esta salida:

MacBook-Pro-de-Omar:local omarnavarro$ ls
bin
MacBook-Pro-de-Omar:local omarnavarro$ ls -l
total 8
-rwxr-xr-x  1 omarnavarro  staff  32 Apr 11 19:27 bin
MacBook-Pro-de-Omar:local omarnavarro$ cat bin
#!/bin/bash
echo 'Hello world!'

Entiendo que / usr / local / bin es parte de $ PATH, por lo que creo que debe haber muchos comandos allí. ¿Esto me afectará mucho? ¿Cómo puedo restaurar los comandos que vivían anteriormente en / usr / local / bin cuando era un directorio? ¡No puedo creer que lo haya jodido tan mal!

    
pregunta Omar N 12.04.2017 - 03:06

1 respuesta

5

El respuesta canónica , por supuesto, es restaurar / usr / local / bin desde su última copia de seguridad ...

La buena noticia es que si ese comando mv tuvo éxito y creó un archivo llamado bin , entonces /usr/local/bin ya no existía como un directorio en su sistema, y no perdió nada. De lo contrario, hello.sh se habría movido a el directorio /usr/local/bin (que probablemente era la intención del tutorial), no lo habría reemplazado.

Esto no es inesperado, ya que /usr/local/bin generalmente no existe en Mac hasta que usted o una aplicación de terceros lo cree. Pero ahora que ha aprendido el increíble poder de la línea de comando, sabe por qué es importante mantener buenas copias de seguridad;)

Si hubiera destruido /usr/bin , tendría que volver a instalar el sistema:

La buena noticia es que la protección de integridad del sistema (SIP) hace que sea más difícil modificar los archivos del sistema con sudo

PS: una manera fácil de evitar que ocurra el problema es agregar siempre un / final si se mueven archivos a otro directorio (o se basan en la finalización de la pestaña que hace lo mismo): sudo mv hello.sh /usr/local/bin/ . De esta manera obtendrá un mensaje de error si el directorio de destino no existe.

    
respondido por el calum_b 12.04.2017 - 03:21

Lea otras preguntas en las etiquetas