Red Hat Enterprise Linux에서 명령 라인 액세스하기

LinuxBeginner
지금 연습하기

소개

이번 실습에서는 Red Hat Enterprise Linux(RHEL) 환경을 중심으로 리눅스 명령 라인 조작의 기초를 다지게 됩니다. 사용자 및 시스템 정보를 확인하고, 사용자 비밀번호를 관리하며, 다양한 파일 형식을 검사하는 필수 명령들을 직접 실습해 볼 수 있습니다.

실제 실습을 통해 cat, head, tail을 사용하여 파일 내용을 확인하고, 파일 통계를 집계하며, 명령 기록을 효율적으로 탐색하는 방법을 배웁니다. 또한, 리눅스 시스템 관리의 생산성과 숙련도를 높여주는 중요한 명령 라인 편집 단축키를 마스터하게 됩니다.

사용자 및 시스템 시간 확인하기

이번 단계에서는 기본 리눅스 명령을 사용하여 시스템에 로그인한 현재 사용자를 확인하고 현재 날짜와 시간을 표시하는 방법을 배웁니다. 이러한 기본 명령을 이해하는 것은 모든 리눅스 환경을 탐색하고 관리하는 데 매우 중요합니다.

먼저, 현재 어떤 계정으로 로그인되어 있는지 확인해 보겠습니다. 이 용도로 whoami 명령을 사용합니다. 이 명령은 현재 사용자의 유효한 사용자 이름을 출력합니다.

터미널에 다음 명령을 입력하세요:

whoami

whoami 명령 출력 스크린샷

출력 결과로 labex가 표시되며, 이는 현재 labex 사용자로 로그인되어 있음을 나타냅니다.

labex

다음으로 date 명령을 살펴보겠습니다. 이 명령은 시스템의 날짜와 시간을 표시하거나 설정하는 데 사용됩니다. 옵션 없이 사용하면 기본 형식으로 현재 날짜와 시간이 표시됩니다.

date 명령을 실행하세요:

date

출력 결과에는 현재 요일, 월, 일, 시간(HH:MM:SS), 시간대(Time Zone), 그리고 연도가 표시됩니다. 명령을 실행하는 시점에 따라 정확한 출력은 달라집니다.

Mon Jul 22 10:30:45 AM UTC 2024

date 명령은 매우 유연하며 형식 지정자(Format Specifiers)를 사용하여 다양한 방식으로 출력을 포맷할 수 있습니다. 예를 들어, 24시간 형식(HH:MM)으로 현재 시간만 표시하려면 +%R을 사용할 수 있습니다.

시간만 표시해 보세요:

date +%R

출력 결과는 다음과 유사합니다:

10:30

MM/DD/YYYY 형식으로 현재 날짜만 표시하려면 +%x를 사용할 수 있습니다.

날짜만 표시해 보세요:

date +%x

출력 결과는 다음과 유사합니다:

07/22/2024

마지막으로, 세미콜론(;)으로 구분하여 한 줄에 여러 명령을 실행할 수 있습니다. 이는 일련의 명령을 빠르게 실행할 때 유용합니다.

동일한 줄에서 whoamidate를 함께 실행해 보겠습니다:

whoami; date

두 명령의 출력이 차례대로 표시됩니다:

labex
Mon Jul 22 10:30:45 AM UTC 2024

whoami 및 date 명령 출력 스크린샷

사용자 비밀번호 관리 및 파일 형식 확인하기

이번 단계에서는 사용자의 비밀번호를 변경하는 방법과 file 명령을 사용하여 파일 형식을 판별하는 방법을 배웁니다. 파일 형식을 이해하는 것은 리눅스에서 다양한 데이터 형식 및 실행 파일을 다룰 때 필수적입니다.

먼저, 실습의 기본 비밀번호를 실제로 변경하지 않고 비밀번호 변경 과정이 어떻게 시작되는지 살펴보겠습니다. passwd 명령은 사용자 비밀번호를 변경하는 데 사용됩니다. labex 사용자의 경우, 현재 비밀번호를 입력한 다음 새 비밀번호를 입력하라는 프롬프트가 표시됩니다. 현재 비밀번호는 labex입니다.

터미널에 다음 명령을 입력하세요:

passwd

현재 비밀번호 프롬프트가 나타나면 labex를 입력하고 Enter 키를 누르세요. 새 비밀번호 프롬프트가 나타나면 Ctrl+C를 눌러 명령을 취소하고 셸(Shell)로 돌아오세요. 새 비밀번호를 입력하지 마세요.

Changing password for user labex.
Current password:
New password: ^C

참고: 리눅스에서 비밀번호를 입력할 때는 보안상의 이유로 화면에 아무것도 표시되지 않습니다. 이는 정상적인 동작이며 가상 머신(VM)이 응답하지 않는 것이 아닙니다. 입력 중인 문자가 보이지 않더라도 시스템은 여전히 입력을 받고 있습니다.

