Red Hat Enterprise Linux 에서 텍스트 파일 편집

Red Hat Enterprise LinuxBeginner
지금 연습하기

소개

이 랩에서는 Linux 에서 텍스트 파일을 관리하고 셸 환경을 사용자 정의하는 데 필요한 필수 기술을 습득하게 됩니다. 표준 출력 및 오류 스트림을 파일로 리디렉션하고, 다양한 스트림을 결합하며, 작업을 자동화하기 위한 강력한 명령 파이프라인을 구성하는 방법을 배우게 됩니다.

또한, 널리 사용되는 강력한 텍스트 편집기인 Vim 을 사용하여 텍스트 파일을 편집하는 기본 사항을 탐구할 것입니다. 마지막으로, 명령줄 경험을 개인화하고 생산성을 향상시키기 위해 셸 변수와 별칭을 구성하고 활용하는 방법을 배우게 됩니다.

이것은 가이드 실험입니다. 학습과 실습을 돕기 위한 단계별 지침을 제공합니다.각 단계를 완료하고 실무 경험을 쌓기 위해 지침을 주의 깊게 따르세요. 과거 데이터에 따르면, 이것은 초급 레벨의 실험이며 완료율은 86%입니다.학습자들로부터 99%의 긍정적인 리뷰율을 받았습니다.

표준 출력을 파일로 리디렉션

이 단계에서는 명령의 표준 출력을 파일로 리디렉션하는 방법을 배우게 됩니다. 이는 Linux 시스템 관리의 기본적인 기술로, 나중에 분석, 로깅 또는 추가 처리를 위해 명령 결과를 캡처할 수 있게 해줍니다.

셸은 특수 파일 디스크립터 (file descriptor) 를 사용하여 입력 및 출력을 관리합니다. 가장 일반적인 것은 다음과 같습니다.

  • 0: 표준 입력 (stdin) - 일반적으로 키보드에서 입력됩니다.
  • 1: 표준 출력 (stdout) - 일반적으로 터미널 화면으로 출력됩니다.
  • 2: 표준 오류 (stderr) - 일반적으로 오류 메시지를 위해 터미널 화면으로 출력됩니다.

이 섹션에서는 stdout 리디렉션에 중점을 둡니다.

>를 사용하여 파일 덮어쓰기

> 연산자는 명령의 표준 출력을 지정된 파일로 리디렉션합니다. 파일이 존재하지 않으면 생성됩니다. 파일이 이미 존재하면 해당 내용이 덮어쓰여집니다.

현재 날짜와 시간을 사용하여 간단한 텍스트 파일을 만들어 보겠습니다.

  1. 먼저, 홈 디렉토리의 project 폴더에 있는지 확인합니다.

    cd ~/project
    [labex@host project]$
  2. 이제 date 명령을 사용하고 출력을 current_datetime.txt라는 새 파일로 리디렉션합니다.

    date > current_datetime.txt

    이 명령은 date를 실행하지만, 날짜를 터미널에 출력하는 대신 current_datetime.txt에 저장합니다.

  3. cat 명령을 사용하여 파일의 내용을 확인합니다.

    cat current_datetime.txt
    Mon Day XX HH:MM:SS AM/PM TimeZone YYYY

    출력은 위 예시와 유사하게 현재 날짜와 시간을 표시합니다.

  4. 이제 echo의 출력을 동일한 파일로 리디렉션해 보겠습니다. 이렇게 하면 이전 내용이 덮어쓰여집니다.

    echo "This is a new line of text." > current_datetime.txt
  5. 파일 내용을 다시 확인합니다.

    cat current_datetime.txt
    This is a new line of text.

    보시다시피, 원래의 날짜와 시간은 새로운 텍스트 줄로 대체되었습니다.

>>를 사용하여 파일에 추가하기

>> 연산자는 명령의 표준 출력을 지정된 파일로 리디렉션하여 새 내용을 파일의 끝에 추가합니다. 파일이 존재하지 않으면 생성됩니다.

