Devops 4일차 - 출력 관련 명령어

문한성·2023년 3월 10일
0

부트캠프

목록 보기
4/123
post-thumbnail

출력 관련 명령어

표준 스트림

표준 스트림은 프로그램과 외부 환경 사이에서 데이터를 전송하는 통로입니다. 이 통로는 주로 키보드, 모니터, 파일 등을 통해 데이터를 입력받거나 출력합니다.

stdin, stdout, stderr는 표준 스트림 중에서 가장 많이 사용되는 세 가지입니다.

  • stdin : 표준 입력 스트림입니다. 일반적으로 키보드나 파일에서 데이터를 읽어오는데 사용됩니다. 예를 들어, 키보드에서 입력한 문자열을 읽어와서 프로그램에서 처리하는 경우 stdin을 사용합니다.
  • stdout : 표준 출력 스트림입니다. 일반적으로 모니터나 파일에 데이터를 출력하는데 사용됩니다. 예를 들어, 프로그램에서 계산한 결과를 모니터에 출력하거나 파일에 저장하는 경우 stdout을 사용합니다.
  • stderr : 표준 오류 스트림입니다. 일반적으로 모니터나 파일에 오류 메시지를 출력하는데 사용됩니다. 예를 들어, 프로그램에서 실행 중에 오류가 발생한 경우, 오류 메시지를 모니터에 출력하거나 파일에 저장하는 경우 stderr을 사용합니다.

이러한 표준 스트림은 운영체제에서 제공하는 기능이며, 프로그래밍 언어에서도 지원하고 있습니다. 프로그래머는 이러한 표준 스트림을 이용하여 키보드나 파일로부터 입력을 받고, 모니터나 파일에 출력하는 등의 작업을 수행할 수 있습니다.

리눅스 리다이렉션

리눅스 리다이렉션(Redirection)은 표준 입출력을 다른 곳으로 보내거나 받아오는 방법입니다. 표준 입출력은 보통 터미널(콘솔)과 관련되어 있습니다. 즉, 터미널에서 입력한 명령어의 결과가 터미널로 출력되는 것입니다.

리다이렉션을 사용하면 표준 입출력을 다른 파일이나 프로세스로 보낼 수 있습니다. 이를 통해 파일의 내용을 다른 파일에 복사하거나, 명령어의 결과를 파일에 저장하거나, 다른 명령어에 입력으로 전달하는 등의 작업을 수행할 수 있습니다.

리다이렉션은 다음과 같은 기호를 사용합니다.

  • '>' : 출력을 파일에 덮어쓰기
  • '>>' : 출력을 파일에 이어쓰기
  • '<' : 입력을 파일에서 읽기
  • '|' : 출력을 다른 명령어의 입력으로 전달

예를 들어, 다음과 같은 명령어를 실행하면 현재 디렉토리의 파일 목록을 파일에 저장합니다.

ls > file.txt

위 명령어에서 >는 출력을 파일에 덮어쓰기하는 리다이렉션 기호입니다. ls는 현재 디렉토리의 파일 목록을 출력하는 명령어이며, file.txt는 출력을 저장할 파일 이름입니다.

만약 파일에 이어쓰기하고 싶다면 >>를 사용합니다.

ls >> file.txt

위 명령어에서 >>는 출력을 파일에 이어쓰기하는 리다이렉션 기호입니다.

입력을 파일에서 읽을 때는 <를 사용합니다.

sort < file.txt

위 명령어에서 <는 입력을 파일에서 읽는 리다이렉션 기호입니다. sort는 파일의 내용을 정렬하는 명령어입니다.

출력을 다른 명령어의 입력으로 전달할 때는 |를 사용합니다.

리눅스 파이프

리눅스 파이프는 리눅스 명령어에서 사용되는 기호로, "|"로 표시됩니다. 파이프 기호는 두 개의 명령어를 연결하여 하나의 명령어의 출력을 다른 명령어의 입력으로 사용할 수 있도록 합니다.

파이프를 사용하여 명령어의 출력을 다른 명령어의 입력으로 보내면, 명령어를 연결하여 복잡한 작업을 수행할 수 있습니다. 예를 들어, 파일에서 문자열을 찾아서 출력하는 grep 명령어와 출력 결과를 한 줄씩 보여주는 less 명령어를 연결하여 파일 내용을 검색하면서 페이지 단위로 출력할 수 있습니다.

