Domanda bandit1, nuovo su linux e cerco di capire

Stato
Discussione chiusa ad ulteriori risposte.
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
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.
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.

puoi fare sudo cat file.txt, oppure puoi fare sudo cat < file.txt ma quest'ultimo caso non funzionerà se non hai i privilegi necessari per leggere il file.
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 shell sudo sh -c "cat < file.txt" o trovi un'alternativa.

nella mia shell faccio sudo su e ho i privilegi di root poi faccio ssh e mi collego a bandit,
Non hai bisogno di essere superuser. È meglio fare il più possibile da utente normale.

e il simbolo < mi permette di avere i privilegi di root sul file,
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.
 
Grazie GAS,
scusami se ancora non scrivo le cosa giuste, sarà anche l'età
correggimi se mi sbaglio

nella mia shell faccio sudo su e ho i privilegi di root poi faccio ssh e mi collego a bandit,
li dovrei essere user normale, quindi facendo cat <- vedo il contenuto del file
e il simbolo < mi permette di avere i privilegi di root sul file,
spero di aver capito
Attento, il simbolo < (minore) non apre direttamente il file con privilegi di root, ma fa una procedura in più rispetto a quando usi solo cat, come detto prima, il file viene aperto dalla shell e poi viene letto tramite il STDIN (standard input), per saperne di più ti invito a leggere https://en.wikipedia.org/wiki/Standard_streams
 
  • Mi piace
Reazioni: angelcarl251

angelcarl251

Utente Iron
4 Giugno 2022
5
2
0
5
Buongiorno a tutti,
ho sempre amato il pc, ma solo adesso mi sono messo a studiare ethical con un amico,
vengo dal mondo windows e linux mi è sempre piaciuto, ma per lavoro non potevo passare a linux,

ora vengo al problema, volevo fare sia ethical che imparare linux, e ho iniziato con bandit
e cerco di capire le cose, inutile copiare, non serve,
ho cercato in rete la soluzione, non per usarla di bandit1 -> bandit2 e in rete ho trovato questo
cat <- e anche questo cat ./-

avevo capito anche io che il comando cat serviva, ma non trovavo come,
il file è -, ma il segno < (minore) perchè?
nel secondo caso perchè ./?
grazie a tutti per l'aiuto
 
Buongiorno,

allora, diciamo che l'utilizzo del < nei casi di apertura dei file dipende dai privilegi che l'utente ha, infatti quando si utilizza il minore: la shell aprirà il file, per poi passarlo all'input standard (STDIN) di cat
semplice esempio: puoi fare sudo cat file.txt, oppure puoi fare sudo cat < file.txt ma quest'ultimo caso non funzionerà se non hai i privilegi necessari per leggere il file.
Infatti:

apre file
$ cat file.txt hi

apre STDIN
$ cat < file.txt hi

Per quanto riguarda il ./ mi sembra un po' strano... ./ nel comando cat dovrebbe servire a salire di directory per l'apertura del file ma non ne capisco il motivo se stai già nella directory giusta, se invece parlavi del comando ./ serve solo per eseguire i così detti "esecutibili".
Nel caso mi sono espresso male in qualcosa sentiti libero di chiedere :)
 
Grazie GAS,
scusami se ancora non scrivo le cosa giuste, sarà anche l'età
correggimi se mi sbaglio

nella mia shell faccio sudo su e ho i privilegi di root poi faccio ssh e mi collego a bandit,
li dovrei essere user normale, quindi facendo cat <- vedo il contenuto del file
e il simbolo < mi permette di avere i privilegi di root sul file,
spero di aver capito
 
Stato
Discussione chiusa ad ulteriori risposte.