current_datetime.txt 파일에 더 많은 내용을 추가해 보겠습니다.

  1. current_datetime.txt에 다른 텍스트 줄을 추가합니다.

    echo "This line is appended." >> current_datetime.txt
  2. 파일의 내용을 봅니다.

    cat current_datetime.txt
    This is a new line of text.
    This line is appended.

    새 줄이 기존 내용 뒤에 추가된 것을 확인합니다.

  3. 현재 날짜와 시간을 다시 추가해 보겠습니다.

    date >> current_datetime.txt
  4. 파일 내용을 다시 한 번 확인합니다.

    cat current_datetime.txt
    This is a new line of text.
    This line is appended.
    Mon Day XX HH:MM:SS AM/PM TimeZone YYYY

    날짜와 시간이 이제 파일의 끝에 있습니다.

다른 명령의 출력 리디렉션

거의 모든 명령의 출력을 리디렉션할 수 있습니다. lswc의 출력을 리디렉션해 보겠습니다.

  1. ls -l (long listing format) 의 출력을 file_list.txt라는 파일로 리디렉션합니다.

    ls -l > file_list.txt
  2. file_list.txt의 내용을 검사합니다.

    cat file_list.txt
    total 4
    -rw-r--r-- 1 labex labex 80 Jun  4 07:04 current_datetime.txt
    -rw-r--r-- 1 labex labex  0 Jun  4 07:04 file_list.txt

    이 파일에는 현재 디렉토리의 파일에 대한 자세한 목록이 포함되어 있습니다. 정확한 파일 크기와 타임스탬프는 명령을 실행하는 시점에 따라 달라집니다.

  3. 이제 wc -l을 사용하여 file_list.txt의 줄 수를 계산하고 해당 수를 line_count.txt라는 다른 파일로 리디렉션합니다.

    wc -l file_list.txt > line_count.txt
  4. line_count.txt의 내용을 봅니다.

    cat line_count.txt
    3 file_list.txt

    출력은 file_list.txt에 3 개의 줄 ( total 줄과 두 개의 파일 항목 포함) 이 있음을 보여줍니다.

이것으로 표준 출력 리디렉션의 첫 번째 부분이 마무리됩니다. >를 사용하여 파일을 생성하고 덮어쓰는 방법과 >>를 사용하여 파일에 추가하는 방법을 배웠습니다.

표준 오류 리디렉션 및 스트림 결합

이 단계에서는 표준 오류 (stderr) 를 리디렉션하는 방법과 stdoutstderr을 단일 스트림으로 결합하는 방법을 배우게 됩니다. 이는 명령에서 생성된 오류 메시지를 관리하는 데 매우 중요하며, 필요에 따라 오류 메시지를 로깅하거나 폐기할 수 있도록 해줍니다.

stderr은 파일 디스크립터 2임을 기억하십시오. 2>를 사용하여 오류 메시지를 리디렉션합니다.

표준 오류를 파일로 리디렉션하기

때로는 명령이 표준 출력과 별도로 캡처하려는 오류 메시지를 생성합니다.

  1. ~/project 디렉토리에 있는지 확인합니다.

    cd ~/project
    [labex@host project]$
  2. 존재하지 않는 디렉토리의 내용을 나열해 보겠습니다. 이렇게 하면 오류 메시지가 생성됩니다.

    ls non_existent_directory
    ls: cannot access 'non_existent_directory': No such file or directory

    터미널에 직접 출력된 오류 메시지를 볼 수 있습니다.

  3. 이제 이 오류 메시지를 errors.log라는 파일로 리디렉션해 보겠습니다.

    ls non_existent_directory 2> errors.log

    이번에는 터미널에서 오류 메시지가 표시되지 않습니다.

  4. errors.log의 내용을 확인합니다.

    cat errors.log
    ls: cannot access 'non_existent_directory': No such file or directory

    오류 메시지가 이제 파일에 저장됩니다.

표준 오류 폐기하기

