06 - Shell 스 크 립 트 학습 - 기타

4833 단어
Shell 입 출력 재 설정
유 닉 스 명령 은 기본적으로 표준 입력 장치 (stdin) 에서 입력 을 가 져 오고 결 과 를 표준 출력 장치 (stdout) 에 출력 합 니 다.일반적인 상황 에서 표준 입력 장 치 는 키보드 이 고 표준 출력 장 치 는 단말기, 즉 모니터 이다.출력 방향 변경
명령 의 출력 은 모니터 뿐만 아니 라 파일 로 쉽게 옮 길 수 있 는데 이것 은 출력 리 셋 방향 이 라 고 불 린 다.
명령 출력 에서 방향 을 바 꾸 는 문법 은 다음 과 같 습 니 다.
command > file

이렇게 하면 모니터 에 출력 된 내용 을 파일 로 바 꿀 수 있다.
예 를 들 어 아래 명령 은 모니터 에서 출력 을 볼 수 없습니다.
who > users

users 파일 을 열 면 아래 내용 을 볼 수 있 습 니 다.
cat users

oko         tty01   Sep 12 07:30
ai          tty15   Sep 12 13:32
ruth        tty21   Sep 12 10:10
pat         tty24   Sep 12 13:07
steve       tty25   Sep 12 13:03

출력 방향 을 바 꾸 면 파일 내용 을 덮어 씁 니 다. 다음 예 를 보십시오.
echo line 1 > users

cat users
line 1

파일 내용 이 덮어 쓰 기 를 원 하지 않 으 면 >> 파일 끝 에 추가 할 수 있 습 니 다. 예 를 들 어:
echo line 2 >> users

cat users
line 1
line 2

입력
출력 재 설정 과 마찬가지 로 유 닉 스 명령 도 파일 에서 입력 을 가 져 올 수 있 습 니 다. 문법 은 다음 과 같 습 니 다.
command < file

이렇게 하면 키보드 에서 입력 을 가 져 와 야 하 는 명령 이 파일 로 옮 겨 져 내용 을 읽 습 니 다.
메모: 출력 재 설정 은 번호 (>) 보다 크 고 입력 재 설정 은 번호 (<) 보다 작 습 니 다.
예 를 들 어 users 파일 의 줄 수 를 계산 할 때 다음 명령 을 사용 할 수 있 습 니 다.
wc -l users
2 users

users 파일 로 입력 을 바 꿀 수도 있 습 니 다:
wc -l < users
2

