소개
이 랩에서는 Linux 에서 텍스트 파일을 관리하고 셸 환경을 사용자 정의하는 데 필요한 필수 기술을 습득하게 됩니다. 표준 출력 및 오류 스트림을 파일로 리디렉션하고, 다양한 스트림을 결합하며, 작업을 자동화하기 위한 강력한 명령 파이프라인을 구성하는 방법을 배우게 됩니다.
또한, 널리 사용되는 강력한 텍스트 편집기인 Vim 을 사용하여 텍스트 파일을 편집하는 기본 사항을 탐구할 것입니다. 마지막으로, 명령줄 경험을 개인화하고 생산성을 향상시키기 위해 셸 변수와 별칭을 구성하고 활용하는 방법을 배우게 됩니다.
표준 출력을 파일로 리디렉션
이 단계에서는 명령의 표준 출력을 파일로 리디렉션하는 방법을 배우게 됩니다. 이는 Linux 시스템 관리의 기본적인 기술로, 나중에 분석, 로깅 또는 추가 처리를 위해 명령 결과를 캡처할 수 있게 해줍니다.
셸은 특수 파일 디스크립터 (file descriptor) 를 사용하여 입력 및 출력을 관리합니다. 가장 일반적인 것은 다음과 같습니다.
0: 표준 입력 (stdin) - 일반적으로 키보드에서 입력됩니다.1: 표준 출력 (stdout) - 일반적으로 터미널 화면으로 출력됩니다.2: 표준 오류 (stderr) - 일반적으로 오류 메시지를 위해 터미널 화면으로 출력됩니다.
이 섹션에서는 stdout 리디렉션에 중점을 둡니다.
>를 사용하여 파일 덮어쓰기
> 연산자는 명령의 표준 출력을 지정된 파일로 리디렉션합니다. 파일이 존재하지 않으면 생성됩니다. 파일이 이미 존재하면 해당 내용이 덮어쓰여집니다.
현재 날짜와 시간을 사용하여 간단한 텍스트 파일을 만들어 보겠습니다.
먼저, 홈 디렉토리의
project폴더에 있는지 확인합니다.cd ~/project[labex@host project]$이제
date명령을 사용하고 출력을current_datetime.txt라는 새 파일로 리디렉션합니다.date > current_datetime.txt이 명령은
date를 실행하지만, 날짜를 터미널에 출력하는 대신current_datetime.txt에 저장합니다.cat명령을 사용하여 파일의 내용을 확인합니다.cat current_datetime.txtMon Day XX HH:MM:SS AM/PM TimeZone YYYY출력은 위 예시와 유사하게 현재 날짜와 시간을 표시합니다.
이제
echo의 출력을 동일한 파일로 리디렉션해 보겠습니다. 이렇게 하면 이전 내용이 덮어쓰여집니다.echo "This is a new line of text." > current_datetime.txt파일 내용을 다시 확인합니다.
cat current_datetime.txtThis is a new line of text.보시다시피, 원래의 날짜와 시간은 새로운 텍스트 줄로 대체되었습니다.
>>를 사용하여 파일에 추가하기
>> 연산자는 명령의 표준 출력을 지정된 파일로 리디렉션하여 새 내용을 파일의 끝에 추가합니다. 파일이 존재하지 않으면 생성됩니다.
current_datetime.txt 파일에 더 많은 내용을 추가해 보겠습니다.
current_datetime.txt에 다른 텍스트 줄을 추가합니다.echo "This line is appended." >> current_datetime.txt파일의 내용을 봅니다.
cat current_datetime.txtThis is a new line of text. This line is appended.새 줄이 기존 내용 뒤에 추가된 것을 확인합니다.
현재 날짜와 시간을 다시 추가해 보겠습니다.
date >> current_datetime.txt파일 내용을 다시 한 번 확인합니다.
cat current_datetime.txtThis is a new line of text. This line is appended. Mon Day XX HH:MM:SS AM/PM TimeZone YYYY날짜와 시간이 이제 파일의 끝에 있습니다.
다른 명령의 출력 리디렉션
거의 모든 명령의 출력을 리디렉션할 수 있습니다. ls와 wc의 출력을 리디렉션해 보겠습니다.
ls -l(long listing format) 의 출력을file_list.txt라는 파일로 리디렉션합니다.ls -l > file_list.txtfile_list.txt의 내용을 검사합니다.cat file_list.txttotal 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이 파일에는 현재 디렉토리의 파일에 대한 자세한 목록이 포함되어 있습니다. 정확한 파일 크기와 타임스탬프는 명령을 실행하는 시점에 따라 달라집니다.
이제
wc -l을 사용하여file_list.txt의 줄 수를 계산하고 해당 수를line_count.txt라는 다른 파일로 리디렉션합니다.wc -l file_list.txt > line_count.txtline_count.txt의 내용을 봅니다.cat line_count.txt3 file_list.txt출력은
file_list.txt에 3 개의 줄 (total줄과 두 개의 파일 항목 포함) 이 있음을 보여줍니다.
이것으로 표준 출력 리디렉션의 첫 번째 부분이 마무리됩니다. >를 사용하여 파일을 생성하고 덮어쓰는 방법과 >>를 사용하여 파일에 추가하는 방법을 배웠습니다.
표준 오류 리디렉션 및 스트림 결합
이 단계에서는 표준 오류 (stderr) 를 리디렉션하는 방법과 stdout 및 stderr을 단일 스트림으로 결합하는 방법을 배우게 됩니다. 이는 명령에서 생성된 오류 메시지를 관리하는 데 매우 중요하며, 필요에 따라 오류 메시지를 로깅하거나 폐기할 수 있도록 해줍니다.
stderr은 파일 디스크립터 2임을 기억하십시오. 2>를 사용하여 오류 메시지를 리디렉션합니다.
표준 오류를 파일로 리디렉션하기
때로는 명령이 표준 출력과 별도로 캡처하려는 오류 메시지를 생성합니다.
~/project디렉토리에 있는지 확인합니다.cd ~/project[labex@host project]$존재하지 않는 디렉토리의 내용을 나열해 보겠습니다. 이렇게 하면 오류 메시지가 생성됩니다.
ls non_existent_directoryls: cannot access 'non_existent_directory': No such file or directory터미널에 직접 출력된 오류 메시지를 볼 수 있습니다.
이제 이 오류 메시지를
errors.log라는 파일로 리디렉션해 보겠습니다.ls non_existent_directory 2> errors.log이번에는 터미널에서 오류 메시지가 표시되지 않습니다.
errors.log의 내용을 확인합니다.cat errors.logls: cannot access 'non_existent_directory': No such file or directory오류 메시지가 이제 파일에 저장됩니다.
표준 오류 폐기하기
종종, 신경 쓰지 않는 시끄러운 오류 메시지를 생성하는 명령을 실행해야 할 수 있습니다. 이러한 경우 stderr을 /dev/null로 리디렉션할 수 있습니다. /dev/null은 모든 데이터를 폐기하는 특수 장치 파일입니다.
존재하지 않는 디렉토리를 사용하여
ls명령을 다시 시도하지만 이번에는 오류를 폐기합니다.ls non_existent_directory 2> /dev/null터미널에 출력이 표시되지 않으며, 오류 메시지가 파일에 저장되지 않습니다.
표준 출력 및 표준 오류 결합
stdout과 stderr을 동일한 파일에 캡처하려는 경우가 있습니다. 이는 몇 가지 방법으로 수행할 수 있습니다.
방법 1: > file 2>&1
이 방법은 stdout을 파일로 리디렉션한 다음 stderr을 stdout과 동일한 위치로 리디렉션합니다. 순서 2>&1이 중요합니다. 이는 "파일 디스크립터 2(stderr) 를 파일 디스크립터 1(stdout) 과 동일한 위치로 리디렉션"을 의미합니다.
표준 출력과 표준 오류를 모두 생성하는 명령을 만들어 보겠습니다.
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을 생성할 가능성이 높습니다.combined_output.log파일을 검사합니다.cat combined_output.log/home/labex/project/current_datetime.txt find: ‘/root’: Permission denied성공적인 출력 (파일 경로) 과 오류 메시지가 모두 동일한 파일에 캡처된 것을 볼 수 있습니다.
방법 2: &> file (Bash 전용)
Bash 는 stdout과 stderr을 파일로 결합하기 위한 단축키 &>를 제공합니다. 이는 > file 2>&1과 동일합니다.
&>단축키를 사용하여 동일한find명령을 시도해 보겠습니다.find ~/project /root -name "file_list.txt" &> combined_output_shorthand.logcombined_output_shorthand.log의 내용을 확인합니다.cat combined_output_shorthand.log/home/labex/project/file_list.txt find: ‘/root’: Permission denied결과는 이전 방법과 동일하며,
&>의 편리함을 보여줍니다.
결합된 스트림 추가
stdout과 마찬가지로 >> file 2>&1 또는 &>> file을 사용하여 결합된 stdout과 stderr을 파일에 추가할 수 있습니다.
combined_output.log에 더 많은 출력과 오류를 추가합니다.find ~/project /root -name "line_count.txt" >> combined_output.log 2>&1업데이트된
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) 으로 리디렉션합니다.
기본 파이프라인
파이프라인이 어떻게 작동하는지 이해하기 위해 간단한 예시부터 시작해 보겠습니다.
~/project디렉토리에 있는지 확인합니다.cd ~/project[labex@host project]$먼저, 현재 디렉토리의 파일을 나열해 보겠습니다.
lscombined_output.log combined_output_shorthand.log current_datetime.txt errors.log file_list.txt line_count.txt이제
ls의 출력을wc -l명령으로 파이프하여 받는 줄 수를 계산합니다.ls | wc -l6ls명령은 파일을 나열하고, 해당 출력 (각 파일 이름이 새 줄에 있음) 은wc -l에 입력으로 제공되어 이러한 줄을 계산하여 현재 위치에 있는 파일/디렉토리의 수를 효과적으로 알려줍니다.ls -l을less로 파이프하여 페이지 단위로 출력하는 또 다른 일반적인 사용 사례를 시도해 보겠습니다. 이는 명령이 단일 화면에 맞추기에는 너무 많은 출력을 생성할 때 유용합니다.ls -l /usr/bin | lesstotal 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 명령은 특정 패턴과 일치하는 줄을 필터링하기 위해 파이프라인에서 자주 사용됩니다.
ps aux를 사용하여 시스템에서 실행 중인 모든 프로세스를 나열한 다음bash와 관련된 프로세스를 필터링해 보겠습니다.ps aux | grep bashlabex 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 bashps aux명령은 실행 중인 모든 프로세스를 나열합니다. 해당 출력은grep bash로 파이프되어 "bash"라는 단어가 포함된 줄만 표시합니다. 현재 bash 셸과grep명령 자체에 대한 두 줄이 표시될 수 있습니다.출력에서
grep명령을 제외하려면grep -v(반전 일치) 를 사용하거나 패턴을 구체화할 수 있습니다.grep -v grep을 시도해 보겠습니다.ps aux | grep bash | grep -v greplabex 1234 0.0 0.1 12345 6789 ? Ss HH:MM 0:00 /usr/bin/bash이제 실제 bash 프로세스만 표시됩니다.
sort 및 uniq 사용
sort는 텍스트 줄을 정렬하는 데 사용되고, uniq는 반복된 줄을 보고하거나 생략하는 데 사용됩니다. 이들은 종종 함께 사용됩니다.
정렬되지 않은 반복된 단어가 있는 파일을 만들어 보겠습니다.
echo -e "apple\nbanana\napple\norange\nbanana" > fruits.txtfruits.txt의 내용을 봅니다.cat fruits.txtapple banana apple orange banana이제
fruits.txt의 줄을 정렬해 보겠습니다.cat fruits.txt | sortapple apple banana banana orange고유한 정렬된 단어만 얻으려면
sort의 출력을uniq로 파이프합니다.cat fruits.txt | sort | uniqapple banana orange이 파이프라인은 먼저 줄을 정렬한 다음
uniq가 인접한 중복 줄을 제거합니다.
tee 명령
tee 명령은 파이프라인에서 특별합니다. 표준 입력을 읽어 표준 출력으로 쓰고 동시에 하나 이상의 파일로 씁니다. 파이프에서 "T"자형 연결과 같아서 데이터가 두 방향으로 흐르도록 합니다.
파일을 나열하고 출력을
ls_output.txt에 저장하는 동시에 화면에 표시해 보겠습니다.ls -l | tee ls_output.txttotal 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라는 파일이 생성됩니다.ls_output.txt의 내용을 확인합니다.cat ls_output.txttotal 24 -rw-r--r-- 1 labex labex 123 Jan XX HH:MM combined_output.log ... (same as above) ...tee -a를 사용하여 출력을 파일에 추가할 수도 있습니다.echo "--- End of list ---" | tee -a ls_output.txt--- End of list ---"--- End of list ---" 줄이 터미널에 인쇄되고
ls_output.txt에 추가됩니다.업데이트된
ls_output.txt를 확인합니다.cat ls_output.txttotal 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 에서:를 눌러 이 모드로 들어갑니다.
열기 및 기본 탐색
~/project디렉토리에 있는지 확인합니다.cd ~/project[labex@host project]$vim을 사용하여my_document.txt라는 새 파일을 엽니다.vim my_document.txt터미널에 이제 Vim 인터페이스가 표시됩니다. Normal Mode에 있습니다.
Normal Mode 에서는 화살표 키 또는
h(왼쪽),j(아래),k(위),l(오른쪽) 을 사용하여 탐색할 수 있습니다. 파일이 비어 있으므로 아직 탐색할 내용이 많지 않습니다.
Insert Mode: 텍스트 추가
입력을 시작하려면 Insert Mode로 들어가야 합니다.
i(삽입) 를 누릅니다. 터미널 왼쪽 하단에-- INSERT --가 표시되어 Insert Mode 에 있음을 나타냅니다.다음 줄을 입력합니다.
This is the first line. This is the second line. This is the third line.Insert Mode 를 종료하고 Normal Mode 로 돌아가려면
Esc키를 누릅니다.-- INSERT --표시기가 사라져야 합니다.
저장 및 종료
Normal Mode 에서 파일을 저장하려면
:w를 입력하고Enter를 누릅니다.:w저장이 확인되면서 하단에
my_document.txt[New]3L, 60B written이 표시됩니다.Vim 을 종료하려면
:q를 입력하고Enter를 누릅니다.:q셸 프롬프트로 돌아갑니다.
cat을 사용하여my_document.txt의 내용을 확인합니다.cat my_document.txtThis is the first line. This is the second line. This is the third line.
기존 파일 편집
my_document.txt를 다시 엽니다.vim my_document.txtNormal Mode 에서 커서를 두 번째 줄의 시작 부분으로 이동합니다 (
j또는 화살표 키 사용).Shift+V를 눌러 Visual Line Mode로 들어갑니다. 전체 두 번째 줄이 강조 표시됩니다.y를 눌러 선택한 줄을 "yank"(복사) 합니다.커서를 세 번째 줄의 끝으로 이동합니다 (
j또는 화살표 키 사용).p를 눌러 yank 된 줄을 현재 줄 아래에 "put"(붙여넣기) 합니다. 두 번째 줄이 이제 네 번째 줄로 다시 나타납니다.이제 줄을 삭제해 보겠습니다. 커서를 네 번째 줄 (방금 붙여넣은 줄) 로 이동합니다.
dd(두 번d) 를 눌러 전체 줄을 삭제합니다.마지막 변경 사항을 실행 취소하려면
u를 누릅니다. 삭제된 줄이 다시 나타납니다.한 번의 명령으로 저장하고 종료하려면
:wq를 입력하고Enter를 누릅니다.:wqmy_document.txt의 내용을 다시 확인합니다.cat my_document.txtThis is the first line. This is the second line. This is the third line. This is the second line.이제 파일에 두 번째 줄이 중복되어 네 줄이 있어야 합니다.
변경 사항 폐기
때로는 변경 사항을 만들고 저장하지 않기로 결정할 수 있습니다.
my_document.txt를 다시 엽니다.vim my_document.txti를 눌러 Insert Mode 로 들어갑니다.마지막에 새 줄을 추가합니다.
This line should not be saved.Esc를 눌러 Normal Mode 로 돌아갑니다.:q를 사용하여 종료해 봅니다.:qVim 은
E37: No write since last change (add ! to override)라는 경고를 표시합니다. 이는 저장되지 않은 변경 사항이 있음을 의미합니다.저장하지 않고 종료하려면
:q!를 입력하고Enter를 누릅니다.:q!셸 프롬프트로 돌아가고 변경 사항은 폐기됩니다.
my_document.txt의 내용을 확인합니다.cat my_document.txtThis is the first line. This is the second line. This is the third line. This is the second line.마지막으로 추가한 줄은 없어야 합니다.
이제 Vim 의 가장 기본적인 작업 (파일 열기, 텍스트 삽입, 탐색, 저장, 종료 및 변경 사항 폐기) 을 다루었습니다. 이는 Vim 을 시작하는 데 필요한 필수 기술입니다.
Shell 변수 및 Alias 설정 및 사용
이 단계에서는 셸 변수 및 별칭을 구성하고 사용하는 방법을 배우게 됩니다. 이는 셸 환경을 사용자 정의하고, 데이터를 저장하며, 자주 사용되는 명령에 대한 바로 가기를 만들어 명령줄 효율성을 크게 향상시키는 강력한 기능입니다.
셸 변수
셸 변수는 데이터를 저장하는 명명된 엔터티입니다. 셸 또는 셸 내에서 실행되는 프로그램에서 사용할 수 있는 숫자, 텍스트 또는 기타 데이터를 저장할 수 있습니다.
~/project디렉토리에 있는지 확인합니다.cd ~/project[labex@host project]$로컬 변수 설정:
MY_MESSAGE라는 간단한 변수를 만들어 보겠습니다.MY_MESSAGE="Hello, LabEx!"=기호 주위에 공백이 없음에 유의하십시오.변수 액세스: 변수의 값에 액세스하려면 이름 앞에
$기호를 붙입니다.echo $MY_MESSAGEHello, LabEx!중괄호를 사용한 변수 확장: 때로는 특히 다른 문자가 뒤에 오는 경우 변수 이름을 명확하게 구분해야 합니다. 이를 위해 중괄호
{}를 사용합니다.echo "The message is: ${MY_MESSAGE}."The message is: Hello, LabEx!.중괄호를 생략하면 셸이
MY_MESSAGE.를 변수 이름으로 해석할 수 있으며, 이는 존재하지 않습니다.설정된 모든 변수 나열:
set명령을 사용하여 현재 설정된 모든 셸 변수 및 함수를 나열할 수 있습니다. 이 출력은 매우 길 수 있으므로 종종less로 파이프됩니다.set | lessBASH=/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를 종료합니다.변수 해제: 변수를 제거하려면
unset명령을 사용합니다.unset MY_MESSAGE변수가 더 이상 설정되지 않았는지 확인합니다.
echo $MY_MESSAGE빈 줄이 표시되어 변수가 설정되지 않았음을 나타냅니다.
환경 변수
환경 변수는 자식 프로세스에 의해 상속되는 특수한 유형의 셸 변수입니다. 즉, 현재 셸에서 시작된 모든 프로그램 또는 스크립트는 이러한 변수에 액세스할 수 있습니다. 일반적으로 응용 프로그램의 환경을 구성하는 데 사용됩니다.
환경 변수 설정:
export명령을 사용하여 변수를 환경 변수로 만듭니다.export EDITOR=vim이렇게 하면 많은 프로그램에서 선호하는 텍스트 편집기를 결정하는 데 사용하는
EDITOR환경 변수가 설정됩니다.환경 변수 나열:
env명령을 사용하여 환경 변수만 나열합니다.env | grep EDITOREDITOR=vim변수 내보내기 해제:
export -n을 사용하여 변수를 해제하지 않고 내보내기를 해제할 수 있습니다. 이렇게 하면 다시 로컬 변수가 됩니다.export -n EDITOR더 이상 환경 변수가 아닌지 확인합니다.
env | grep EDITOR출력이 없어야 합니다. 그러나 여전히 로컬 변수입니다.
echo $EDITORvim완전히 제거하려면
unset을 사용합니다.unset EDITOR
셸 별칭
별칭은 명령에 대한 바로 가기입니다. 더 긴 명령 또는 일련의 명령으로 확장되는 새 명령을 정의할 수 있습니다. 이는 많은 옵션이 있는 자주 사용되는 명령에 매우 유용합니다.
별칭 만들기:
ls -l에 대한 별칭을 만들어 더 짧게 만들어 보겠습니다.alias ll='ls -l'단일 문자열로 처리되도록 명령 주위에 작은 따옴표가 있는지 확인합니다.
별칭 사용: 이제
ls -l대신ll을 입력할 수 있습니다.lltotal 24 -rw-r--r-- 1 labex labex 123 Jan XX HH:MM combined_output.log ... (output of ls -l) ...별칭 나열: 정의된 모든 별칭을 보려면 인수가 없는
alias명령을 사용합니다.aliasalias ll='ls -l'셸 구성에 따라 다른 기본 별칭이 표시될 수 있습니다.
더 복잡한 별칭 만들기: 인수 또는 여러 명령이 있는 명령에 대한 별칭도 만들 수 있습니다.
alias myip='ip a | grep "inet " | grep -v "127.0.0.1" | awk "{print \$2}" | cut -d/ -f1'여기서
myip는 기본 IP 주소를 표시합니다. 별칭이 정의될 때 셸에서 해석되지 않고awk로 전달되도록$기호를 이스케이프하려면\$2에 유의하십시오.myip별칭을 테스트합니다.myip172.17.0.2(IP 주소는 다를 수 있습니다)
별칭 해제: 별칭을 제거하려면
unalias명령을 사용합니다.unalias ll별칭이 제거되었는지 확인합니다.
aliasalias myip='ip a | grep "inet " | grep -v "127.0.0.1" | awk "{print \$2}" | cut -d/ -f1'll이 더 이상 목록에 없어야 합니다.
셸 변수 및 별칭은 임시적이며 터미널 세션을 닫으면 손실됩니다. 영구적으로 만들려면 셸의 구성 파일 (예: ~/.bashrc 또는 ~/.profile) 에 추가해야 하며, 이는 고급 주제에서 다룹니다.
요약
이 랩에서는 텍스트 파일 및 셸 환경을 관리하는 데 필수적인 기본적인 Linux 명령줄 기술을 배웠습니다. 먼저, 파일 덮어쓰기에 >를 사용하고 내용 추가에 >>를 사용하여 출력 리디렉션을 숙달하여 로깅 또는 추가 처리를 위해 명령 결과를 캡처할 수 있었습니다. 또한 표준 오류 (2>) 를 리디렉션하고 표준 출력과 오류를 결합 (&>) 하여 모든 명령 출력을 효과적으로 관리하는 방법을 살펴보았습니다.
또한 | 연산자를 사용하여 명령 파이프라인을 구성하고 이해하는 능력을 습득하여 명령을 연결하고 데이터를 순차적으로 처리할 수 있었습니다. Vim 을 사용한 기본적인 텍스트 편집을 소개받았으며, 파일 삽입, 저장 및 종료에 필요한 명령을 다루었습니다. 마지막으로, 데이터를 저장하고 자주 사용되는 명령을 단순화하기 위해 별칭을 생성하여 명령줄 효율성과 사용자 정의를 향상시키는 셸 변수를 구성하고 사용하는 방법을 배웠습니다.