종종, 신경 쓰지 않는 시끄러운 오류 메시지를 생성하는 명령을 실행해야 할 수 있습니다. 이러한 경우 stderr/dev/null로 리디렉션할 수 있습니다. /dev/null은 모든 데이터를 폐기하는 특수 장치 파일입니다.

  1. 존재하지 않는 디렉토리를 사용하여 ls 명령을 다시 시도하지만 이번에는 오류를 폐기합니다.

    ls non_existent_directory 2> /dev/null

    터미널에 출력이 표시되지 않으며, 오류 메시지가 파일에 저장되지 않습니다.

표준 출력 및 표준 오류 결합

stdoutstderr을 동일한 파일에 캡처하려는 경우가 있습니다. 이는 몇 가지 방법으로 수행할 수 있습니다.

방법 1: > file 2>&1

이 방법은 stdout을 파일로 리디렉션한 다음 stderrstdout과 동일한 위치로 리디렉션합니다. 순서 2>&1이 중요합니다. 이는 "파일 디스크립터 2(stderr) 를 파일 디스크립터 1(stdout) 과 동일한 위치로 리디렉션"을 의미합니다.

  1. 표준 출력과 표준 오류를 모두 생성하는 명령을 만들어 보겠습니다. find를 사용하여 권한이 있는 디렉토리와 권한이 없는 디렉토리에서 파일을 검색합니다.

    find ~/project /root -name "current_datetime.txt" > combined_output.log 2>&1

    여기서 find ~/project -name "current_datetime.txt"stdout(찾은 경우) 을 생성하고, find /root -name "current_datetime.txt"는 권한 문제로 인해 stderr을 생성할 가능성이 높습니다.

  2. combined_output.log 파일을 검사합니다.

    cat combined_output.log
    /home/labex/project/current_datetime.txt
    find: ‘/root’: Permission denied

    성공적인 출력 (파일 경로) 과 오류 메시지가 모두 동일한 파일에 캡처된 것을 볼 수 있습니다.

방법 2: &> file (Bash 전용)

Bash 는 stdoutstderr을 파일로 결합하기 위한 단축키 &>를 제공합니다. 이는 > file 2>&1과 동일합니다.

  1. &> 단축키를 사용하여 동일한 find 명령을 시도해 보겠습니다.

    find ~/project /root -name "file_list.txt" &> combined_output_shorthand.log
  2. combined_output_shorthand.log의 내용을 확인합니다.

    cat combined_output_shorthand.log
    /home/labex/project/file_list.txt
    find: ‘/root’: Permission denied

    결과는 이전 방법과 동일하며, &>의 편리함을 보여줍니다.

결합된 스트림 추가

stdout과 마찬가지로 >> file 2>&1 또는 &>> file을 사용하여 결합된 stdoutstderr을 파일에 추가할 수 있습니다.

  1. combined_output.log에 더 많은 출력과 오류를 추가합니다.

    find ~/project /root -name "line_count.txt" >> combined_output.log 2>&1
  2. 업데이트된 combined_output.log를 봅니다.

    cat combined_output.log
    /home/labex/project/current_datetime.txt
    find: ‘/root’: Permission denied
    /home/labex/project/line_count.txt
    find: ‘/root’: Permission denied

    새로운 출력과 오류가 기존 내용에 추가됩니다.

이제 표준 오류를 리디렉션하는 방법과 표준 출력 및 표준 오류를 단일 파일로 결합하는 방법을 성공적으로 배웠습니다. 이 지식은 강력한 스크립팅 및 시스템 관리 작업에 필수적입니다.

명령 파이프라인 구성 및 이해

이 단계에서는 여러 명령을 함께 연결할 수 있는 Linux 셸의 강력한 기능인 명령 파이프라인에 대해 배우게 됩니다. 한 명령의 출력은 다음 명령의 입력이 되어 복잡한 데이터 처리 및 조작을 가능하게 합니다.

파이프 연산자 | (세로 막대) 는 파이프라인에서 명령을 연결하는 데 사용됩니다. 왼쪽의 명령의 표준 출력 (stdout) 을 오른쪽의 명령의 표준 입력 (stdin) 으로 리디렉션합니다.

