¿Linux tanto entre mayúsculas y minúsculas e insensibles a mayúsculas y minúsculas?

8

Estoy usando Ubuntu 10 y descubro rápidamente que distingue entre mayúsculas y minúsculas cuando es inconveniente (por ejemplo, cuando se completan automáticamente las rutas de archivos con la pestaña en la terminal), pero también se distingue entre mayúsculas y minúsculas cuando se usan los comandos MV y CP (también inconveniente cuando intente duplicar un nombre de archivo con un caso diferente).

En esencia, necesito este comando para funcionar, pero no lo hace.

cp ./filename.txt ./FileName.txt

Acabo de terminar con filename.txt:

ingrese la descripción de la imagen aquí

¿Cómo puedo obtener el mismo archivo con un caso diferente pero el mismo nombre en el mismo directorio?

EDITAR: el comentario de Maerics a continuación me ayudó a recordar que en realidad estoy desarrollando en una unidad compartida de Windows que ejecuta NTFS, que es insensible a mayúsculas y minúsculas. Es por eso que a pesar de que CP y MV no generan un error, el archivo no se copia (o es más probable que se copie, pero Windows reemplaza el ya existente).

anon58192932
fuente
1
Eso es extraño: probé este comando sin sorpresa ... No tengo problemas con diferentes casos en el mismo directorio.
Denys Séguret
55
Tenga en cuenta que este comportamiento puede depender del tipo de sistema de archivos en el que existen estos archivos. Por ejemplo, FAT32 puede no diferenciar estos nombres de archivo.
Maerics
GUAU. Esta fue la respuesta Maerics. Los archivos se almacenan en una unidad montada que ejecuta NTFS. Olvidé por completo, ya que estoy desarrollando multiplataforma, que estoy usando Windows para almacenar los archivos.
anon58192932
1
@advocate: NTFS distingue entre mayúsculas y minúsculas, por lo que debería poder montarlo de la manera que desee. Sin embargo, la pregunta es si esto es lo que quieres :)
0xC0000022L
Las pruebas muestran que Windows 7 no parece ser sensible a mayúsculas y minúsculas.
anon58192932

Respuestas:

4

NTFS 1 y VFAT no distinguen entre mayúsculas y minúsculas, solo conservan mayúsculas y minúsculas. Esto significa que si se crea un archivo con el nombre FileName.txt, el sistema de archivos preservarán el nombre en mayúsculas y minúsculas, pero se puede acceder al archivo con cualquier caso combinación de las mismas letras, como FILENAME.TXT, filename.txto fileNAME.txt. Esto explica que no puede tener dos archivos con la misma ortografía con solo una variación de mayúsculas / minúsculas en el mismo directorio.

El sistema de archivos exportados SMB tiene que implementar este comportamiento para no confundir a los clientes de Windows.

ZFS se puede configurar para comportarse de esa manera con la casesensitivity=mixedpropiedad.

1 Técnicamente, NTFS distingue entre mayúsculas y minúsculas, pero los sistemas de archivos de montaje de sistemas operativos de este tipo casi siempre están configurados para ocultar esta característica subyacente y solo preservar la mayúscula. Sin embargo Windows puede permitir a mayúsculas y minúsculas con la modificación de esta clave de registro HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\kernel\dword:ObCaseInsensitivey Linux puede montar estos sistemas de archivos con diferentes comportamientos dependiendo de la ignore_casey windows_nameslas opciones de montaje.

jlliagre
fuente
2
NTFS es absolutamente sensible a mayúsculas y minúsculas. Sin embargo, Win32 no distingue entre mayúsculas y minúsculas, por lo que, por razones prácticas, la mayoría de las personas supone que NTFS tampoco.
Cody Gray
@CodyGray Sí, tienes razón, gracias por señalar esta función. El sistema de archivos NTFS subyacente permite diferentes nombres de archivo que solo difieren según el caso.
jlliagre
11

Puede habilitar la finalización del nombre de archivo sin distinción entre mayúsculas y minúsculas en bash agregando la siguiente línea a $HOME/.inputrc:

set completion-ignore-case On

En cuanto a los nombres de archivo: Esto depende del sistema de archivos. En los sistemas de archivos de Linux, no debería haber ningún problema. En otros sistemas de archivos, el comportamiento se puede controlar con opciones para el comando de montaje. Consulte la página del manual mount(8)para obtener más información sobre las opciones disponibles para montar.

nosid
fuente
Estás en lo correcto. El sistema de archivos subyacente no era un sistema de archivos Linux, por lo que mientras CP y MV funcionan, Windows elige mantener el archivo ya existente (cuando se anula debido a la INsensibilidad del caso), lo que hace que aparezca en la terminal de Unix como si el comando no funcionara en absoluto . Además, gracias por completar el caso de ignorar, ¡eso ayudará mucho!
anon58192932
¿Es 'On' sensible a mayúsculas y minúsculas? ;)
Arj
Lamentablemente, esto no te ayudará en un guión.
Sridhar Sarnobat
2

¿Es esta una propiedad del sistema de archivos o algo más?

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

Funciona bien para mí.

D.Shawley
fuente
Maerics arriba me ayudó a resolver el problema. Estoy desarrollando en Ubuntu un puerto windows -> linux pero los archivos están almacenados en la computadora con Windows y olvidé que tenía la unidad montada. El NTFS subyacente impedía que ambos archivos existieran al mismo tiempo.
anon58192932
1

Ubuntu no distingue entre mayúsculas y minúsculas. Siempre es sensible a mayúsculas y minúsculas. filename.txty Filename.txtson dos archivos diferentes y se pueden colocar en el mismo directorio. Entonces este comando:

cp ./filename.txt ./FileName.txt

funcionará sin ningún problema en el mismo directorio.

PÁGINAS
fuente
Aunque no lo hace. He estado tratando de resolverlo durante la última hora.
anon58192932
2
puede ser, no tienes filename.txten tu directorio actual?
PP
Definitivamente está ahí.
anon58192932
Maerics arriba me ayudó a resolver el problema. Estoy desarrollando en Ubuntu un puerto windows -> linux pero los archivos están almacenados en la computadora con Windows y olvidé que tenía la unidad montada. El NTFS subyacente impedía que ambos archivos existieran al mismo tiempo.
anon58192932
2
Vi comentarios de Maerics. thx
PP