메모: 위의 두 가지 예 는 결과 가 다 릅 니 다. 첫 번 째 예 는 파일 이름 을 출력 합 니 다.두 번 째 는 표준 입력 에서 내용 을 읽 는 것 만 알 기 때문에 할 수 없다.
방향 을 바 꾸 어 심도 있 게 설명 하 다.
일반적으로 유 닉 스/리 눅 스 명령 이 실 행 될 때마다 세 개의 파일 을 엽 니 다.
  • 표준 입력 파일 (stdin): stdin 의 파일 설명 자 는 0 이 고 유 닉 스 프로그램 은 기본적으로 stdin 에서 데 이 터 를 읽 습 니 다.
  • 표준 출력 파일 (stdout): stdout 의 파일 설명 자 는 1 이 고 유 닉 스 프로그램 은 기본적으로 stdout 에 데 이 터 를 출력 합 니 다.
  • 표준 오류 파일 (stderr): stderr 의 파일 설명 자 는 2 이 고 유 닉 스 프로그램 은 stderr 흐름 에 오류 정 보 를 기록 합 니 다.

  • 기본 적 인 상황 에서 command > file stdout 을 file 로 재 설정 하고 command < file stdin 을 file 로 재 설정 합 니 다.
    stderr 가 file 로 바 뀌 기 를 원한 다 면 이렇게 쓸 수 있 습 니 다.
    command 2 > file

    stderr 가 file 파일 의 끝 에 추가 되 기 를 원한 다 면 이렇게 쓸 수 있 습 니 다.
    command 2 >> file

    2 표준 오류 파일 (stderr) 을 표시 합 니 다.
    stdout 과 stderr 를 합 친 후 file 로 다시 설정 하려 면 이렇게 쓸 수 있 습 니 다.
    command > file 2>&1

    stdin 과 stdout 에 대한 방향 을 바 꾸 려 면 이렇게 쓸 수 있 습 니 다.
    command < file1 >file2

    command 명령 은 stdin 을 file 1 로 재 설정 하고 stdout 을 file 2 로 재 설정 합 니 다.
    모든 사용 가능 한 리 셋 명령 목록:
    命令  说明
    command > file  将输出重定向到 file。
    command < file  将输入重定向到 file。
    command >> file 将输出以追加的方式重定向到 file。
    n > file    将文件描述符为 n 的文件重定向到 file。
    n >> file   将文件描述符为 n 的文件以追加的方式重定向到 file。
    n >& m  将输出文件 m 和 n 合并。
    n <& m  将输入文件 m 和 n 合并。
    << tag  将开始标记 tag 和结束标记 tag 之间的内容作为输入。

    Here Document
    Here Document 는 현재 통 일 된 번역 이 없 으 며, 여 기 는 잠시 嵌入文档 로 번역 되 었 다.Here Document 는 Shell 의 특수 한 방향 재 설정 방식 으로 기본 적 인 형식 은 다음 과 같다.
    command << delimiter
        document
    delimiter

    두 delimiter 사이 의 내용 (document) 을 입력 으로 command 에 전달 하 는 역할 을 합 니 다.
    메모: 끝 에 있 는 delimiter 는 반드시 대문자 로 써 야 합 니 다. 앞 에 문자 가 있 으 면 안 됩 니 다. 뒤에 도 빈 칸 과 tab 들 여 쓰기 가 포함 되 어 있 으 면 안 됩 니 다.
    시작 한 delimiter 앞 뒤의 빈 칸 은 무시 된다.
    다음 예 는 wc -l 명령 을 통 해 document 의 줄 수 를 계산 합 니 다.
    wc -l << EOF
        This is a simple lookup program
        for good (and bad) restaurants
        in Cape Town.
    EOF

    출력: 3
    Here Document 를 스 크 립 트 에 사용 할 수도 있 습 니 다. 예 를 들 어:
    #!/bin/bash
    cat << EOF
    This is a simple lookup program
    for good (and bad) restaurants
    in Cape Town.
    EOF

    실행 결과:
    This is a simple lookup program
    for good (and bad) restaurants
    in Cape Town.

    /dev/null 파일
    명령 을 실행 하 기 를 원 하지만 화면 에 출력 결 과 를 표시 하지 않 으 려 면 출력 을 다시 설정 할 수 있 습 니 다 /dev/null.
    command > /dev/null
    /dev/null 특수 한 파일 로 그 내용 을 쓰 면 버 려 집 니 다.이 파일 에서 내용 을 읽 으 려 고 시도 하면 아무것도 읽 을 수 없습니다.그러나 /dev/null 파일 은 매우 유용 합 니 다. 명령 의 출력 을 다시 지정 하면 禁止输出 효 과 를 낼 수 있 습 니 다.
    stdout 과 stderr 를 차단 하려 면 이렇게 쓸 수 있 습 니 다:
    command > /dev/null 2>&1

    이렇게 하면 화면 에 어떤 정보 도 인쇄 하지 않 습 니 다.
    셸 파일 포함
    다른 언어 와 마찬가지 로 셸 도 외부 스 크 립 트 를 포함 하여 현재 스 크 립 트 에 외부 스 크 립 트 의 내용 을 통합 할 수 있 습 니 다.
    Shell 에 스 크 립 트 가 포함 되 어 있 습 니 다 . filename 또는 source filename.
    두 가지 방식 의 효 과 는 같 습 니 다. 간단하게 볼 때 보통 점 (.) 을 사용 하지만 점 (.) 과 파일 이름 사이 에 빈 칸 이 있 습 니 다.
    예제: 포 함 된 파일: sub. sh
    name="yjc"

    주 파일: test. sh
    . ./sub.sh
    echo $name

    실행 결과:
    yjc

    좋은 웹페이지 즐겨찾기