Cancellato / usr / local / bin per errore

3

Sono un po 'newbie di Unix. Recentemente ho iniziato un tutorial di bash in cui ho creato uno script ciao mondo bash come questo:

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

quindi, l'ho spostato in / usr / local / bin usando questo comando:

sudo mv hello.sh /usr/local/bin

ora / bin sotto / usr / local non è più una directory, ma un file, e quando si usa ls -l su di esso, ottengo questo output:

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!'

Capisco che / usr / local / bin sia parte del $ PATH, e quindi credo che ci siano stati molti comandi lì dentro. Questo mi influenzerà molto? come posso ripristinare i comandi che precedentemente vivevano in / usr / local / bin quando era una directory. Non posso credere di aver sbagliato così tanto!

    
posta Omar N 12.04.2017 - 03:06
fonte

1 risposta

5

canonical risposta, naturalmente, è quello di ripristinare / usr / local / bin dal tuo ultimo backup ...

La buona notizia è che se il comando mv ha avuto successo e creato un file chiamato bin , allora /usr/local/bin non esisteva già come directory sul sistema e non hai perso nulla. Altrimenti, hello.sh sarebbe stato spostato nella directory /usr/local/bin (che era presumibilmente l'intenzione del tutorial), non l'avrebbe sostituito.

Questo non è inaspettato, poiché /usr/local/bin non esiste in genere sui Mac finché tu o un'app di terze parti non lo crea. Ma ora hai imparato l'incredibile potenza della linea di comando, sai perché è importante mantenere buoni backup;)

Se avevi manglinato /usr/bin avresti avuto bisogno di reinstallare il sistema:

La buona notizia è la protezione dell'integrità del sistema (SIP) sta rendendo più difficile manipolare i file di sistema con sudo

PS: un modo semplice per evitare che il problema si verifichi è sempre aggiungere una percentuale finale di/ se si spostano file in un'altra directory (o si basano su completamento di tabulazione che fa la stessa cosa): sudo mv hello.sh /usr/local/bin/ . In questo modo riceverai un messaggio di errore se la directory di destinazione non esiste.

    
risposta data 12.04.2017 - 03:21
fonte

Leggi altre domande sui tag