리다이렉션은 명령어의 입력 또는 출력을 다른 파일이나 명령어로 전환하는 기능.
명령어 실행 결과를 파일로 저장하거나 파일의 입력으로 사용할 수 있다.
출력 리다이렉션
>
: 기존 파일에 내용을 덮어씀 -> 기존 내용은 사라지고 새로운 내용으로 덮어써짐
>>
: 기존 파일의 끝에 내용을 추가 -> 기존 내용은 존재하고 새 내용이 추가됨
echo "내용 추가" >> output.txt
입력 리다이렉션
<
: 파일의 내용을 명령어의 입력으로 사용sort < unsorted.txt
파이프는 한 명령어의 출력을 다른 명령어의 입력으로 연결하는 기능
|
기호를 사용하여 여러 명령어를 연결하여 복잡한 작업을 수행할 수 있다.
기본 개념
A|B
: 명령어 A의 출력을 명령어 B의 입력으로 사용A > tmp.txt
, B < tmp.txt
의 결과와 유사함예시 :
ls -l | grep "^d"
: 현재 디렉터리에서 디렉터리만 나열
cat file.txt | sort | uniq
: 파일 내용을 정렬하고 중복 제거.
파일 내용 정렬 후 중복 제거하여 새 파일로 저장
uniq
명령어는 인접한 내용을 기준으로 삭제하기 때문에, 먼저 정렬 후에 uniq 명령어를 사용
로그 파일에서 키워드 추출 후 내림차순 정렬하여 저장
디렉터리 내 파일 개수 세기: ls | wc -l > file_count.txt
wc -l
은 현재 파일의 행의 수가 몇인지를 출력하는 명령어
로그 파일에서 키워드 추출 후 내림차순 정렬하여 저장:
로그 파일에서 'systemd' 에 의해 발생한 로그만 찾고 싶다. 그 후, 역순으로 출력한 결과를 파일에 저장
grep "systemd" /var/log/syslog | sort -r > sorted_syslog.txt
특정 확장자 파일 찾아 압축하기:
find . -name "*.jpg" | xargs tar -cvzf images.tar.gz
압축된 대용량 파일에서 특정 패턴 검색 후 결과 요약:
zcat large_file.gz | grep "pattern" | wc -l > result_summary.txt
쉘 스크립트는 명령어를 자동화하는 방법으로, 여러 명령어를 파일로 저장하고 이를 실행할 수 있다.
스크립트 파일을 만들고 첫줄에 #!/bin/bash
로 시작하여 스크립트를 Bash에서 실행하도록 지정
실행할 명령어를 두 번째 줄부터 작성
파일에 실행 권한 부여 : chmod +x script.sh
Bash 스크립트에서는 주로 if, elif, else 문을 사용하여 조건문을 구현한다.
Bash 스크립트에서는 주로 for 문과 while 문을 사용한다.
for 문은 주로 다음과 같은 상황에서 사용된다.
while 문은 주로 다음과 같은 상황에서 사용된다.