이 작업을 수행하면 CD ..
대신 cd ..
다음과 같은 오류가 발생합니다.
CD: command not found
왜?단말기Linux 명령은 대소문자를 구분합니까? 내 말은 "모두 대문자" 또는 "모두 소문자" 문자를 사용하여 명령을 실행할 수 있어야 한다는 것입니다.
무슨 이유인지는 알지만 그냥 궁금해서요.
답변1
궁극적으로 이는 40여년 전 Unix 창시자들이 임의로 선택한 것이었습니다. 10년 후 MS-DOS 제작자가 했던 것처럼 대소문자를 구분하지 않을 수도 있었지만 여기에는 단점이 있었습니다.
그것은 *ix 문화에 너무 깊이 뿌리박혀 있어서 지금은 바꿀 수 없습니다. 이것eppesuig가 제기한 대소문자 구분 파일 시스템 문제단지 그것의 일부일 뿐입니다. macOS 시스템—어느 것이 Unix 기반입니까?— 일반적으로 대소문자를 구분하지 않는(그러나 대소문자는 유지하는) 파일 시스템이 있으므로 이러한 시스템에서는 셸 외부 명령이 사실상 대소문자를 구분하지 않습니다. 하지만,다음과 같은 내장 기능cd
대소문자 구분을 유지하세요.
대소문자를 구분하지 않는 파일 시스템을 사용하더라도 사물의 기록은 귀하의 의지에 어긋납니다, Hussain. ls
Mac에 입력 하면 다채로운 디렉토리 목록이 표시됩니다. LS
대신 이것을 입력 하면 계속 실행되지만 추가된 플래그의 별칭은 대소문자를 구분하므로 /bin/ls
목록에 색상이 지정되지 않습니다 .-C
익숙해지는 것이 좋습니다. 가능하다면 그것을 사랑하는 법을 배우십시오.
답변2
이는 "터미널" 문제가 아니라 파일 시스템 기능입니다. 쉘은 (항상 대소문자를 구분하는) 파일 시스템에서 명령을 어떻게 찾아야 합니까?
답변3
내가 사용하고 존중하는 기술 시스템은 운영 체제든, 프로그래밍 언어든, 그 밖의 무엇이든 거의 전적으로 대소문자를 구분합니다.
지금 당장 생각할 수 있는 예외는 HTML 태그와 SQL 및 Ada 프로그래밍 언어의 일부 구현입니다.
이런 경우에도 사실 HTML 태그는 소문자로 쓰고, SQL 쿼리 의미론은 대문자(매개변수 대문자 사용)로 쓰는 경향이 강한 것 같아요. (내가 틀렸다면 정정하십시오.) Ada의 경우, 프로시저 이름을 소문자로 입력하면 Emacs 모드가 이를 정정할 것입니다. 그러나 컴파일 타임에는 문제가 되지 않습니다. 따라서 대소문자를 구분하지 않음에도 불구하고 사람들은 그것이 나쁜 생각이라고 생각하는 것 같습니다.
그 이유는 대소문자를 구분하면 표현력이 향상되기 때문입니다. 수량 측면에서( CD
1개뿐 아니라 CD
, Cd
, cD
, cd
4개) 더 중요하게는 대문자를 현명하게 사용하여 목적, 강조 등을 표현할 수 있으며 프로그래밍 시 가독성도 향상됩니다.
직관적으로, 당신이 와 같은 방식으로 읽고 있지 않다는 것이 분명합니다 hi
!HI
그러나 컴퓨터 세계의 예를 들자면 프로그래밍 언어 Ada(1980년대)에서 절차적 코드 블록의 첫 번째 줄은 다음과 같습니다.
procedure body P(SCB : in out Semaphore_Control_Block) is
보시다시피 프로시저와 매개변수 이름은 대문자로, 데이터 유형은 대문자로, 나머지는 모두 소문자로 표시됩니다. 또한 "모두 대문자" 매개변수 이름이 약어임을 나타냅니다. 이제 다음과 결합하세요.
procedure body p(scb : in out semaphore_control_block) is
이는 Ada가 대소문자를 구분하지 않기 때문에 가능합니다(또는 컴파일러가 첫 번째 예에서와 같이 이를 변경하지만 물론 코드는 변경하지 않습니다). 아니면 어떻습니까?
PROCedure body P(Scb : IN Out semaphore_CONTROL_BLOCK) iS
좀 우스꽝스럽다는 건 알지만 누군가는 그런 말을 쓸 만큼 멍청할 수도 있습니다. 요점은 대소문자 구분 시스템이 사람들에게 일관성을 강요할 뿐만 아니라 이를 통해 도움을 받고(가독성) 이를 유리하게 사용한다는 것입니다(위의 약어 예).
답변4
"대문자/소문자" 대소문자 구분 개념은 로캘별로 다를 수 있으며, 다른 디자인 복잡성과 마찬가지로 응용 프로그램의 일부가 되기보다는 가능한 한 응용 프로그램 스택의 사용 지점에 가까워야 합니다. 스택 부분. 핵무기.
대소문자를 구분하는 환경에서는 대소문자를 구분하지 않는 환경으로 래핑할 수 있지만 그 반대는 불가능합니다.