다음은 파이프를 사용하여 명령어를 연결하는 예시입니다.

ls | grep file

위 명령어에서 |는 출력을 다른 명령어의 입력으로 전달하는 리다이렉션 기호입니다. ls는 현재 디렉토리의 파일 목록을 출력하는 명령어이고, grep file은 file이라는 문자열이 포함된 파일 이름만 출력하는 명령어입니다.

ls -l | grep "file" | sort | less

위 명령어는 현재 디렉토리의 파일 목록(ls -l)에서 "file"이라는 문자열을 포함하는 파일을 찾아서(grep "file") 파일 이름을 알파벳 순서대로 정렬(sort)하고, 페이지 단위로 출력(less)합니다.

출력 관련 명령어 - 파일 읽기

man : 메뉴얼(도움말) 명렁어

man ls
  • ls 명령어에 대한 사용법을 알려줍니다 - man 명령어

cat : 파일 내용 출력

cat -n gatsby.txt
  • cat은 파일의 내용을 터미널에 출력하는 명령어
    • -n : line 번호를 함께 출력

more: 파일을 화면 단위로 끊어서 출력

  • 파일 내용을 확인하는 명령어, 화면 단위로 끊어서 출력한다
more (옵션) (파일이름)
  • 옵션
    • +(숫자)
      • ex) +7 : 입력한 숫자 라인을 포함한 페이지를 출력 (7번째 줄부터 출력)
    • +/(문자)
      • ex) +/gatsby : 입력한 문자열이 포함된 페이지를 출력 (gatsby 문자열을 포함한 줄부터 출력)
  • more 명령어 이후 페이지 이동 키
    • Enter : 다음 줄 출력
    • Space : 다음 페이지 출력
    • b : 이전 페이지 출력
    • q : 종료

less: 파일 내용 출력

  • cat과는 달리 less는 화살표키 만으로도 파일내에서 자유롭게 움직일 수 있다.
  • less는 구동전에 전체파일을 읽지 않기 때문에 큰용량의 파일을 읽기에 적합.
less (옵션) (파일이름)
  • 옵션
    • -N : line 번호를 함께 출력

head: 파일 앞부분 출력

  • 터미널에서 직접 파일의 시작을 볼 수 있다.
  • 기본적으로 상단의 10개의 라인을 출력한다.
head (옵션) (파일이름)
  • 옵션
    • -n : 지정한 라인까지 출력

tail: 파일 뒷부분 출력

  • 파일의 마지막 행을 기준으로 지정한 행까지의 파일내용을 출력
  • 기본값의로 마지막 10줄을 출력
tail (옵션) (파일이름)
  • 옵션
    • -n : 지정한 라인까지 출력
    • -f : 파일의 끝을 보여주는 대신 파일의 변화를 계속해서 출력합니다.

예를 들어, example.log 파일의 마지막 20줄을 출력하려면 다음과 같이 입력합니다:

tail -n 20 example.log
  • f 옵션을 사용하여 파일의 변화를 실시간으로 볼 수 있습니다. 예를 들어, 다음 명령어는 example.log 파일의 변화를 실시간으로 출력합니다:
tail -f example.log

이 명령어를 실행한 후, example.log 파일에 추가되는 새로운 로그가 실시간으로 출력됩니다. 종료하려면 Ctrl+C를 누릅니다.

출력 관련 명령어 - 파일 및 디렉토리 찾기

find: 파일 검색

  • 지정된 디렉토리와 하위 디렉토리에서 파일을 찾을 때 사용됩니다.
find (위치) (옵션) (검색할 내용)
  • 옵션
    • -name : 검색할 내용에 입력된 이름을 가진 파일을 검색
    • -type : 파일 타입을 지정하여 검색합니다. (f: 일반 파일, d: 디렉토리, l: 심볼릭 링크)
    • -mtime : 파일이 마지막으로 수정된 시간을 기준으로 검색합니다.
find . -name "example.txt"