다음으로 file 명령을 살펴보겠습니다. 이 명령은 파일의 형식을 판별합니다. 파일 확장자가 누락되었거나 오해의 소지가 있을 때 파일에 어떤 종류의 데이터가 포함되어 있는지 파악하는 데 매우 유용합니다.

/etc/passwd 파일의 형식을 검사해 보겠습니다. 이 파일에는 시스템의 모든 사용자 계정에 대한 정보가 포함되어 있습니다.

file /etc/passwd

출력 결과는 /etc/passwd가 ASCII 텍스트 파일임을 나타냅니다.

/etc/passwd: ASCII text

이제 현재 사용 중인 셸 프로그램인 /bin/bash와 같은 실행 파일의 형식을 확인해 보겠습니다.

file /bin/bash

출력 결과는 /bin/bash가 실행 파일이며, 아키텍처 및 기타 속성에 대한 세부 정보가 함께 표시됨을 보여줍니다.

/bin/bash: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=<omitted>, for GNU/Linux <omitted>, stripped

마지막으로 디렉토리의 형식을 확인해 보겠습니다. 예시로 /home 디렉토리를 사용하겠습니다.

file /home

출력 결과는 간단히 /home이 디렉토리임을 나타냅니다.

/home: directory

이러한 예시들은 file 명령이 리눅스 시스템에 있는 다양한 파일과 디렉토리의 성격을 빠르게 파악하는 데 어떻게 도움이 되는지 보여줍니다.

cat, head, tail을 이용한 파일 내용 검사

이번 단계에서는 세 가지 필수 리눅스 명령인 cat, head, tail을 사용하여 텍스트 파일의 내용을 검사하는 방법을 배웁니다. 이 명령들은 특히 설정 파일이나 로그 파일과 같은 파일 내용을 확인할 때 기초가 되는 명령들입니다.

먼저 cat 명령을 사용해 보겠습니다. cat 명령(concatenate의 약자)은 주로 파일의 내용을 표시하는 데 사용됩니다. 또한 여러 파일을 하나로 결합하는 데에도 사용할 수 있습니다.

/etc/passwd 파일의 전체 내용을 확인해 보겠습니다. 이 파일에는 사용자 계정 정보가 들어 있습니다.

cat /etc/passwd

/etc/passwd 파일의 전체 내용이 터미널에 출력됩니다. 모든 사용자 항목이 표시되므로 출력 내용이 많을 것입니다.

root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
...output omitted...

이제 ~/project 디렉토리에 두 개의 간단한 텍스트 파일을 만들어 여러 파일을 다루는 cat 명령을 시연해 보겠습니다.

file1.txt 생성:

echo "Hello World!!" > ~/project/file1.txt

file2.txt 생성:

echo "Introduction to Linux commands." > ~/project/file2.txt

이제 cat을 사용하여 두 파일의 내용을 모두 표시해 보세요:

cat ~/project/file1.txt ~/project/file2.txt

출력 결과는 file1.txt의 내용 뒤에 file2.txt의 내용이 이어지는 형태로 나타납니다.

Hello World!!
Introduction to Linux commands.

다음으로 head 명령을 사용하겠습니다. head 명령은 파일의 앞부분 몇 줄을 표시합니다. 기본적으로 처음 10줄을 보여줍니다.

/etc/passwd의 처음 10줄을 확인해 보겠습니다:

head /etc/passwd

/etc/passwd 파일의 처음 10줄이 표시됩니다.

root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin

-n 옵션을 사용하여 표시할 줄 수를 지정할 수 있습니다. 예를 들어, 처음 3줄만 보려면 다음과 같이 입력합니다:

head -n 3 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin

마지막으로 tail 명령을 사용해 보겠습니다. tail 명령은 파일의 뒷부분 몇 줄을 표시합니다. 기본적으로 마지막 10줄을 보여줍니다.

/etc/passwd의 마지막 10줄을 확인해 보겠습니다:

tail /etc/passwd

/etc/passwd 파일의 마지막 10줄이 표시됩니다.

systemd-coredump:x:999:997:systemd Core Dumper:/:/sbin/nologin
systemd-resolve:x:998:996:systemd Resolver:/:/sbin/nologin
systemd-network:x:997:995:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System Message Bus:/:/sbin/nologin
polkitd:x:996:994:User for polkitd:/:/sbin/nologin
unbound:x:995:993:Unbound DNS resolver:/:/sbin/nologin
tss:x:59:59:TPM software stack:/:/sbin/nologin
gdm:x:42:42::/var/lib/gdm:/sbin/nologin
gnome-initial-setup:x:980:978::/run/gnome-initial-setup/:/sbin/nologin
dnsmasq:x:979:977:Dnsmasq DHCP and DNS server:/var/lib/dnsmasq:/sbin/nologin

