뚝딱햄 탈출기

[CS][Linux] 리다이렉션 본문

CS + OS

[CS][Linux] 리다이렉션

hyrmzz1 2023. 7. 26. 11:59
EliceAcademy - <실전 압축 컴퓨터 개론> 03. 리눅스 다루기 강의 내용 정리

리다이렉션

1. 표준 스트림

컴퓨터 프로그램과 그 외부에 연결된 입출력 통로.
외부 입력 → 키보드로 입력받은 값, 외부 출력 → 터미널에서 출력되는 값.

표준스트림의 종류

입력(0), 출력(1), 에러(2)

2. 리다이렉션

표준 입출력 스트림의 흐름을 바꿔줌.

2-1. 출력 리다이렉션

'>' 을 이용.

ls-al > file-list.txt	# 파일 목록을 새로운 파일에 저장
cat file-list.txt	# cat 명령어를 통해 파일 내용 출력
echo apple > fruit.txt	# fruit.txt 는 문자열이 저장되어 있는 파일.
# 'echo apple'은 "apple"이라는 문자를 출력하는 명령어.
# "apple" 문자를 "fruit.txt" 파일에 새롭게 저장함.
# 따라서, "fruit.txt" 파일을 새로 생성해 "apple"이라는 텍스트를 입력하고 저장함.

'>>' 을 이용한 리다이렉션도 가능.
기존의 파일 내용을 유지한 채 이어붙일 수 있음.

echo add line >> file-list.txt	# echo는 텍스트를 출력하는 명령어.
cat file-list.txt
# 문자열이 저장되어 있는 파일인 "file-list.txt"의 맨 마지막 줄에 add line이 이어붙여져서 출력됨.
# 파일 새로 생성 X. 기존의 파일 내용 유지.

2-2. 입력 리다이렉션

'<' 을 이용.
 
Here Document : 여러 줄의 텍스트를 입력해 특정 명령어에 인자로 전달하는 방법.

cat << EOF > test.txt	
cat > test.txt << EOF
# 둘 다 결과는 같음.
# cat << EOF 를 통해 사용자에게 입력을 받고(사용자가 'EOF'를 입력할 때까지) cat로 출력.
# 출력한 내용을 test.txt로 리다이렉션. 
# text.txt 파일엔 입력받은 내용들이 저장됨.

# EOF란 End Of File의 약자.

3. 리다이렉션 예제

3-1.

 'echo hello' 명령어를 통해 문자열 "hello" 출력되고, 이를 리다이렉션으로 "hello.txt" 파일에 저장.
이 때, "hello.txt" 파일이 새롭게 생성되고 문자열 "hello" 가 저장된다. 따라서 'cat hello.txt' 명령어를 입력하면 hello 라는 문자열만 출력된다.
'ls -al > file-list.txt' 명령어를 통해 ls 명령어를 통한 출력 결과를 "file-list.txt" 파일에 저장.
'cat file-list.txt' 명령어를 통해 "file-list.txt" 파일이 새롭게 생성되고 출력 결과가 이 파일에 저장되었음을 알 수 있다.
'echo add line >> file-list.txt' 명령어에 쓰인 '>>' 는 기존의 파일 내용을 유지한 상태로 이어붙일 수 있는 리다이렉션이다. 따라서 'cat file-list.txt' 명령어 실행시 새로운 파일이 생성되고 "add line" 만이 출력되는 것이 아니라, 위의 출력 결과가 출력되고 맨 마지막 줄에 "add line" 문자열이 추가되어 출력되었음을 알 수 있다.

 

'ls file-list.txt' 명령어는 "file-list.txt" 파일만 보여주지만,
'ls < file-list.txt' 명령어는 위에서 'cat file-list.txt' 명령어를 통해 확인 가능했던 "file-list.txt" 파일 안의 파일들의 txt 값이 ls에 전달(입력)되어 출력된다. 

3-2.

'cat << EOF > redirection.txt' 명령어는 명령어에서 지정한 "EOF"가 입력되기 전까지 txt를 입력받고, "EOF"가 입력되면 입력이 종료됨.
입력받은 값들은 'cat' 명령어에 전달(입력)되어 출력되는데, '<<' 이기 때문에 입력받은 값들이 모두 출력된다. (EOF 제외)
출력된 값은 "redirection.txt" 라는 새로운 파일에 저장된다.

3-3.

"elice"라는 단어가 입력되기 전까지 txt를 입력받고, "elice"가 입력되면 입력이 종료된다.
2번 예제와 같은 유형의 문제.

Comments