기본 파이프라인

파이프라인이 어떻게 작동하는지 이해하기 위해 간단한 예시부터 시작해 보겠습니다.

  1. ~/project 디렉토리에 있는지 확인합니다.

    cd ~/project
    [labex@host project]$
  2. 먼저, 현재 디렉토리의 파일을 나열해 보겠습니다.

    ls
    combined_output.log
    combined_output_shorthand.log
    current_datetime.txt
    errors.log
    file_list.txt
    line_count.txt
  3. 이제 ls의 출력을 wc -l 명령으로 파이프하여 받는 줄 수를 계산합니다.

    ls | wc -l
    6

    ls 명령은 파일을 나열하고, 해당 출력 (각 파일 이름이 새 줄에 있음) 은 wc -l에 입력으로 제공되어 이러한 줄을 계산하여 현재 위치에 있는 파일/디렉토리의 수를 효과적으로 알려줍니다.

  4. ls -lless로 파이프하여 페이지 단위로 출력하는 또 다른 일반적인 사용 사례를 시도해 보겠습니다. 이는 명령이 단일 화면에 맞추기에는 너무 많은 출력을 생성할 때 유용합니다.

    ls -l /usr/bin | less
    total 200000
    -rwxr-xr-x 1 root root 12345 Jan XX HH:MM [filename]
    ... (press 'q' to quit less) ...

    ls -l /usr/bin 명령은 /usr/bin의 모든 파일을 자세한 정보와 함께 나열합니다. 이 출력은 less로 전송되어 페이지별로 스크롤할 수 있습니다. q를 눌러 less를 종료합니다.

grep을 사용하여 출력 필터링

grep 명령은 특정 패턴과 일치하는 줄을 필터링하기 위해 파이프라인에서 자주 사용됩니다.

  1. ps aux를 사용하여 시스템에서 실행 중인 모든 프로세스를 나열한 다음 bash와 관련된 프로세스를 필터링해 보겠습니다.

    ps aux | grep bash
    labex     1234  0.0  0.1  12345  6789 ?        Ss   HH:MM   0:00 /usr/bin/bash
    labex     5678  0.0  0.0   9876  5432 pts/0    S+   HH:MM   0:00 grep bash

    ps aux 명령은 실행 중인 모든 프로세스를 나열합니다. 해당 출력은 grep bash로 파이프되어 "bash"라는 단어가 포함된 줄만 표시합니다. 현재 bash 셸과 grep 명령 자체에 대한 두 줄이 표시될 수 있습니다.

  2. 출력에서 grep 명령을 제외하려면 grep -v (반전 일치) 를 사용하거나 패턴을 구체화할 수 있습니다. grep -v grep을 시도해 보겠습니다.

    ps aux | grep bash | grep -v grep
    labex     1234  0.0  0.1  12345  6789 ?        Ss   HH:MM   0:00 /usr/bin/bash

    이제 실제 bash 프로세스만 표시됩니다.

sortuniq 사용

sort는 텍스트 줄을 정렬하는 데 사용되고, uniq는 반복된 줄을 보고하거나 생략하는 데 사용됩니다. 이들은 종종 함께 사용됩니다.

  1. 정렬되지 않은 반복된 단어가 있는 파일을 만들어 보겠습니다.

    echo -e "apple\nbanana\napple\norange\nbanana" > fruits.txt
  2. fruits.txt의 내용을 봅니다.

    cat fruits.txt
    apple
    banana
    apple
    orange
    banana
  3. 이제 fruits.txt의 줄을 정렬해 보겠습니다.

    cat fruits.txt | sort
    apple
    apple
    banana
    banana
    orange
  4. 고유한 정렬된 단어만 얻으려면 sort의 출력을 uniq로 파이프합니다.

    cat fruits.txt | sort | uniq
    apple
    banana
    orange

    이 파이프라인은 먼저 줄을 정렬한 다음 uniq가 인접한 중복 줄을 제거합니다.

tee 명령