head와 마찬가지로 -n 옵션을 사용하여 표시할 줄 수를 지정할 수 있습니다. 예를 들어, 마지막 3줄만 보려면 다음과 같이 입력합니다:

tail -n 3 /etc/passwd
gdm:x:42:42::/var/lib/gdm:/sbin/nologin
gnome-initial-setup:x:980:978::/run/gnome-initial-setup/:/sbin/nologin
dnsmasq:x:979:977:Dnsmasq DHCP and DNS server:/var/lib/dnsmasq:/sbin/nologin

이러한 명령들은 텍스트 편집기에서 열지 않고도 파일 내용을 빠르게 검사할 수 있어 매우 유용하며, 특히 파일이 크거나 특정 부분만 확인해야 할 때 진가를 발휘합니다.

파일 통계 집계 및 명령 기록(History) 사용하기

이번 단계에서는 wc 명령을 사용하여 파일의 줄, 단어, 글자 수를 세는 방법과 터미널에서 명령 기록 기능을 효과적으로 사용하는 방법을 배웁니다. 명령 기록을 관리하는 것은 작업 효율성을 높이고 이전에 실행했던 명령을 다시 불러오는 데 매우 중요합니다.

먼저 wc(word count) 명령을 살펴보겠습니다. 이 명령은 파일의 줄 수, 단어 수, 글자 수를 세는 데 사용됩니다.

/etc/passwd 파일의 줄, 단어, 글자 수를 세어 보겠습니다:

wc /etc/passwd

출력 결과에는 파일 이름 앞에 세 개의 숫자(줄 수, 단어 수, 글자 수)가 표시됩니다. 시스템 구성에 따라 정확한 숫자는 약간 다를 수 있습니다.

41   98 2338 /etc/passwd

옵션을 사용하여 특정 카운트만 표시할 수 있습니다:

  • -l : 줄 수(lines)
  • -w : 단어 수(words)
  • -c : 글자 수(characters)

/etc/passwd와 (사용자 그룹에 대한 정보가 포함된) /etc/group 파일의 줄 수만 세어 보겠습니다. 세미콜론을 사용하여 한 줄에 처리할 수 있습니다.

wc -l /etc/passwd
wc -l /etc/group

각 파일의 줄 수가 표시됩니다:

41 /etc/passwd
63 /etc/group

이제 /etc/group과 (호스트 이름을 IP 주소로 매핑하는) /etc/hosts 파일의 글자 수만 세어 보겠습니다.

wc -c /etc/group /etc/hosts

출력 결과는 각 파일의 글자 수와 총합계를 보여줍니다.

883 /etc/group
114 /etc/hosts
997 total

다음으로 명령 기록(Command History)에 대해 알아보겠습니다. 셸은 사용자가 실행한 모든 명령의 기록을 유지합니다. 이는 명령을 다시 실행하거나 이전에 수행했던 작업을 기억하는 데 매우 유용합니다.

명령 기록을 표시하려면 history 명령을 사용합니다:

history

현재 세션 및 이전 세션에서 입력한 모든 명령의 번호가 매겨진 목록이 표시됩니다. 활동 내용에 따라 출력 결과는 크게 달라집니다.

...output omitted...
   23  clear
   24  whoami
   25  date
   26  file /etc/passwd
   27  cat /etc/passwd
   28  head /etc/passwd
   29  tail /etc/passwd
   30  wc /etc/passwd
   31  history

느낌표(!) 뒤에 명령 번호나 문자열을 사용하여 기록에 있는 명령을 다시 실행할 수 있습니다.

예를 들어, 번호 26인 명령(위 예시에서는 file /etc/passwd이지만 사용자 환경에 따라 다를 수 있음)을 다시 실행하려면 history 출력에서 해당 번호를 찾아 사용합니다:

!26 ## 기록에 있는 'file /etc/passwd'의 실제 번호로 26을 대체하세요

셸이 실행하려는 명령을 먼저 표시한 다음 그 출력을 보여줍니다:

file /etc/passwd
/etc/passwd: ASCII text

특정 문자열로 시작하는 가장 최근 명령을 다시 실행할 수도 있습니다. 예를 들어, wc로 시작하는 마지막 명령을 다시 실행하려면:

!wc

이 명령은 이전에 실행했던 마지막 wc 명령을 실행합니다.

wc -c /etc/group /etc/hosts
883 /etc/group
114 /etc/hosts
997 total

이러한 기록 기능은 복잡한 명령을 다시 입력하지 않고도 빠르게 불러와 재실행할 수 있도록 하여 작업 흐름을 크게 가속화해 줍니다.

명령 라인 편집 단축키 연습하기

