Linux sia case sensitive che mai insensitive e sempre inconsapevoli?


8

Sto usando Ubuntu 10 e sto rapidamente scoprendo che fa distinzione tra maiuscole e minuscole quando è scomodo (come quando si completano automaticamente i percorsi dei file con la scheda nel terminale) ma anche il caso INsensitive quando si usano i comandi MV e CP (anche scomodo quando si tenta di duplicare un nome file con un caso diverso).

In sostanza, ho bisogno di questo comando per funzionare ma non lo fa.

cp ./filename.txt ./FileName.txt

Finisco con filename.txt:

inserisci qui la descrizione dell'immagine

Come posso ottenere lo stesso file con un caso diverso ma lo stesso nome nella stessa directory?

EDIT: il commento di Maerics qui sotto mi ha aiutato a ricordare che in realtà sto sviluppando su un'unità condivisa di Windows che esegue NTFS, che è case INsensitive. Questo è il motivo per cui anche se CP e MV non generano un errore, il file non viene copiato (o più probabilmente viene copiato IS, ma Windows sostituisce quello già esistente).


1
È strano: ho testato questo comando senza sorpresa ... Non ho problemi con casi diversi nella stessa directory.
Denys Séguret,

5
Si noti che questo comportamento può dipendere dal tipo di filesystem su cui esistono questi file. Ad esempio, FAT32 potrebbe non differenziare questi nomi di file.
Maerics

WOW. Questa era la risposta Maerics. I file sono memorizzati su un'unità montata che esegue NTFS. Ho completamente dimenticato poiché sto sviluppando multipiattaforma che sto usando Windows per archiviare i file.
anon58192932

1
@advocate: NTFS fa distinzione tra maiuscole e minuscole, quindi dovresti essere in grado di montarlo nel modo che preferisci. Tuttavia, la domanda è se questo è quello che vuoi :)
0xC0000022L

I test mostrano che Windows 7 non sembra fare distinzione tra maiuscole e minuscole.
anon58192932

Risposte:


4

NTFS 1 e VFAT non fanno distinzione tra maiuscole e minuscole, ma preservano solo le maiuscole. Ciò significa che se si crea un file di nome FileName.txt, il file di sistema conserva il nome maiuscole e minuscole, ma è possibile accedere al file con qualsiasi combinazione di caso le stesse lettere, come FILENAME.TXT, filename.txto fileNAME.txt. Questo spiega che non puoi avere due file con lo stesso ortografia con solo una variazione di maiuscole / minuscole nella stessa directory.

Il file system esportato dalle PMI deve implementare questo comportamento per non confondere i client Windows.

ZFS può essere configurato per comportarsi in questo modo con la casesensitivity=mixedproprietà.

1 Tecnicamente, NTFS fa distinzione tra maiuscole e minuscole, ma i sistemi di file di montaggio di questo tipo sono quasi sempre configurati per nascondere questa caratteristica sottostante e preservare solo il caso. Windows può tuttavia abilitare la distinzione tra maiuscole e minuscole modificando questa chiave di registro HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\kernel\dword:ObCaseInsensitivee Linux può montare questi file system con comportamenti diversi a seconda delle opzioni ignore_casee windows_namesmount.


2
NTFS fa distinzione tra maiuscole e minuscole. Tuttavia, Win32 non distingue tra maiuscole e minuscole, quindi per motivi pratici la maggior parte delle persone presume che NTFS non lo sia.
Cody Grey,

@CodyGray Sì, hai ragione, grazie per aver indicato questa funzione. Il file system NTFS sottostante consente nomi file diversi solo in base al caso.
jlliagre,

11

È possibile abilitare il completamento del nome file senza distinzione tra maiuscole e minuscole in bash aggiungendo la seguente riga a $HOME/.inputrc:

set completion-ignore-case On

Per quanto riguarda i nomi dei file: dipende dal file system. Sui file system Linux, non dovrebbero esserci problemi. Su altri file system, il comportamento può essere controllato con le opzioni al comando mount. Consulta la pagina del manuale mount(8)per ulteriori informazioni sulle opzioni disponibili da montare.


Hai ragione. Il file system sottostante non era un file system Linux, quindi mentre CP e MV funzionano, Windows sceglie di mantenere il caso del file già esistente (quando si esegue l'override a causa del caso INsensibilità) che lo fa apparire nel terminale Unix come se il comando non funzionasse affatto . Inoltre, grazie per il completamento ignora il caso, questo ti aiuterà molto!
anon58192932

La distinzione tra maiuscole e minuscole è attiva? ;)
Arj,

Purtroppo questo non ti aiuterà in una sceneggiatura.
Sridhar Sarnobat,

2

È una proprietà del filesystem o qualcos'altro?

pa-ubuntu-11388$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 10.04.3 LTS
Release:        10.04
Codename:       lucid
pa-ubuntu-11388$ ls -l
pa-ubuntu-11388$ touch filename.txt
pa-ubuntu-11388$ ls -l
-rw-r--r-- 1 dshawley dev 0 May 31 15:17 filename.txt
pa-ubuntu-11388$ cp ./filename.txt ./FileName.txt
pa-ubuntu-11388$ ls -l
-rw-r--r-- 1 dshawley dev 0 May 31 15:17 FileName.txt
-rw-r--r-- 1 dshawley dev 0 May 31 15:17 filename.txt

Funziona bene per me.


I maerici sopra mi hanno aiutato a risolvere il problema. Sto sviluppando in Ubuntu una porta Windows -> linux ma i file sono memorizzati sul computer Windows e ho dimenticato di aver montato l'unità. L'NTFS sottostante impediva a entrambi i file di esistere contemporaneamente.
anon58192932

1

Ubuntu non è parzialmente sensibile al maiuscolo / minuscolo. Fa sempre distinzione tra maiuscole e minuscole. filename.txte Filename.txtsono due file diversi e possono essere inseriti nella stessa directory. Quindi questo comando:

cp ./filename.txt ./FileName.txt

funzionerà senza problemi nella stessa directory.


Non lo fa però. Ho cercato di capirlo per l'ultima ora.
anon58192932

2
potrebbe essere, non hai filename.txtse stesso nella tua directory attuale?
PP

È sicuramente lì.
anon58192932

I maerici sopra mi hanno aiutato a risolvere il problema. Sto sviluppando in Ubuntu una porta Windows -> linux ma i file sono memorizzati sul computer Windows e ho dimenticato di aver montato l'unità. L'NTFS sottostante impediva a entrambi i file di esistere contemporaneamente.
anon58192932

2
Ho visto il commento di Maerics. grazie
PP
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.