명령줄: 사람들이 여전히 귀찮게 하는 이유는 무엇입니까?

명령줄은 거의 50년이 넘었지만 구식이 아닙니다. 텍스트 기반 터미널은 그래픽 데스크탑과 터치 스크린 장치의 시대에도 여전히 많은 작업을 수행하는 가장 좋은 방법입니다.

사실, Microsoft가 강력한 새 Windows 터미널 응용 프로그램을 만들면서 명령줄이 그 어느 때보다 더 존경받고 있습니다. Windows 10의 PowerShell 환경은 놀라울 정도로 강력하지만 Microsoft는 기본적으로 전체 Linux 명령줄 환경에 대한 지원을 Windows 10에 추가하는 데 여전히 나섰습니다.

명령줄은 한때 유일한 옵션이었습니다.

한 번에 컴퓨터와 상호 작용하려면 입력했습니다. 그거였다. 다른 건 없었다. 제한적이고 구식으로 들릴지 모르지만 천공 카드나 천공된 종이 테이프를 사용해야 하는 것에서 한 단계 더 나아가 타이핑은 급진적이고 변혁적이었습니다. 그리고 종이 롤이 있는 전신 타자기에서 음극선관 (CRT) 화면은 인간과 컴퓨터 상호 작용의 또 다른 획기적인 변화였습니다.

그 단계는 대화형 셸이 실제로 자체적으로 등장할 수 있는 길을 열었습니다. 이제 컴퓨터에 지침을 보내고 매우 빠르게 화면에 응답을 표시할 수 있습니다. 종이 인쇄물이 텔레타이프라이터에서 덜컥거리며 나올 때까지 기다리면서 더 이상 딸깍하고 딸깍거리는 소리가 나지 않습니다.

당연하지만 그때는 그랬고 지금은 이렇습니다. 컴퓨팅은 완전히 다른 볼 게임입니다. 그래픽 데스크톱 환경이 설치되지 않은 컴퓨터를 사용하거나 SSH 낮은 대역폭 연결을 통해 또는 제어 목이 없는 또는 임베디드 시스템에서 그래픽 데스크탑보다 명령줄을 사용하는 이유는 무엇입니까?

전문 용어 설명

일부 사람들은 명령줄, 터미널 창 및 셸과 같은 용어를 거의 같은 의미로 사용합니다. 잘못된 전문용어입니다. 그것들은 모두 상당히 다릅니다. 그들은 관련이 있지만 같은 것은 아닙니다.

터미널 창은 그래픽 데스크탑 환경 텔레타이프 터미널의 에뮬레이션을 실행합니다.

쉘은 터미널 창 내부에서 실행되는 프로그램입니다. 사용자의 입력을 받아 입력한 내용에 따라 지침 자체를 해석 및 실행하거나 운영 체제를 구성하는 다른 유틸리티에 전달하거나 입력한 내용과 일치하는 스크립트나 프로그램을 찾습니다.

  Inbox Zero는 무엇이며 어떻게 달성할 수 있습니까?

명령줄은 입력하는 곳입니다. 쉘이 몇 가지 지침을 입력하기를 기다릴 때 표시되는 프롬프트입니다. “명령줄”이라는 용어는 입력한 내용의 실제 내용을 나타내는 데도 사용됩니다. 예를 들어, 다른 컴퓨터 사용자에게 프로그램을 실행하는 데 어려웠던 점에 대해 이야기하면 “어떤 명령줄을 사용했습니까?”라고 물을 수 있습니다. 그들은 당신이 어떤 쉘을 사용하고 있었는지 묻지 않습니다. 그들은 당신이 입력한 명령을 알고 싶어합니다.

이것들이 합쳐져 하나의 형태를 이룬다. 명령줄 인터페이스 (CLI).

2019년에 명령줄을 사용하는 이유는 무엇입니까?

