서론
ELITE HACKER Bootcamp 3rd 1주차 수업 공부 내용
aws 우분투 서버 하나 파서 연습
파일기술자, 리다이렉트
파일 기술자 (파일 디스크립터)
운영체제가 특정 파일에 할당해주는 정수값 이다. 키보드, 모니터 이런 것도 실질적으로 운영체제는 파일이라고 인식하고, 정수값을 할당해준다. 이 숫자를 통해 프로세스는 파일이나 입출력 스트림을 식별하고, 파일을 읽거나 쓸 수 있는 권한을 부여받는다.
- stdin(표준입력) : 0 ->
- stdout(표준출력) : 1
- stderr(표준에러) : 2
이렇게 0~2까지는 이미 기본적으로 할당이 되어있고,
0번은 보통 키보드, 1번 2번은 모니터가 할당되어 있다.
우리가 파일을 새로 작성하거나 만들때는 3부터 할당받는다.
리다이렉션(Redirection)
명령어의 입력과 출력을 다른 경로로 변경하는 기능. 터미널에 표시되거나 키보드로 입력받는 기본 입출력 흐름을 파일로 보내거나, 파일의 입력으로 사용하게 함으로써 다양한 작업을 유연하게 처리할 수 있다.
이게 뭔 소리냐 명령어의 출력결과를 파일로 저장하거나, 파일의 내용을 입력으로 사용할 수 있다는 의미이다.
이게 저번에도 나왔을 텐데, >와 >>가 있다.
>
표준출력을 파일로 리다이렉트. (덮어쓰기)
기존 파일의 내용을 덮어쓰고 , 명령어의 출력을 지정된 파일에 저장한다.
echo "hello" > output.txt
echo는 출력, 그래서 원래라면 표준출력인 1번인 모니터에서 결과물이 보여야 하는데, 이것을 output.txt라는 파일기술자 3번에 저장되어 저기에 hello가 저장될 것이다. 그리하여 output.txt에 입력이 들어갔을 것이다.
>>
표준 출력을 파일로 리다이렉트. (이어쓰기)
파일의 기존 내용을 유지하면서 출력 내용을 파일의 끝에 추가한다.
echo "world" >> output.txt
덮어 쓰기가 되었다.
<
파일을 표준입력으로 리다이렉트
즉 파일의 내용을 명령어의 입력으로 사용된다.
sort < output.txt
2> , 2>>
표준 에러를 파일로 리다이렉트 (덮어쓰기, 이어쓰기)
에러메시지를 파일에 저장한다.
&>, &>>
표준출력과 표준 에러를 동시에 리다이렉트 (덮어쓰기, 이어쓰기)
표준 출력과 표준 에러 모두를 하나의 파일에 저장한다.
|
파이프, 한 명령어의 출력을 달느 명령어의 입력으로 전달.
예제
~$ find / -name "*.txt" 1>& a.txt
~$ ls -al -KnockOn 1> b.txt 2> a.txt
~$ ls -knockOn > c.txt 2>&1
먼저 첫번째 줄 부터 보면
find 찾아라 / 루트 디렉터리에서 -name 이름이 "*.txt" txt확장자로 나오는 애를 1>& 표준 출력과 표준 에러를 모두 a.txt에 저장해라.
두번째 줄은
~$ ls -al -KnockOn 1> b.txt 2> a.txt
ls -al 숨겨진 파일까지 모두 자세하게 보여주어라 근데 -KnockOn이라는 속성은 없다
제대로 나온 결과값은 b.txt로 보내고, 오류는 a.txt로 리다이렉트해라. 라는 의미
a마지막 세번째 줄은
~$ ls -knockOn > c.txt 2>&1
ls 목록 근데 -knockOn 속성은 없는데 이걸 정상출력을 c.txt로 보내라는 의미, 근데 2>&1 이 있는데, 이건 2번 오류메시지, 정상출력도 1번으로 보내라는 의미. 현재 1번인 경우에는 c.txt가 위치하고 있으므로, 2>&1이 결국엔 c.txt로 가라라는 의미
'KnockOn' 카테고리의 다른 글
[KnockOn] Linux/Ubuntu 운영체제의 패키지 (0) | 2024.11.07 |
---|---|
[KnockOn] Linux/Ubuntu Symbolic Link (0) | 2024.11.07 |
[KnockOn] Linux/Ubuntu 리눅스 디렉터리 구조 (1) | 2024.11.06 |
[KnockOn] Linux/Ubuntu 운영체제 명령어 -2 (0) | 2024.11.05 |
[KnockOn] Linux/Ubuntu 운영체제 명령어 -1 (2) | 2024.11.04 |