리눅스 우분투 공부 기록 - 기본 명령어 & & 리다이렉션 & 파이프라인

onebbu·2023년 3월 21일
0

리눅스

목록 보기
1/6

공부용이므로 VirtualBox를 이용하여 리눅스를 설치하고 공부했다.
(기초 공부이지만 잘못해서 설정 건드릴까봐...)
우분투 설치와 관련된 출처는 맨 마지막에 적어놓았다.

공부 플랫폼: 유데미 / Linux Command Line 부트캠프: 리눅스 초보자부터 고수까지

단축키

  • ctrl+a 줄의 맨앞으로 이동
  • ctrl+e 줄의 맨 뒤로 이동
  • alt+f 한 단어씩 앞으로 이동
  • alt+b 한 단어씩 뒤로 이동
  • ctrl+u (커서가 맨 뒤에 있을 경우)문장 전체 삭제
  • history 과거 명령어 / ctrl+r history 내 명령어 검색

기본 명령어

  • wc -l 파일명: 파일 라인 수 세기
  • man 명령어: 명령어 도움말

리다이렉션

기본적으로 명령어의 결과는 표준 출력 방식인 모니터에 출력됨.
하지만, 리다이렉션을 이용하면 명령의 출력을 변경 및 파일에 기록 할 수 있음.

입력&출력 리다이렉션

기존 파일의 내용을 삭제하고 새로 결과를 저장할 경우 >를
기존 파일의 내용 뒤에 결과를 추가할 때는 >>를 사용

  • < / << : 입력 방향 재지정
  • > / >> : 출력 방향 재지정
  • > : 덮어씀
  • >> : 추가됨
    입력 예시
    ls -l > files.txt
    출력 예시
    cat < chickens.txt

에러 리다이렉션

명령어 2> 파일
입력은 0, 출력은 1, 에러는 2
기본적으로 붙여줘야하지만, 입력과 출력은 생략 가능, 에러는 필수로 입력
에러는 로그 기록용으로 자주 쓴다고 함.
예시: cat bees.txt ants.txt > insects.txt 2> error.txt

표준 출력과 표준 에러을 동시에 리다이렉션

표준 출력을 먼저
외울 때, > = 1, < = 2이므로 1이 2보다 작기 때문에 표준 출력 리다이렉션 먼저 사용

표준 출력과 표준 에러를 같은 파일에 저장

  • 2>&1
    예시: ls docs > output.txt 2>&1

  • bash에서만 작동하는 구문
    &>
    예시: ls docs &> output.txt


파이프

두 명령어를 연결하기 위해 사용
사용방법: 명령어1 | 명령어2
사용 예시: date | rev => 날짜가 거꾸로 출력

  • 파일의 개수 세기
    /usr/bin 폴더에는 명령어가 들어있음.
    ls /usr/bin -1: 명령어를 한줄로 출력
    ls /usr/bin -1 | wc -l : 명령어 개수 세기

리다이렉션(>) vs 파이프(|)

  • 리다이렉션은 표준 출력을 특정 파일로 출력
  • 파이프는 두 명령어를 연결; 두 명령어를 연결하여 앞의 명령어의 출력을 뒤 명령어의 입력으로 전달(이 과정에서 파일 필요 X)

tr

  • 표준 입력을 번역하거나 줄이거나 지워서 표준 출력으로 사용
  • 예시
    cat 파일명 | tr s S -> 파일의 s를 S로 모두 변환
    cat 파일명 | tr a-z A-Z -> 파일의 소문자를 모두 대문자로 변환
    cat 파일명 | tr -d s -> 파일의 s를 모두 제거
    중첩하여 사용 가능(알파벳 삭제 | 공백 삭제 |...)

파이프 중첩

예시
ls | sort | head -> 크기가 가장 큰 세개의 파일 찾기

  • ls /usr/bin -l
    명령어 파일 리스트 출력
  • ls /usr/bin -lh | sort -k5h
    명령어 파일 리스트 출력(h: 용량을 사람이 읽을 수 있도록 숫자 -> 바이트)
    & sort(k5: 5번째 열(용량) 기준 출력 / h: 사람이 읽을 수 있도록, h옵션이 없을 경우 글자 길이를 기준으로 정렬됨=정렬 오류)
  • ls /usr/bin -lh | sort -k5h | head -5
    정렬된 명령어 리스트 중 1~5번째 열 출력
    (tail의 경우 끝~끝에서 5번째 열 출력)
  • 출력 이미지

tee

여러개의 파일을 병합하여 단어 개수를 셀 경우 cat과 wc를 파이프한다면...? -> 불가(전달되지 않음, 출력 0)

  • tee: 명령어의 출력 결과를 파일과 화면에 동시에 출력할 수 있도록 해주는 명령어(stdin을 받아서 stdout과 하나 이상의 파일에 그 입력을 출력)

  • 사용 방법: 명령어1 | tee 파일명 | 명령어2

  • 동작 이미지

  • 예시
    cat.txt파일과 today.txt 파일을 합치면서 단어수를 확인


Reference

리눅스 설치 관련

0개의 댓글