tee 명령은 파이프라인에서 특별합니다. 표준 입력을 읽어 표준 출력으로 쓰고 동시에 하나 이상의 파일로 씁니다. 파이프에서 "T"자형 연결과 같아서 데이터가 두 방향으로 흐르도록 합니다.

  1. 파일을 나열하고 출력을 ls_output.txt에 저장하는 동시에 화면에 표시해 보겠습니다.

    ls -l | tee ls_output.txt
    total 24
    -rw-r--r-- 1 labex labex 123 Jan XX HH:MM combined_output.log
    -rw-r--r-- 1 labex labex 123 Jan XX HH:MM combined_output_shorthand.log
    -rw-r--r-- 1 labex labex 123 Jan XX HH:MM current_datetime.txt
    -rw-r--r-- 1 labex labex 123 Jan XX HH:MM errors.log
    -rw-r--r-- 1 labex labex 123 Jan XX HH:MM file_list.txt
    -rw-r--r-- 1 labex labex 123 Jan XX HH:MM fruits.txt
    -rw-r--r-- 1 labex labex 123 Jan XX HH:MM line_count.txt
    -rw-r--r-- 1 labex labex 0 Jan XX HH:MM ls_output.txt

    터미널에 ls -l 출력이 표시되고, 동일한 내용으로 ls_output.txt라는 파일이 생성됩니다.

  2. ls_output.txt의 내용을 확인합니다.

    cat ls_output.txt
    total 24
    -rw-r--r-- 1 labex labex 123 Jan XX HH:MM combined_output.log
    ... (same as above) ...
  3. tee -a를 사용하여 출력을 파일에 추가할 수도 있습니다.

    echo "--- End of list ---" | tee -a ls_output.txt
    --- End of list ---

    "--- End of list ---" 줄이 터미널에 인쇄되고 ls_output.txt에 추가됩니다.

  4. 업데이트된 ls_output.txt를 확인합니다.

    cat ls_output.txt
    total 24
    ... (previous ls -l output) ...
    --- End of list ---

파이프라인은 매우 다재다능하며 많은 강력한 셸 스크립트와 한 줄 명령의 중추를 형성합니다. 간단한 명령을 결합하여 복잡한 데이터 변환을 효율적으로 수행할 수 있습니다.

Vim 기본 사용법으로 텍스트 파일 편집

이 단계에서는 Linux 환경에서 강력하고 널리 사용되는 텍스트 편집기인 Vim 의 기본적인 작업을 배우게 됩니다. Vim 은 여러 모드로 작동하며, 이는 초보자에게는 다소 어려울 수 있지만, 기본 사항을 숙달하면 생산성이 크게 향상됩니다.

Vim 은 모드 편집기이므로, 다른 작업에 대해 다른 모드를 가지고 있습니다.

  • Normal Mode (명령 모드): Vim 을 열 때 기본 모드입니다. 이 모드에서는 키 입력이 명령으로 해석됩니다 (예: 커서 이동, 텍스트 삭제, 텍스트 복사).
  • Insert Mode: 이 모드에서는 입력하는 모든 내용이 파일에 삽입됩니다. i (커서에서 삽입), a (커서 뒤에 추가), o (아래에 새 줄 열기) 등을 눌러 Normal Mode 에서 Insert Mode 로 들어갑니다. Normal Mode 로 돌아가려면 Esc를 누릅니다.
  • Visual Mode: 이 모드를 사용하면 복사, 잘라내기 또는 삭제와 같은 작업에 대해 텍스트 블록을 선택할 수 있습니다. v (문자 단위), Shift+V (줄 단위) 또는 Ctrl+V (블록 단위) 를 눌러 Normal Mode 에서 Visual Mode 로 들어갑니다. Esc를 눌러 Normal Mode 로 돌아갑니다.
  • Command-Line Mode (Ex Mode): 이 모드는 저장 (:w), 종료 (:q) 또는 검색 (/) 과 같이 콜론 (:) 으로 시작하는 명령을 실행하는 데 사용됩니다. Normal Mode 에서 :를 눌러 이 모드로 들어갑니다.

