La creazione di un file di testo in vi cambierà il mio computer?


9

So che Linux è un sistema operativo basato su file di testo. Quello che vorrei fare è creare un file usando vitutti i vari comandi che ho imparato. In questo modo ho potuto trovare ogni singolo comando molto facilmente usando /in vi. Ma voglio farlo solo se non cambia il modo in cui il mio computer funziona. Sarebbe una buona idea?


12
Sì, avrà un file di testo più da qualche parte. ;-) (scherzando) Davvero, un file è un file. È come chiedere se l'aggiunta di una foto a una cartella o la creazione di un nuovo documento Word cambierà il tuo computer. Si lo farà; hai un'altra foto / documento lì. Comunque sia, le risposte che hai ottenuto sono per lo più corrette.
Rmano,

Perché pensi che lo farebbe?
Braiam,

2
Non sono sicuro di cosa intendi per "un sistema operativo basato su file di testo", ma Linux non è molto diverso, per esempio, da Windows, quando si tratta di file di testo. Windows ha, ad esempio, file .ini e .bat, se è quello che stai pensando.
hyde,

Inoltre, pensi che ci sia qualcosa di speciale vi(rispetto a, diciamo, gedit) o intendevi semplicemente "un editor di testo"?
Lister,

1
@BJsgoodlife Alcuni file di testo controllano il sistema. Sono messi in posti speciali e generalmente non possono essere modificati senza sudo.
passato il

Risposte:


34

Scrivere un file di testo non "cambierà il modo in cui funziona il tuo computer".

In particolare, per fare qualcosa del genere, dovresti farlo

  • sovrascrivere alcuni file importanti
  • scrivi il tuo file in una posizione protetta speciale come una directory * .d in / etc; non avrai il permesso di farlo
  • contrassegnare il file eseguibile e inserirlo nel percorso

Dal momento che non hai intenzione di fare esplicitamente qualcosa del genere, non c'è nulla di cui preoccuparsi. In particolare, l'altra risposta arriva a lunghezze non necessarie suggerendo che i file di testo devono iniziare con gli hash su ogni riga. Certo che no. La semplice memorizzazione di un file di testo da qualche parte all'interno di una normale directory home non farà nulla.


3
Ho suggerito di mettere in #modo che nulla di involontario venga eseguito per caso. Penso che sia sempre meglio stare dalla parte più sicura.
Hememl

8
Penso che non sia sempre meglio stare dalla parte più sicura. La sicurezza ha un costo e c'è un punto in cui il rischio ridotto non vale più il costo. Ad esempio, quando supera il valore della cosa che stai cercando di tenere al sicuro (in contesti in cui questo argomento ha senso). Oltre alla sicurezza delle informazioni puoi trovare molte risposte che parlano di come la sicurezza sia un compromesso, e l'unico sistema completamente sicuro è anche completamente inutile, quindi sarebbe sciocco insistere sulla perfetta sicurezza in tutti i casi.
David Z,

9
Come questione un po 'separata, penso che il punto più importante da sollevare (cosa che questa risposta fa, e l'altra no) sia che la creazione di un file arbitrario non farà nulla per cambiare il sistema. Puoi influenzare il sistema solo creando un file che sta cercando un altro processo o eseguendo il file che crei, se contiene il codice che influenza il sistema - ma questo rientra nel consiglio generale di non eseguire comandi shell completamente sconosciuti , che è intelligente se lavori con i file o meno.
David Z,

2
fammi un panino. You won't have permission to do this. sudo, fammi un panino. Aye, aye, sir!
Lie Ryan,

2
@heemayl perché non creare semplicemente la prima riga nel file exit?
Casuale 832,

15

Puoi salvare tutti i comandi che hai imparato in un file ma alcuni punti importanti da notare:

  • Non rendere eseguibile il file
  • Mai sourceil file
  • Il modo migliore sarebbe quello di mettere un #all'inizio di tutti i comandi per commentare tutti i comandi in modo che non vengano eseguiti accidentalmente. In questo modo puoi effettivamente cercare il comando che ti serve e sarebbe anche privo di rischi. È possibile aggiungere #all'inizio di ogni riga con il comando seguente:

    sed -i 's/^/#/' <file_name>

EDIT: Ho dato il terzo punto come misura di sicurezza estrema, dato che "neon_overload" e "David Z" hanno sottolineato che mettere gli hash in tutte le linee è troppo ampio e quindi non necessario, vorrei essere secondo con loro in questo contesto. Inoltre, come sottolineato da "random832", un'alternativa di gran lunga migliore al mio terzo punto sarebbe quella di avviare il file exit, poiché in seguito non verranno eseguiti comandi.

EDIT-2: "Rinzwind" ha menzionato due punti importanti:

  • Non sovrascrivere un file esistente

  • Memorizza il file nella home directory dell'utente ( /home/$USER/).


4
put a # in the beginning of all the commands to comment out all the commands so they don't get executed accidentallyNon sono del tutto sicuro che si tratti di un suggerimento serio o di uno scherzo. Il mio rivelatore di sarcasmo mi ha fallito oggi.
Lie Ryan,