여기서 "."은 현재 위치를 나타내고, "-name"은 검색 기준으로 파일 이름을 사용하겠다는 것을 나타냅니다. "example.txt"는 검색할 파일 이름입니다.

또 다른 예로, 1일 전에 수정된 모든 파일을 찾으려면 다음과 같이 입력합니다:

find . -mtime -1

여기서 "-mtime"는 파일 수정 시간을 기준으로 검색하겠다는 것을 나타내며, "-1"은 현재 시간으로부터 1일 전에 수정된 파일을 찾겠다는 것을 의미합니다.

locate: 특정 파일 위치 찾기

  • 리눅스에서 파일 또는 디렉토리를 빠르게 검색할 수 있는 명령어입니다.
  • 일반적으로 locate는 파일 시스템에서 특정 문자열을 포함하는 파일의 경로를 찾아내는데 사용됩니다.
locate (옵션) (검색어)
  • 옵션
    • i : 검색어의 대소문자를 무시합니다.
    • c : 검색 결과의 개수를 출력합니다.
    • l [개수]: 검색 결과의 개수를 제한합니다.
  • locate 프로그램 설치하기
$ sudo apt-get install mlocate
  • DB 파일 갱신(관리자 권한)
$ sudo updatedb
  • 예시
$ locate gatsby.txt # 파일 이름으로 검색하기
$ locate -n 10 *.txt # 검색할 파일 수 지정하여 찾기

which: 실행파일 위치 식별

  • 주어진 명령어의 실행 파일이 어디에 위치하는지를 찾아주는 명령어입니다.
  • 검색하려는 모든 파일이 실행 파일인 경우 which 명령은 매우 유용
  • 명령어를 실행할 때, $PATH 환경 변수에 등록된 디렉토리를 검색하여 해당 명령어가 위치한 경로를 찾습니다. 따라서, which 명령어는 $PATH 환경 변수에 등록된 경로에서만 실행 가능합니다.
$ which python

/usr/bin/python

위 예시에서 /usr/bin/python은 시스템에서 사용되는 파이썬 인터프리터가 설치된 경로입니다.

출력 관련 명령어 - 패턴으로 찾기 (grep)

grep : 텍스트 검색

  • 리눅스에서 문자열 검색에 사용되는 명령어입니다.
grep (옵션) (패턴) (파일이름)
  • 옵션은 필수가 아님

예시 1: 현재 디렉토리에서 파일 내용 검색

grep "Hello" *

현재 디렉토리에서 모든 파일의 내용을 검색하여 "Hello"라는 문자열을 찾습니다.

예시 2: 특정 파일에서 문자열 검색

grep "world" myfile.txt

myfile.txt 파일에서 "world"라는 문자열을 찾습니다.

예시 3: 대소문자 구분 없이 문자열 검색

grep -i "apple" myfile.txt

myfile.txt 파일에서 "apple"이라는 문자열을 찾을 때 대소문자를 구분하지 않습니다.

예시 4: 정규 표현식을 사용한 문자열 검색

grep "^[0-9]" myfile.txt

myfile.txt 파일에서 숫자로 시작하는 문자열을 찾습니다.

예시 5: 검색 결과에 파일 이름 표시

grep -H "linux" *

현재 디렉토리에서 "linux"라는 문자열을 찾을 때 파일 이름을 함께 표시합니다.

  • 옵션
    • i (--ignore-case): 대소문자를 구분하지 않고 검색합니다.
    • r (--recursive): 하위 디렉토리까지 모두 검색합니다.
    • n (--line-number): 검색된 결과의 줄 번호를 함께 출력합니다.
    • v (--invert-match): 검색된 문자열을 제외한 나머지 문자열을 출력합니다.
    • e (--regexp): 정규 표현식을 사용하여 검색합니다.
    • w (--word-regexp): 단어 단위로 검색합니다.
    • A (--after-context): 검색된 결과 이후에 오는 N개의 라인을 함께 출력합니다.
    • B (--before-context): 검색된 결과 이전에 오는 N개의 라인을 함께 출력합니다.
    • C (--context): 검색된 결과 이전과 이후에 오는 N개의 라인을 함께 출력합니다.
profile
기록하고 공유하려고 노력하는 DevOps 엔지니어

0개의 댓글