열기 및 기본 탐색

  1. ~/project 디렉토리에 있는지 확인합니다.

    cd ~/project
    [labex@host project]$
  2. vim을 사용하여 my_document.txt라는 새 파일을 엽니다.

    vim my_document.txt

    터미널에 이제 Vim 인터페이스가 표시됩니다. Normal Mode에 있습니다.

  3. Normal Mode 에서는 화살표 키 또는 h (왼쪽), j (아래), k (위), l (오른쪽) 을 사용하여 탐색할 수 있습니다. 파일이 비어 있으므로 아직 탐색할 내용이 많지 않습니다.

Insert Mode: 텍스트 추가

  1. 입력을 시작하려면 Insert Mode로 들어가야 합니다. i (삽입) 를 누릅니다.
    터미널 왼쪽 하단에 -- INSERT --가 표시되어 Insert Mode 에 있음을 나타냅니다.

  2. 다음 줄을 입력합니다.

    This is the first line.
    This is the second line.
    This is the third line.
  3. Insert Mode 를 종료하고 Normal Mode 로 돌아가려면 Esc 키를 누릅니다.
    -- INSERT -- 표시기가 사라져야 합니다.

저장 및 종료

  1. Normal Mode 에서 파일을 저장하려면 :w를 입력하고 Enter를 누릅니다.

    :w

    저장이 확인되면서 하단에 my_document.txt [New] 3L, 60B written이 표시됩니다.

  2. Vim 을 종료하려면 :q를 입력하고 Enter를 누릅니다.

    :q

    셸 프롬프트로 돌아갑니다.

  3. cat을 사용하여 my_document.txt의 내용을 확인합니다.

    cat my_document.txt
    This is the first line.
    This is the second line.
    This is the third line.

기존 파일 편집

  1. my_document.txt를 다시 엽니다.

    vim my_document.txt
  2. Normal Mode 에서 커서를 두 번째 줄의 시작 부분으로 이동합니다 (j 또는 화살표 키 사용).

  3. Shift+V를 눌러 Visual Line Mode로 들어갑니다. 전체 두 번째 줄이 강조 표시됩니다.

  4. y를 눌러 선택한 줄을 "yank"(복사) 합니다.

  5. 커서를 세 번째 줄의 끝으로 이동합니다 (j 또는 화살표 키 사용).

  6. p를 눌러 yank 된 줄을 현재 줄 아래에 "put"(붙여넣기) 합니다.
    두 번째 줄이 이제 네 번째 줄로 다시 나타납니다.

  7. 이제 줄을 삭제해 보겠습니다. 커서를 네 번째 줄 (방금 붙여넣은 줄) 로 이동합니다.

  8. dd (두 번 d) 를 눌러 전체 줄을 삭제합니다.

  9. 마지막 변경 사항을 실행 취소하려면 u를 누릅니다. 삭제된 줄이 다시 나타납니다.

  10. 한 번의 명령으로 저장하고 종료하려면 :wq를 입력하고 Enter를 누릅니다.

    :wq
  11. my_document.txt의 내용을 다시 확인합니다.

    cat my_document.txt
    This is the first line.
    This is the second line.
    This is the third line.
    This is the second line.

    이제 파일에 두 번째 줄이 중복되어 네 줄이 있어야 합니다.

변경 사항 폐기

때로는 변경 사항을 만들고 저장하지 않기로 결정할 수 있습니다.

  1. my_document.txt를 다시 엽니다.

    vim my_document.txt
  2. i를 눌러 Insert Mode 로 들어갑니다.

  3. 마지막에 새 줄을 추가합니다.

    This line should not be saved.
  4. Esc를 눌러 Normal Mode 로 돌아갑니다.

  5. :q를 사용하여 종료해 봅니다.

    :q

    Vim 은 E37: No write since last change (add ! to override)라는 경고를 표시합니다. 이는 저장되지 않은 변경 사항이 있음을 의미합니다.

  6. 저장하지 않고 종료하려면 :q!를 입력하고 Enter를 누릅니다.

    :q!

    셸 프롬프트로 돌아가고 변경 사항은 폐기됩니다.

  7. my_document.txt의 내용을 확인합니다.

    cat my_document.txt
    This is the first line.
    This is the second line.
    This is the third line.
    This is the second line.

    마지막으로 추가한 줄은 없어야 합니다.