CLI는 익숙하지 않은 사람들에게 역행하고 혼란스러워 보일 수 있습니다. 확실히 현대 운영 체제에서 컴퓨터를 사용하는 이렇게 구식이고 괴상한 방식을 위한 자리는 없습니까? 수십 년 전 창, 아이콘, 마우스가 등장하고 그래픽 데스크탑 환경이 그래픽 사용자 인터페이스 (GUI)를 사용할 수 있게 되었습니까?

예, GUI는 수십 년 동안 사용되었습니다. Microsoft Windows의 첫 번째 버전은 1985년에 출시된 1990년 Windows 3.0이 출시되면서 PC 데스크톱 표준이 되었습니다.

유닉스와 리눅스에서 사용되는 X 윈도우 시스템은 1984년 도입. 이것은 그래픽 데스크탑 환경을 Unix와 그 파생물, 클론 및 파생물로 가져왔습니다.

그러나 Unix의 출시는 이러한 사건보다 먼저 10년 이상. 그리고 다른 옵션이 없었기 때문에 모든 것이 명령줄을 통해 가능해야 했습니다. 모든 인간 상호 작용, 모든 구성, 컴퓨터의 모든 사용은 겸손한 키보드를 통해 수행할 수 있어야 했습니다.

따라서 사실상 CLI는 모든 작업을 수행할 수 있습니다. GUI는 여전히 CLI가 할 수 있는 모든 것을 할 수 없습니다. 또한 CLI가 수행할 수 있는 부분의 경우에도 일반적으로 CLI가 더 빠르고 유연하며 스크립팅이 가능하고 확장 가능합니다.

그리고 기준이 있습니다.

POSIX 덕분에 표준화되었습니다.

POSIX는 유닉스 계열 운영체제의 표준—기본적으로 Windows가 아닌 모든 것. 그리고 Windows에도 WSL(Linux용 Windows 하위 시스템)이 있습니다. POSIX 호환(또는 호환에 가까운) 운영 체제에서 터미널 창을 열면 셸에서 자신을 찾을 수 있습니다. 셸이나 배포판에서 자체 확장 및 향상 기능을 제공하더라도 핵심 POSIX 기능을 제공하는 한 바로 사용할 수 있습니다. 스크립트가 실행됩니다.

  Linux에 Skeuos GTK 테마를 설치하는 방법

명령줄은 가장 낮은 공통 분모입니다. 사용법을 배우면 Linux 배포판과 그래픽 데스크탑 환경에 관계없이 필요한 모든 작업을 수행할 수 있습니다. 데스크탑마다 고유한 작업 방식이 있습니다. 다양한 Linux 배포판은 다양한 유틸리티와 프로그램을 번들로 제공합니다.

그러나 터미널 창을 열면 집과 같은 편안함을 느낄 수 있습니다.

명령은 함께 작동하도록 설계되었습니다.

각 Linux 명령은 특정 작업을 수행하고 그 작업을 잘 수행하도록 설계되었습니다. 기본 설계 철학은 원하는 결과를 달성하기 위해 기존 유틸리티와 함께 ​​연결하거나 연결할 수 있는 다른 유틸리티를 추가하여 더 많은 기능을 추가하는 것입니다.

이것은 매우 유용하여 Microsoft는 Windows 10에 전체 Linux 명령줄에 대한 지원을 추가하기 위해 노력했습니다!

예를 들어, sort 명령은 다른 명령에서 텍스트를 알파벳 순서로 정렬하는 데 사용됩니다. 다른 Linux 명령 각각에 정렬 기능을 구축할 필요가 없습니다. 일반적으로 GUI 응용 프로그램은 이러한 유형의 협업 상호 작용을 허용하지 않습니다.

다음 예를 보십시오. 이것은 ls 명령을 사용하여 현재 디렉토리에 있는 파일을 나열합니다. 결과는 정렬 명령으로 파이프되고 데이터의 다섯 번째 열에 정렬 (파일 크기). 그런 다음 정렬된 목록은 기본적으로 나열되는 head 명령으로 파이프됩니다. 처음 열줄 그 입력의.

ls -l | sort -nk5,5 | head

현재 디렉토리에서 가장 작은 파일의 깔끔한 목록을 얻습니다.