이번 단계에서는 유용한 명령 라인 편집 단축키를 배우고 연습합니다. 이 단축키들은 터미널에서 명령을 입력하고 수정할 때 효율성을 크게 향상시켜 주며, 마우스를 계속 사용하지 않고도 텍스트를 탐색하고 편집할 수 있게 해줍니다.

먼저, 긴 명령을 여러 줄에 걸쳐 작성하는 방법을 알아보겠습니다. 이는 복잡한 명령의 가독성을 높여줍니다. 줄 끝에 백슬래시(\)를 사용하여 명령이 다음 줄로 이어진다는 것을 나타낼 수 있습니다.

멀티라인 명령을 사용하여 두 사전 파일의 처음 3줄을 표시해 보겠습니다. 이 파일들은 일반적으로 리눅스 시스템에 존재하며 단어 목록을 포함하고 있습니다.

head -n 3 \
  /home/labex/project/words \
  /home/labex/project/linux.words

첫 줄을 입력하고 Enter를 누르면, 터미널에 > 프롬프트(또는 유사한 프롬프트)가 표시되어 나머지 명령을 기다리고 있음을 나타냅니다. 나머지 부분을 입력하고 다시 Enter를 누르세요.

==> /home/labex/project/words <==
1080
10-point
10th

==> /home/labex/project/linux.words <==
1080
10-point
10th

이제 몇 가지 명령 라인 편집 단축키를 연습해 보겠습니다. 이 단축키들은 대부분의 최신 리눅스 터미널(Bash 또는 Zsh 등)에서 작동합니다.

긴 명령을 입력하되, 아직 Enter를 누르지 마세요:

echo "This is a very long command that we will edit using shortcuts."
  • Ctrl+A: 명령 라인의 맨 앞으로 이동합니다.
    • 위 명령을 입력한 후 Ctrl+A를 누르세요. 커서가 줄의 맨 처음으로 이동합니다.
  • Ctrl+E: 명령 라인의 맨 끝으로 이동합니다.
    • Ctrl+A를 누른 후 Ctrl+E를 누르세요. 커서가 다시 줄의 맨 끝으로 이동합니다.
  • Ctrl+U: 커서 위치부터 명령 라인의 맨 앞까지 지웁니다.
    • 명령을 다시 입력하세요. 줄의 중간 어딘가에 커서를 놓습니다(예: "very" 뒤). Ctrl+U를 누르세요. 커서부터 시작 부분까지의 텍스트가 삭제됩니다.
  • Ctrl+K: 커서 위치부터 명령 라인의 맨 끝까지 지웁니다.
    • 명령을 다시 입력하세요. 줄의 중간 어딘가에 커서를 놓습니다(예: "very" 뒤). Ctrl+K를 누르세요. 커서부터 끝 부분까지의 텍스트가 삭제됩니다.
  • Ctrl+LeftArrow(또는 Alt+B): 명령 라인에서 이전 단어의 시작 부분으로 이동합니다.
    • 명령을 다시 입력하세요. 줄의 끝에 커서를 놓습니다. Ctrl+LeftArrow를 반복해서 눌러 단어 단위로 왼쪽으로 이동합니다.
  • Ctrl+RightArrow(또는 Alt+F): 명령 라인에서 다음 단어의 끝 부분으로 이동합니다.
    • 줄의 시작 부분에 커서를 놓습니다. Ctrl+RightArrow를 반복해서 눌러 단어 단위로 오른쪽으로 이동합니다.
  • Ctrl+R: 명령 기록 목록에서 패턴을 검색합니다.
    • Ctrl+R을 누르세요. (reverse-i-search) 프롬프트가 나타납니다. 이전에 실행했던 명령의 일부(예: date)를 입력하기 시작합니다. 터미널에 기록 중 일치하는 가장 최근 명령이 표시됩니다. Ctrl+R을 계속 눌러 더 오래된 일치 항목을 순환할 수 있습니다. Enter를 눌러 찾은 명령을 실행하거나, 왼쪽/오른쪽 화살표를 눌러 편집할 수 있습니다.

이 단축키들에 익숙해지면 명령 라인 상호작용 속도가 크게 빨라질 것입니다. 근육 기억(Muscle Memory)을 기르기 위해 정기적으로 연습해 보세요.

요약

이번 실습에서는 사용자 및 시스템 정보를 식별하기 위한 리눅스 기본 명령을 배웠습니다. 현재 로그인한 사용자를 확인하기 위한 whoami, 시간 지정을 위한 +%R 및 날짜 지정을 위한 +%x와 같은 다양한 형식 옵션을 포함하여 시스템의 현재 날짜와 시간을 표시하는 date 명령 사용법을 연습했습니다. 또한, 세미콜론을 사용하여 한 줄에 여러 명령을 실행하는 방법을 알아보고 명령 라인 환경에서의 작업 효율성을 높였습니다.