이제 Vim 의 가장 기본적인 작업 (파일 열기, 텍스트 삽입, 탐색, 저장, 종료 및 변경 사항 폐기) 을 다루었습니다. 이는 Vim 을 시작하는 데 필요한 필수 기술입니다.

Shell 변수 및 Alias 설정 및 사용

이 단계에서는 셸 변수 및 별칭을 구성하고 사용하는 방법을 배우게 됩니다. 이는 셸 환경을 사용자 정의하고, 데이터를 저장하며, 자주 사용되는 명령에 대한 바로 가기를 만들어 명령줄 효율성을 크게 향상시키는 강력한 기능입니다.

셸 변수

셸 변수는 데이터를 저장하는 명명된 엔터티입니다. 셸 또는 셸 내에서 실행되는 프로그램에서 사용할 수 있는 숫자, 텍스트 또는 기타 데이터를 저장할 수 있습니다.

  1. ~/project 디렉토리에 있는지 확인합니다.

    cd ~/project
    [labex@host project]$
  2. 로컬 변수 설정: MY_MESSAGE라는 간단한 변수를 만들어 보겠습니다.

    MY_MESSAGE="Hello, LabEx!"

    = 기호 주위에 공백이 없음에 유의하십시오.

  3. 변수 액세스: 변수의 값에 액세스하려면 이름 앞에 $ 기호를 붙입니다.

    echo $MY_MESSAGE
    Hello, LabEx!
  4. 중괄호를 사용한 변수 확장: 때로는 특히 다른 문자가 뒤에 오는 경우 변수 이름을 명확하게 구분해야 합니다. 이를 위해 중괄호 {}를 사용합니다.

    echo "The message is: ${MY_MESSAGE}."
    The message is: Hello, LabEx!.

    중괄호를 생략하면 셸이 MY_MESSAGE.를 변수 이름으로 해석할 수 있으며, 이는 존재하지 않습니다.

  5. 설정된 모든 변수 나열: set 명령을 사용하여 현재 설정된 모든 셸 변수 및 함수를 나열할 수 있습니다. 이 출력은 매우 길 수 있으므로 종종 less로 파이프됩니다.

    set | less
    BASH=/usr/bin/bash
    BASHOPTS=checkwinsize:cmdhist:complete_fullquote:expand_aliases:extglob:extquote:force_fignore:histappend:interactive_comments:progcomp:promptvars:sourcepath
    ... (press 'q' to quit less) ...

    q를 눌러 less를 종료합니다.

  6. 변수 해제: 변수를 제거하려면 unset 명령을 사용합니다.

    unset MY_MESSAGE
  7. 변수가 더 이상 설정되지 않았는지 확인합니다.

    echo $MY_MESSAGE

    빈 줄이 표시되어 변수가 설정되지 않았음을 나타냅니다.

환경 변수

환경 변수는 자식 프로세스에 의해 상속되는 특수한 유형의 셸 변수입니다. 즉, 현재 셸에서 시작된 모든 프로그램 또는 스크립트는 이러한 변수에 액세스할 수 있습니다. 일반적으로 응용 프로그램의 환경을 구성하는 데 사용됩니다.

  1. 환경 변수 설정: export 명령을 사용하여 변수를 환경 변수로 만듭니다.

    export EDITOR=vim

    이렇게 하면 많은 프로그램에서 선호하는 텍스트 편집기를 결정하는 데 사용하는 EDITOR 환경 변수가 설정됩니다.

  2. 환경 변수 나열: env 명령을 사용하여 환경 변수만 나열합니다.

    env | grep EDITOR
    EDITOR=vim
  3. 변수 내보내기 해제: export -n을 사용하여 변수를 해제하지 않고 내보내기를 해제할 수 있습니다. 이렇게 하면 다시 로컬 변수가 됩니다.

    export -n EDITOR
  4. 더 이상 환경 변수가 아닌지 확인합니다.

    env | grep EDITOR

    출력이 없어야 합니다. 그러나 여전히 로컬 변수입니다.

    echo $EDITOR
    vim
  5. 완전히 제거하려면 unset을 사용합니다.

    unset EDITOR

