본문 바로가기
리눅스/Part 1 - Learning The Shell

리눅스 기초 | 1. 쉘이란?

by 객잔주인 2024. 5. 11.

해당 포스팅은 William E. Shotts, Jr.의 오픈소스 저서 The Linux Command Line(링크)를 번역한 내용입니다


 

※ 모든 실습은 리눅스 환경에서 실시됩니다. 맥 사용자의 경우 일부 명령어를 제외하면 대부분 실행할 수 있으니 그대로 진행하시되 필요에 따라 Linux를 설치하십시오.

※ 지나친 번역은 가급적 피했습니다. 널리 사용되는 기술용어이거나 쉽게 해석 가능한 경우에는 가급적 영어를 음차하였습니다. 예) command line → 명령 줄 커맨드 라인, Editor → 편집기 에디터

 

커맨드 라인(command line)을 이야기 할 때 우리가 진짜 가리키는 것은 쉘(shell)입니다. 쉘은 키보드 커맨드를 운영체제에 전달하는 역할을 하는 프로그램입니다. 거의 모든 리눅스 배포판은 GNU 프로젝트에서 제공하는 bash라는 이름의 쉘 프로그램을 제공합니다. "bash"라는 이름은 "Bourne Again SHell"의 약어로 Steve Bourne이 작성한 Unix 쉘 프로그램인 sh를 개선하여 대체하기 위해 만들어졌다는 것을 의미합니다.

Terminal Emulators

GUI를 사용할 때에는 쉘과 상호작용하기 위한 터미널 에뮬레이터(terminal emulator)라는 또 다른 프로그램이 필요합니다. 데스크탑 메뉴를 살펴보면 찾아볼 수 있을 것입니다. KDE는 konsole을 사용하고 GNOME은 gnome-terminal을 사용하지만 메뉴상에서는 단순히 "terminal"로 나타날 것입니다. 리눅스에서는 다른 많은 터미널 에뮬레이터를 사용할 수 있습니다. 하지만 모든 터미널은 우리가 쉘에 접근하도록 하는 기능을 합니다. 공부를 하다 보면 터미널이 제공하는 부가기능들에 따라 여러분이 선호하는 터미널이 생기게 될 것입니다.

Making Your First Keystrokes

자  이제 시작해보겠습니다. 터미널 에뮬레이터를 실행해 주세요! 실행 후엔 다음과 같은 화면을 볼 수 있습니다:

 

이것을 쉘 프롬프트(shell prompt)라고 하고 쉘이 입력을 받을 준비가 되면 나타나게 됩니다. 어떤 리눅스 배포판을 사용하냐에 따라 다를 수 있지만 일반적으로 유저이름@장치이름, 그리고 그 뒤에 현재 경로와 함께 달러표시($)가 보일 것입니다.

Note: 만약 마지막에 "$" 대신 "#"이 보인다면 터미널 세션이 슈퍼유저(superuser) 권한이 있다는 것을 의미합니다. 루트 유저(root user)로 로그인했거나 superuser 권한이 있는 터미널 에뮬레이터를 실행했음을 의미합니다.

 

여기까지 문제없이 진행되었다면 이제 명령을 타이핑해 보겠습니다. prompt에 아무 명령이나 타이핑해 보세요. 이것처럼요:

 

명령이 아무 의미가 없기 때문에 쉘은 해당 명령이 없다는 말과 함께 다음 명령을 받을 준비를 합니다.

Command History

키보드에서 위쪽 화살표를 누르면 이전에 쳤던 커맨드 `kaekfjaeifj`가 다시 나타나는 것을 볼 수 있습니다. 이것을 command history라고 합니다. 대부분의 리눅스 배포판은 마지막 1000개의 명령을 기억합니다. 아래 화살표를 누르면 다시 이전 커맨드가 사라지는 것을 볼 수 있습니다.

 

Cursor Movement

다시 위쪽 화살표를 눌러 이전 명령을 불러와보세요. 왼쪽과 오른쪽 화살표를 눌러보면 command line에서 커서의 위치를 이리저리 움직일 수 있습니다. 이는 커맨드 편집을 쉽게 해 줍니다

A Few Words About Mice and Focus
※ 리눅스 GUI 환경인 경우에만

쉘은 모든 것이 키보드로 이뤄지지만 마우스를 사용할 수도 있습니다. X Window System(GUI를 실행하는 기본 엔진)에 내장된 메커니즘은 빠른 복사/붙여 넣기를 지원합니다. 마우스 왼쪽 버튼을 이용해 명령 일부를 드래그하거나 단어를 더블 클릭하면 X가 관리하는 버퍼에 복사됩니다. 마우스 가운데 버튼을 클릭하면 커서가 위치한 곳에 복사된 텍스트를 붙여 넣기 합니다. 시도해 보세요.

