Mi sono imbattuto nel seguente comando:
sudo chown `id -u` /somedir
e mi chiedo:qual è il significato del `
simbolo. Ho notato ad esempio che mentre il comando sopra funziona bene, quello sotto non lo fa:
sudo chown 'id -u' /somedir
Risposta accettata:
Questo è un backtick . Un backtick non è un segno di virgoletta. Ha un significato molto speciale. Tutto ciò che scrivi tra i backtick viene valutato (eseguito) dalla shell prima del comando principale (come chown
nei tuoi esempi) e l'output di quell'esecuzione viene utilizzato da quel comando, proprio come se dovessi digitare quell'output in quel punto della riga di comando.
Allora, cosa
sudo chown `id -u` /somedir
funziona in modo efficace (a seconda del ID utente ) è:
sudo chown 1000 /somedir
`-- the second argument to "chown" (target directory)
`-- your user ID, which is the output of "id -u" command
`-- "chown" command (change ownership of file/directory)
`-- the "run as root" command; everything after this is run with root privileges
Dai un'occhiata a questa domanda per scoprire perché, in molte situazioni, non è una buona idea usare i backtick.
A proposito, se mai volessi usare letteralmente un backtick, ad es. in una stringa, puoi sfuggire inserendo una barra rovesciata ( ) prima di esso.