셸 별칭

별칭은 명령에 대한 바로 가기입니다. 더 긴 명령 또는 일련의 명령으로 확장되는 새 명령을 정의할 수 있습니다. 이는 많은 옵션이 있는 자주 사용되는 명령에 매우 유용합니다.

  1. 별칭 만들기: ls -l에 대한 별칭을 만들어 더 짧게 만들어 보겠습니다.

    alias ll='ls -l'

    단일 문자열로 처리되도록 명령 주위에 작은 따옴표가 있는지 확인합니다.

  2. 별칭 사용: 이제 ls -l 대신 ll을 입력할 수 있습니다.

    ll
    total 24
    -rw-r--r-- 1 labex labex 123 Jan XX HH:MM combined_output.log
    ... (output of ls -l) ...
  3. 별칭 나열: 정의된 모든 별칭을 보려면 인수가 없는 alias 명령을 사용합니다.

    alias
    alias ll='ls -l'

    셸 구성에 따라 다른 기본 별칭이 표시될 수 있습니다.

  4. 더 복잡한 별칭 만들기: 인수 또는 여러 명령이 있는 명령에 대한 별칭도 만들 수 있습니다.

    alias myip='ip a | grep "inet " | grep -v "127.0.0.1" | awk "{print \$2}" | cut -d/ -f1'

    여기서 myip는 기본 IP 주소를 표시합니다. 별칭이 정의될 때 셸에서 해석되지 않고 awk로 전달되도록 $ 기호를 이스케이프하려면 \$2에 유의하십시오.

  5. myip 별칭을 테스트합니다.

    myip
    172.17.0.2

    (IP 주소는 다를 수 있습니다)

  6. 별칭 해제: 별칭을 제거하려면 unalias 명령을 사용합니다.

    unalias ll
  7. 별칭이 제거되었는지 확인합니다.

    alias
    alias myip='ip a | grep "inet " | grep -v "127.0.0.1" | awk "{print \$2}" | cut -d/ -f1'

    ll이 더 이상 목록에 없어야 합니다.

셸 변수 및 별칭은 임시적이며 터미널 세션을 닫으면 손실됩니다. 영구적으로 만들려면 셸의 구성 파일 (예: ~/.bashrc 또는 ~/.profile) 에 추가해야 하며, 이는 고급 주제에서 다룹니다.

요약

이 랩에서는 텍스트 파일 및 셸 환경을 관리하는 데 필수적인 기본적인 Linux 명령줄 기술을 배웠습니다. 먼저, 파일 덮어쓰기에 >를 사용하고 내용 추가에 >>를 사용하여 출력 리디렉션을 숙달하여 로깅 또는 추가 처리를 위해 명령 결과를 캡처할 수 있었습니다. 또한 표준 오류 (2>) 를 리디렉션하고 표준 출력과 오류를 결합 (&>) 하여 모든 명령 출력을 효과적으로 관리하는 방법을 살펴보았습니다.

또한 | 연산자를 사용하여 명령 파이프라인을 구성하고 이해하는 능력을 습득하여 명령을 연결하고 데이터를 순차적으로 처리할 수 있었습니다. Vim 을 사용한 기본적인 텍스트 편집을 소개받았으며, 파일 삽입, 저장 및 종료에 필요한 명령을 다루었습니다. 마지막으로, 데이터를 저장하고 자주 사용되는 명령을 단순화하기 위해 별칭을 생성하여 명령줄 효율성과 사용자 정의를 향상시키는 셸 변수를 구성하고 사용하는 방법을 배웠습니다.