Note: 터미널 윈도우 내에서 복사/붙여 넣기를 위해 Ctrl-c/Ctrl-v를 사용하지 마세요. 작동하지 않을 겁니다. 이 명령들은 쉘에서 다른 의미를 가지며 Microsoft Windows가 나오기 한참 전에 이미 약속된 명령들입니다.

그래픽 데스크톱 환경(아마도 KDE나 GNOME)은 Windows와 비슷하게 동작하기 위해 포커스 정책(focus policy)이 "click to focus"로 설정되어 있을 것입니다. 이는 창을 활성화시키기 위해 해당 창을 클릭해야 함을 의미합니다. 이는 "focus follows mouse"라는 전통적인 X의 작동과 반대되는데, "focus follows mouse"에서는 마우스가 (클릭 없이) 창을 지나가기만 해도 해당 창이 활성화됩니다. 창을 클릭하기 전까지는 상단으로 올라오지 않지만 (창 위에 마우스를 올리는 것만으로도) 명령을 받을 준비가 됩니다. 포커스 정책을 "focus follows mouse"로 세팅하면 복사/붙여 넣기가 더 유용해집니다. 가능하다면 시도해 보세요(Ubuntu의 Unity와 같은 몇몇 데스크탑 환경은 이를 더 이상 지원하지 않습니다). 아마 이쪽을 더 선호하실 겁니다.

 

Try Some Simple Commands

터미널 에뮬레이터에 입력하는 방법을 배웠으니 이제 몇 개의 간단한 커맨드를 입력해 보겠습니다. 현재 시간과 날짜를 표시해 주는 `date` 커맨드를 먼저 입력해 보시죠. 

 

관련된 명령어에는 현재 달의 달력을 띄워주는 `cal`이 있습니다

 

디스크 드라이브의 남아있는 공간을 보기 위해서는 `df`를 입력하세요

 

마찬가지로 메모리의 남은 공간을 보기 위해서 `free`를 입력하세요

 

Ending a Terminal Session

터미널 세션은 터미널 에뮬레이터 창을 닫거나 쉘 프롬프트에 `exit`을 입력하거나 Ctrl-d를 눌러 종료할 수 있습니다

The Console Behind the Curtain

터미널 에뮬레이터가 실행되고 있지 않더라도 몇 개의 터미널 세션은 그래픽 데스크탑 뒤에서 계속 돌아가고 있습니다. 대부분의 리눅스 배포판에서 virtual terminals 혹은 virtual consoles라고 불리는 이 세션들에 Ctrl-Alt-F1부터 Ctrl-Alt-F6을 눌러 접근할 수 있습니다. 세션에 접근하게 되면 로그인 프롬프트가 나오고 유저 이름과 암호를 입력할 수 있습니다. 다른 virtual console로 옮기고 싶을 때에는 Alt-F1부터 Alt-F6을 누르면 됩니다. 대부분의 시스템에서 Alt-F7을 누르면 원래의 그래픽 데스크탑으로 돌아올 수 있습니다.

 

Summing Up

이번 장에서는 쉘과, 커맨드 라인에 대한 간략한 소개와 함께 터미널 세션을 시작하고 종료하는 것을 배우며 리눅스 커맨드 라인으로의 여정을 시작해 보았습니다. 또, 간단한 명령어를 입력하고 편집하는 것도 해보았습니다. 별로 어렵지 않으셨죠?

 

다음 장에서는 몇 개의 커맨드를 더 배워보고 리눅스의 파일 시스템에 대해 돌아보겠습니다.

 

Further Reading

 

Stephen R. Bourne - Wikipedia

From Wikipedia, the free encyclopedia British computer scientist Stephen Richard "Steve" Bourne (born 7 January 1944) is an English computer scientist based in the United States for most of his career. He is well known as the author of the Bourne shell (sh

en.wikipedia.org

 

Brian Fox (programmer) - Wikipedia

From Wikipedia, the free encyclopedia American computer programmer Brian Jhan Fox (born 1959) is an American computer programmer and free software advocate. He is the original author of the GNU Bash shell, which he announced as a beta in June 1989.[1] He c

en.wikipedia.org

 
 

Shell (computing) - Wikipedia

From Wikipedia, the free encyclopedia Computer program that exposes an operating system's services to a human user or other programs A graphical interface from the late 1980s, which features a TUI window for a man page, a shaped window (oclock) as well as

en.wikipedia.org