La parola su cui devi dare importanza è 'accidentalmente' .. l'utente potrebbe accidentalmente mantenere il file in un posto non sicuro come eseguibile .... qui non sto correndo rischi ... spero che tu sia chiaro ora ..
heemayl

4
Non potrebbe semplicemente mettere una "uscita" o qualcosa del genere all'inizio del file, invece di commentare ogni singola riga?
o0 '.

Forse intendeva #! - che imposta l'interprete su null in modo che non venga eseguito.
Giosuè,

1
@BJsgoodlife, no #!- solo exit; in questo modo sei anche protetto sh yourfile, contro il quale uno shebang non valido non ti aiuterà.
Charles Duffy,

7

neon_overload ha una risposta molto buona.

Espanderò un po 'su un certo aspetto della tua domanda - lo farei un commento, ma non ho abbastanza reputazione qui.

Linux, come sistema operativo, NON è basato su file di testo. Detto questo, posso vedere da dove vieni. Per un osservatore esterno, c'è una buona dose di modifica e avvio dei file di "testo", soprattutto rispetto a Windows.

Ciò ha diverse ragioni, alcune delle quali sono:

  • Non esiste un sistema di registro in Linux, come in Windows. Pertanto, è comune per le applicazioni archiviare le proprie impostazioni in file di testo e verrebbe richiesto di modificarle, anziché di modificare il registro come in Windows.
  • Linux è molto usato come sistema server e molti di quelli che lo usano sui desktop funzionano con i sistemi server. A differenza di Windows Server, i server Linux di solito funzionano senza un'interfaccia grafica. Pertanto, i prodotti che dovrebbero essere eseguiti su server Linux e, in effetti, i loro utenti e amministratori, dovrebbero funzionare senza un'interfaccia grafica. I prodotti (e le caratteristiche del sistema, vale la pena dire) che dovrebbero essere eseguiti solo su Windows sono generalmente più incentrati sulla GUI (come, diciamo MS SQL)
  • Il sistema di scripting Linux è in qualche modo più comune e più trasparente di Windows. Vedresti degli script su Windows, ma si chiamerebbero qualcosa.vbs o another.bat. Non ti renderai necessariamente conto che sono file di testo - ma, considerando ciò che è nel mio secondo punto, è molto più comune in Linux andare a curiosare tra i file .sh.
  • Infine, molti utenti di Linux sono abituati a lavorare senza interfaccia grafica e, per molte cose, preferiranno modificare i file direttamente come farebbero senza la GUI, piuttosto che armeggiare con strumenti grafici. So che quando voglio fare qualcosa di più profondo nel sistema, ho appena avviato il terminale, e così anche molti dei miei colleghi.

"Non esiste un sistema di registro in Linux", ma esiste dconf ( en.wikipedia.org/wiki/Dconf ). Tuttavia, non tutti i sistemi che eseguono il kernel Linux lo avranno, e non tutte le cose che un sistema Windows configurerebbe nel registro verranno configurate lì.
Daniel Landau,

1

La risposta breve è, no, non cambierai il tuo computer creando un file di testo in vi. Tuttavia, se non stai attento, la creazione di quel primo file di testo potrebbe cambiare la tua vita . Imparare in modo Unix può essere una pratica profondamente gratificante.


0

viè un editor di testo , quindi se tutto ciò che desideri è solo archiviare alcuni frammenti di testo in un file di testo e cercarlo, puoi farlo direttamente dal terminale con i comandi integrati.

  1. Scrivi una nota in un file di testo (creerà il file se non esistesse):

    nota echo con dati importanti >> info.txt

IMPORTANTE: fai attenzione alle virgolette singole e doppie e aggiungi prefisso con le barre se vuoi che siano incluse.

  1. Cerca un file di testo (ad es. important):

    grep --color -i importante info.txt

Per evitare la digitazione --color -iche dovrebbe essere alias nel tuo ~/.bashrc.

Puoi anche aggiungere testo multilinea a file di testo esistenti o inesistenti:

cat >> info2.txt

quindi digitare o incollare il testo e, al termine, premere CTR+Z

Per quanto riguarda la modifica del sistema, no, non cambierà il modo in cui il sistema funziona finché crei file nella tua cartella home e non li esegui (puoi eseguire un file anche se non è eseguibile, ad es. Con bash myFile) . Assicurati inoltre di utilizzare i privilegi di root solo quando ne hai bisogno.

Infine, la tua interpretazione del sistema basato su file ti ha fuorviato in qualche modo: la maggior parte del sistema operativo ha file che memorizzano impostazioni importanti che influenzano profondamente il modo in cui funziona il sistema, ma si trovano in posizioni predefinite e in genere sono protetti dalle modifiche da parte degli utenti regolari.

È possibile però spararsi facilmente nel piede, ad esempio, se come utente normale hai una cartella locale "eseguibile" che hai aggiunto PATHe se in quella cartella hai file eseguibili che hanno gli stessi nomi di quelli creati -in utilità comuni o parole chiave bash, come test, echo, cat, for, cut, etc.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.