head 대신 tail을 사용하여 하나의 명령을 변경하면 현재 디렉토리에서 가장 큰 10개의 파일 목록을 얻을 수 있습니다.

ls -l | sort -nk5,5 | tail

이것은 예상대로 가장 큰 10개의 파일 목록을 제공합니다.

명령의 출력을 리디렉션하고 파일로 캡처할 수 있습니다. 일반 출력(stdin)과 오류 메시지(stderr)는 별도로 캡처할 수 있습니다.

명령에는 환경 변수가 포함될 수 있습니다. 다음 명령은 홈 디렉토리의 내용을 나열합니다.

ls $HOME

이것은 디렉토리 트리에서 발생하는 모든 위치에서 작동합니다.

타이핑에 대한 생각이 여전히 어리둥절하다면 탭 완성과 같은 기술을 사용하면 입력해야 하는 양을 줄일 수 있습니다.

  Apple의 iPhone 및 Mac App Store에서 PayPal을 사용하는 방법

자동화 및 반복성을 지원하는 스크립트

인간은 실수하기 쉽습니다.

스크립트를 사용하면 스크립트가 실행될 때마다 동일한 방식으로 실행될 것으로 알고 있는 일련의 명령을 표준화할 수 있습니다. 이는 시스템 유지 관리에 일관성을 제공합니다. 스크립트가 계속 진행해야 하는지 여부를 결정할 수 있도록 스크립트에 안전 검사를 구축할 수 있습니다. 이것은 사용자가 스스로 결정을 내리기에 충분한 지식을 가질 필요를 제거합니다.

Linux 및 기타 유닉스 계열 시스템에서 cron을 사용하여 작업을 자동화할 수 있기 때문에 길고 복잡하고 반복적인 작업을 단순화하거나 적어도 한 번 파악한 다음 미래를 위해 자동화할 수 있습니다.

PowerShell 스크립트는 Windows에서 유사한 기능을 제공하며 작업 스케줄러에서 실행되도록 예약할 수 있습니다. 모든 것을 자동으로 변경하는 명령을 실행할 수 있는데 컴퓨터를 설정할 때마다 50가지 다른 옵션을 클릭하는 이유는 무엇입니까?

두 세계의 최고

Linux 또는 모든 운영 체제를 고급 사용자로 최대한 활용하려면 CLI와 GUI를 사용해야 합니다.

GUI는 응용 프로그램 사용에 있어 타의 추종을 불허합니다. 열성적인 명령줄 옹호자라도 터미널 창에서 나와 사무실 생산성 제품군, 개발 환경 및 그래픽 조작 프로그램을 때때로 사용해야 합니다.

명령줄 중독자는 GUI를 싫어하지 않습니다. 그들은 단지 적절한 작업을 위해 CLI를 사용하는 이점을 선호합니다. 관리의 경우 CLI가 승리합니다. CLI를 사용하여 동일한 노력으로 하나의 파일, 하나의 디렉토리, 선택한 파일 및 디렉토리를 변경하거나 완전히 전역적으로 변경할 수 있습니다. GUI를 사용하여 이 작업을 수행하려면 영향을 받는 개체의 수가 증가함에 따라 종종 길고 반복적인 키보드 및 마우스 동작이 필요합니다.

명령줄은 최고의 충실도를 제공합니다. 모든 명령의 모든 옵션을 사용할 수 있습니다. 그리고 많은 Linux 명령에는 많은 옵션이 있습니다. 한 가지 예를 들어 lsof 명령을 고려하십시오. 그것의 살펴보기 매뉴얼 페이지 그런 다음 GUI로 래핑하는 방법을 고려하십시오.

효과적인 GUI로 사용자에게 제시하기에는 너무 많은 옵션이 있습니다. 그것은 압도적이고 매력적이지 않고 사용하기가 투박할 것입니다. 그리고 그것은 GUI가 목표로 하는 것과 완전히 반대입니다.

코스용 말입니다. CLI 말을 부끄러워하지 마십시오. 종종 더 빠르고 민첩한 말입니다. 박차를 가하면 절대 후회하지 않을 것입니다.