Cuando lo hago, en CD ..
lugar de cd ..
eso me da un error al decir:
CD: command not found
¿Por qué el terminal de mayúsculas y minúsculas cuando se trata de comandos de Linux? Quiero decir que deberías poder ejecutar el comando ya sea con caracteres "todo en mayúsculas" o "todos en minúsculas".
Sé que se debe a alguna razón, pero tengo curiosidad.
shell
user-interface
Hussain Tamboli
fuente
fuente
stty iuclc olcuc
mensaje si te apetece tener un terminal que noRespuestas:
En última instancia, fue una elección arbitraria hecha por los creadores de Unix hace más de cuatro décadas. Podrían haber optado por hacer las cosas que no distinguen entre mayúsculas y minúsculas, como hicieron los creadores de MS-DOS una década después, pero eso también tiene sus desventajas.
Está demasiado incrustado en la cultura * ix para cambiar ahora. El problema del sistema de archivos sensible a mayúsculas y minúsculas presentado por eppesuig es solo una parte de él. Los sistemas macOS, que están basados en Unix , suelen tener sistemas de archivos que no distinguen entre mayúsculas y minúsculas (pero conservan mayúsculas y minúsculas), por lo que en dichos sistemas, los comandos externos al shell se tratan de hecho sin distinción entre mayúsculas y minúsculas. Pero, las incorporaciones como
cd
siguen siendo sensibles a mayúsculas y minúsculas.Incluso con un sistema de archivos que no distingue entre mayúsculas y minúsculas, la historia de las cosas conspira contra tus deseos, Hussain. Si escribo
ls
en mi Mac, obtengo una lista de directorios coloreada. Si escribo en suLS
lugar,/bin/ls
todavía se ejecuta, pero la lista no está coloreada porque el alias que agrega la marca distingue entre-C
mayúsculas y minúsculas.Lo mejor es que te acostumbres. Si puedes, aprende a gustar.
fuente
Este no es un problema de "terminal", es una característica del sistema de archivos. ¿Cómo debe buscar el shell sus comandos en el sistema de archivos (siempre sensible a mayúsculas y minúsculas)?
fuente
bash
opción llamadacdspell
: trata de encontrar el nombre de archivo correcto incluso si lo escribiste mal, pero solo funciona para argumentos de comando .cd
,CD
,cD
yCd
cada uno con un comportamiento único.hash -p /bin/hostname HOSTNAME
y ahoraHOSTNAME
es el comando para/bin/hostname
.set completion-ignore-case on
.Los sistemas técnicos que uso y respeto son casi exclusivamente sensibles a mayúsculas y minúsculas: ya sea OS o lenguaje de programación o cualquier otra cosa.
Las excepciones que se me ocurren en este momento son las etiquetas HTML y algunas implementaciones de SQL, y el lenguaje de programación Ada.
Incluso en esos casos, creo que hay fuertes tendencias a escribir etiquetas HTML en minúsculas, y la semántica de consultas SQL en mayúsculas (y los parámetros en mayúscula). (Corrígeme si me equivoco). En cuanto a Ada, el modo Emacs lo corregirá si, por ejemplo, escribe un nombre de procedimiento en minúsculas, aunque eso no importará al compilar. Por lo tanto, incluso cuando hay mayúsculas y minúsculas, parece que la gente está de acuerdo en que es una mala idea.
La razón es que obtienes mucho más poder expresivo con mayúsculas y minúsculas. No sólo cuantitativamente -
CD
es uno, peroCD
,Cd
,cD
, ycd
son cuatro - pero lo más importante, se puede expresar finalidad, énfasis, etc., utilizando mayúsculas y minúsculas con sensatez; Además, al programar, mejorará la legibilidad.Intuitivamente, es evidente que usted no lee
hi
yHI
de la misma manera!Pero, para darle un ejemplo del mundo informático, en el lenguaje de programación Ada (de la década de 1980), la primera línea de un bloque de código de procedimiento podría verse así:
Como puede ver, los nombres de los procedimientos y parámetros están en mayúscula, al igual que los tipos de datos, todo lo demás está en minúsculas. También tenga en cuenta que el nombre del parámetro "todo en mayúsculas" nos dice que es un acrónimo. Ahora, compara esto con
Esto es posible, ya que Ada no distingue entre mayúsculas y minúsculas (o, para ser exactos, el compilador lo cambiará a la manera en mi primer ejemplo, pero por supuesto no cambiará su código). O, ¿qué tal:
Ese es un poco ridículo, lo sé; pero alguien sería lo suficientemente estúpido como para escribirlo de esa manera (bueno, tal vez no). El punto es que un sistema que distingue entre mayúsculas y minúsculas no solo obligará a las personas a ser consistentes, sino que también les ayudará (legibilidad) y lo usará en su beneficio (el ejemplo de acrónimo anterior).
fuente
length
yLength
generalmente es una mala idea :)DEFine PROCedure Hello
por ejemplo. Solo tenía que escribir los bits en mayúscula, pero la palabra completa apareció en las listas de programas. Esto también se aplicabaREMark
, y no era tan molesto ...No es más o menos extraño que el hecho de que tenemos un alfabeto en mayúsculas y minúsculas para comenzar. Si observa
/usr/bin
, notará que (muy) pocos ejecutables explotan las mayúsculas.Un espacio de nombres sensible a mayúsculas y minúsculas no es solo dos veces más grande que uno insensible: la diferencia crece exponencialmente con la longitud de la palabra. Por ejemplo, usando 26 caracteres, hay 26 ^ 3 (17576) diferentes posibilidades en tres letras; usando 52 (2 * 26) caracteres hay 52 ^ 3 = 140608. Un espacio de nombres abierto es algo bueno;)
fuente
El concepto de mayúsculas / minúsculas puede ser (y de hecho) una cuestión específica del entorno local, que, como cualquier otra complicación de diseño, debe llevarse lo más cerca posible del punto de uso en la pila de aplicaciones, no formar parte de núcleo.
Tener un entorno sensible a mayúsculas y minúsculas permite envolverlo en un entorno insensible a mayúsculas y minúsculas, pero no al revés.
fuente
No es el terminal, es el sistema de archivos. O en el caso de
cd
(cd es un shell incorporado) el shell, que distingue entre mayúsculas y minúsculas.Podría haber sido posible (al menos con ASCII), hacer que no distinga entre mayúsculas y minúsculas. Esto es más difícil con el Unicode ahora utilizado (si dos caracteres son iguales, puede depender de local).
Qué hacer al respecto
shopt -s nocaseglob
# esto está en mi~/.bashrc
shopt -s nocasematch
#esto también estaría en~/.bashrc
set completion-ignore-case on
# esto está en mi~/.inputrc
fuente
Como punto de partida, la razón por la que se hizo esta pregunta, y la razón por la que encontrará mucha discusión al buscar en Google el tema, es que la sensibilidad a mayúsculas y minúsculas dificulta que las personas "normales" aprendan y usen un lenguaje de programación o una línea de comando interfaz.
La sensibilidad a mayúsculas y minúsculas tiene su origen en la baja potencia de las computadoras en el pasado. Para que las cosas no fueran sensibles a mayúsculas y minúsculas, se requería una operación de análisis adicional antes de que el comando se enviara al intérprete o al compilador antes de su ejecución, y los primeros diseñadores no estaban preparados para desperdiciar la potencia de la computadora para la conveniencia de mayúsculas y minúsculas.
Creo que hay una serie de afirmaciones incorrectas en los comentarios anteriores. En primer lugar, los psicólogos le dirán que los humanos no discriminan automáticamente entre una palabra escrita en mayúsculas o minúsculas o incluso una combinación de las dos en términos del significado de la palabra. Case se usa en lenguajes expresivos normales para transmitir un significado adicional. Por ejemplo, el uso de una letra mayúscula que comienza una palabra en una oración indica que probablemente sea un nombre propio. Las letras mayúsculas también se utilizan para dar estructura en prosa. Por ejemplo, una letra mayúscula se usa para indicar el comienzo de una oración. Pero "Palabra" y "palabra" son vistas por la mente humana como que significan lo mismo.
Los creadores de DOS y de ADA y Pascal, por nombrar algunos, apreciaron que la distinción entre mayúsculas y minúsculas era una carga adicional para el principiante. Más tarde, los editores de texto en "Entornos de desarrollo integrado" (IDE), reconociendo una palabra de reserva, podrían reformular esa palabra de modo que fuera coherente con el estilo; Además, muéstrela en un color diferente para que la palabra se destaque. Entonces, el argumento de que la distinción entre mayúsculas y minúsculas hace que el código sea más legible es falso. No a las personas "normales". Simplemente agrega una capa innecesaria ya veces confusa a una tarea ya exigente.
Java es un ejemplo extremo de un lenguaje muy pobre desde el punto de vista de la facilidad de uso por parte de un principiante. Aplica una estricta distinción entre mayúsculas y minúsculas, pero, estúpidamente, permitirá que el programador tenga dos funciones, ambas con el mismo nombre, pero que en realidad son funciones diferentes en virtud del hecho de que uno tiene un conjunto diferente de argumentos sobre el otro. De hecho, Java es un aborto de un lenguaje que, cuando las universidades pasaron de enseñar la sintaxis de Pascal a los estudiantes y tomar cursos que no son de informática, la tasa de aprobación bajó del 70% al 40%.
Entonces, en resumen, la distinción entre mayúsculas y minúsculas surgió por dos razones. Uno era la falta de energía de la computadora. La segunda fue que las personas que encuentran su camino en la informática a menudo están en el espectro autista y no se relacionan bien con las necesidades de las personas "normales". Como consecuencia, estas personas no pueden apreciar que la distinción entre mayúsculas y minúsculas es innecesaria y un impedimento para aprender y usar un lenguaje de programación.
fuente
La distinción entre mayúsculas y minúsculas es una idea tonta que surgió porque los escritores de Unix no entendieron que ASCII está diseñado para ser fácilmente sensible a mayúsculas y minúsculas. Uno simplemente ignora los bits iniciales. Ascii es una codificación de 7 bits con A mayúscula al valor de bit decimal 65 1000001 y a al bit decimal 97 1100001. con las letras que siguen alfabéticamente. Esto generó todo tipo de ideas, como todas las claves en pares de valores clave, deben ser numéricas para evitar que las zapatillas sean diferentes a las zapatillas. La base de datos Pick Multi-Value se dio cuenta de esto desde el principio y no distingue entre mayúsculas y minúsculas.
fuente