Come gestire il passaggio di nomi di file con spazi in Bash

Linux ha una shell di default Bash (alias Bourne di nuovo shell) per eseguire comandi per il sistema. La maggior parte dei programmatori preferisce bash rispetto a cmd a causa della flessibilità e del potente interprete della riga di comando fornito da bash. Tuttavia, la maggior parte degli utenti avrà ancora problemi durante il tentativo di gestire il passaggio di nomi di file con spazi in bash. Questo perché gli spazi non sono considerati uguali in bash come nei nomi dei file.

File con spazi nel nome

Perché il nome file con spazi non è riconosciuto da Bash?

In Bash, se digiti più parole senza carattere di escape (\) o virgolette, considererà tutte le parole come argomenti. Questo vale per tutte le operazioni, sia che si stia cambiando directory con " cd " o che si stia tentando di accedere ai file con i comandi " cat ". Qualunque cosa tu scriva dopo averli usati sarà considerata come un argomento. Per esempio:

 nome file cat.txt 

Esecuzione del comando senza utilizzare il carattere di escape o le virgolette

Nota : il tuo nome file può essere tutt'altro che per questo articolo, useremo " file name.txt " come esempio.

Qui il comando ' cat ' considererà file e nome come due argomenti anziché come un singolo argomento. Tuttavia, se usi il carattere di escape o le virgolette, la shell bash lo considererà come un singolo argomento, che sarà il " file name.txt ".

Nome file con spazi in Bash

Esistono pochi metodi che possono essere utilizzati per gli spazi nel nome. La migliore pratica è quella di evitare spazi per i nomi dei file in futuro. Un metodo semplice sarà quello di rinominare il file a cui si sta tentando di accedere e rimuovere gli spazi. Alcuni altri metodi stanno usando virgolette singole o doppie sul nome del file con spazi o usando il simbolo escape (\) proprio prima dello spazio. Forniremo metodi con esempi applicati per mostrarti come funziona.

Metodo 1: Utilizzo di virgolette singole e doppie

  1. Tenere premuto Ctrl + Alt e premere T per aprire Terminale .
  2. Ora cambia la directory in cui si trova il file.

    (puoi anche trascinare e rilasciare il file nel terminale dopo il comando ' cat ', che inserirà automaticamente le virgolette nel percorso / directory del file)

     cd Desktop 

    Cambiare directory

    Nota : il desktop può essere modificato nella posizione a cui si sta tentando di accedere.

  3. Digitare il comando seguente per leggere un file di testo con spazi nel nome:
     cat 'nome file.txt' 

    o

     cat "file name.txt" 

    Utilizzo delle virgolette per evitare spazi nell'errore del nome
  4. Le virgolette singole e doppie avranno lo stesso risultato. In alcuni casi, devi provare entrambi e vedere quale funziona.

Metodo 2: Utilizzo di Backlash Escape Character

  1. Tenere premuto Ctrl + Alt e premere T per aprire Terminale .
  2. Modificare la directory in cui si trova il file utilizzando il seguente comando.
     cd Desktop 

    Nota : metti il ​​nome della tua posizione al posto del desktop.

  3. Ora digita il comando e usa il carattere escape ovunque ci sia spazio nel nome:
     cat file \ name.txt 

    Utilizzo del carattere di escape per evitare errori di spazio

Bonus: utilizzo di preventivi e fuga

A volte, quando si utilizza la directory nel comando, possono esserci conseguenze sull'uso delle citazioni nel percorso generale. Questo perché alcuni comandi come ' mv ' o ' cp ' considereranno il percorso come sorgente del file se la citazione viene usata nel suo insieme. Devi fornire preventivi sia per l' origine che per la destinazione in modo che i comandi come ' cp ' possano funzionare correttamente. Puoi anche controllare l'esempio di seguito che ti mostrerà che l'uso del carattere di escape per il percorso è molto più complesso e gli utenti possono sbagliare.

La differenza tra virgolette e carattere di escape

Articoli Interessanti