Vuoi leggere il contenuto di un file chiamato - (meno), provi a scrivere cat - e ti accorgi che non funziona. Perché non funziona? Leggiamo il manuale di cat con man cat
Ah, non funziona perché cat - significa concatena lo standard input e stampa il risultato sullo standard output. Tu invece vuoi stampare il contenuto del file - che si trova nella home directory, ma allora ti basta specificare il path completo: cat ~/- (la directory ~ in linux è la home directory) oppure cat /home/bandit1/- oppure, visto che sei già nella home directory, puoi usare cat ./- per indicare il file - che si trova nella directory . (la current directory in linux è indicata da . e .. è la sua parent). L'altra soluzione che hai trovato (la più brutta) usa < per fare file redirection, però vabbé... inutile discutere mille soluzioni diverse, l'importante è capire cosa sta succedendo e saper risolvere.
Codice:
NAME
cat - concatenate files and print on the standard output
SYNOPSIS
cat [OPTION]... [FILE]...
DESCRIPTION
Concatenate FILE(s) to standard output.
With no FILE, or when FILE is -, read standard input.
Questo succede perché i privilegi di superuser li stai dando a cat, quando in realtà vorresti darli a <, perché è < che apre il file. Quindi cat non ha bisogno di sudo, ma < ha bisogno di sudo. Il problema è che non puoi usare sudo su un operatore, devi per forza usare un programma/comando, quindi o dai i privilegi a tutta la riga aprendo una nuova shellpuoi faresudo cat file.txt
, oppure puoi faresudo cat < file.txt
ma quest'ultimo caso non funzionerà se non hai i privilegi necessari per leggere il file.
sudo sh -c "cat < file.txt"
o trovi un'alternativa.Non hai bisogno di essere superuser. È meglio fare il più possibile da utente normale.nella mia shell faccio sudo su e ho i privilegi di root poi faccio ssh e mi collego a bandit,
No, il simbolo < ridirige il contenuto del file alla sua destra verso il comando alla sua sinistra. I privilegi di root non c'entrano assolutamente niente.e il simbolo < mi permette di avere i privilegi di root sul file,