Linux 작업에서 리디렉션 문제를 해결하는 방법

PHPz
풀어 주다: 2023-05-17 14:37:14
앞으로
1766명이 탐색했습니다.

    1. 개요

    (1) 리디렉션 명령 목록

    출력을 파일로 리디렉션 명령 < ; file은 입력을 file 명령 >> file로 추가하여 출력을 파일로 리디렉션합니다. file은 파일 설명자를 n으로 설정합니다. n >> filen >& mn <& m<< 태그 0: 보통 표준 입력(STDIN)
    명령어 설명
    command >
    을 추가하여 파일 설명자 n이 있는 파일을 file로 리디렉션합니다. m과 n merge
    입력 파일 m과 n을 병합합니다.
    시작 태그 태그와 끝 태그 태그 사이의 내용을 입력으로 가져옵니다
    (2) 파일 설명자

    1: 표준 출력(STDOUT)

    • 2: 표준 오류 출력(STDERR)

    • 2. 출력 리디렉션

    • (1) 명령 분석

      command > file
      #执行command然后将输出的内容存入file。
      로그인 후 복사
    참고:

     

    파일의 내용이 새 내용으로 대체됩니다. 완전히 교체하지 않고 파일 끝에 추가하려면 >> 연산자를 사용하세요.

    (2) 분석 예

    [root@localhost ~]# w
     20:41:36 up 55 days,  5:17,  1 user,  load average: 0.00, 0.01, 0.05
    USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
    root     pts/0    223.166.20.53    20:24    0.00s  0.05s  0.00s w
    [root@localshost ~]# w > users #w命令执行后的结果输出到users文件中
    [root@localshost ~]# ll
    -rw-r--r-- 1 root root  204 Jan  3 20:41 users
    [root@localshost ~]# cat users #查看users文件内容,正是w命令执行后的输出结果
     20:41:58 up 55 days,  5:17,  1 user,  load average: 0.00, 0.01, 0.05
    USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
    root     pts/0    223.166.20.53    20:24    6.00s  0.05s  0.00s w
    [root@localshost ~]# who
    root     pts/0        2021-01-03 20:24 (223.166.20.53)
    [root@localshost ~]# who > users #将who命令执行结果输出重定向到users文件
    [root@localshost ~]# cat users #发现users文件中原先w命令的输出内容被who命令覆盖了
    root     pts/0        2021-01-03 20:24 (223.166.20.53)
    [root@localshost ~]# echo "Hello world" >> users #使用>>操作符则会追加在后面输出
    [root@localshost ~]# cat users
    root     pts/0        2021-01-03 20:24 (223.166.20.53)
    Hello world
    [root@localshost ~]#
    로그인 후 복사

    참고:

    위의 예에서는 많은 명령줄에 두 개의 #이 표시됩니다.

    첫 번째 #은 다음을 의미합니다. 현재 사용자가 루트 사용자입니다( 다른 사용자의 경우 $ 기호가 표시됩니다);

      위의 두 번째 #은
    • comment

      를 의미합니다.

    • 3. 입력 리디렉션
    • 1. 명령 구문 분석Unix 명령은 파일에서 입력을 가져올 수도 있습니다.

      command < file
      #获取file文件中的内容作为输入内容,并用于commmand执行
      로그인 후 복사
    참고:

     

    출력 리디렉션은 기호(>)보다 큽니다. 입력 리디렉션은 미만 기호(<)입니다.

    2. 예제 분석

    [root@localhost ~]# wc -l users
    2 users
    #wc指令可以计算文件的Byte数、字数、或是行/列数,若不指定文件名称、或是所给予的文件名为"-",则wc指令会从标准输入设备读取数据。
    [root@localhost ~]# wc -l < users 
    2
    #将输入重定向到 users 文件,上面命令作用就是将users文件内容作为输入重定向计算行数了
    로그인 후 복사

    참고:  

    첫 번째 예제는 파일 이름을 출력합니다.

    두 번째 예제는 표준 입력의 콘텐츠만 읽을 수 있기 때문에 출력하지 않습니다.

    command < infile > outfile
    #同时替换输入和输出,执行command,从文件infile读取内容,然后将输出写入到outfile中。
    #理解成,从标准输入中获取内容(输入重定向到infile)作为标准输出(输出重定向到outfile)。
    로그인 후 복사

    4. 리디렉션에 대한 심층적인 이해표준 입력, 표준 출력 및 표준 오류 출력은 위의 파일 설명자에서 간략하게 소개되었으며 아래에서 자세히 설명합니다.

    1. 소개

    일반적으로 각 Unix/Linux 명령을 실행하면 세 개의 파일이 열립니다:

    1) 표준 입력 파일(stdin):

    stdin의 파일 설명자는 0, Unix 프로그램 데이터는 다음에서 읽습니다. 기본적으로 표준입력.

    2) 표준 출력 파일(stdout) :

    stdout의 파일 디스크립터는 1이며, Unix 프로그램은 기본적으로 stdout으로 데이터를 출력합니다.

    3) 표준 오류 파일(stderr):

    stderr의 파일 설명자는 2이며 Unix 프로그램은 오류 정보를 stderr 스트림에 기록합니다.

    기본적으로

    command > file은 stdout을 파일로 리디렉션하고, < file 명령은 stdin을 파일로 리디렉션합니다.

    2. 명령 세부 정보

    command 2>file
    #stderr 重定向到 file
    command 2>>file
    #stderr 追加到 file 文件末尾
    
    command > file 2>&1
    command >> file 2>&1
    #stdout 和 stderr 合并后重定向到 file
    
    command < file1 >file2
    #对 stdin 和 stdout 都重定向
    #command 命令将 stdin 重定向到 file1,将 stdout 重定向到 file2
    로그인 후 복사

    5. Here Document

    Here Document는 입력을 대화형 Shell 스크립트 또는 프로그램으로 리디렉션하는 데 사용되는 Shell의 특수 리디렉션 방법입니다. 1. Grammar

    기본 형식은 다음과 같습니다.

    command << delimiter
        document
    delimiter
    #作用是将两个 delimiter 之间的内容(document) 作为输入传递给 command。
    로그인 후 복사

    참고:

    끝의 구분 기호는 맨 앞에 문자가 올 수 없으며, 뒤에도 문자가 올 수 없습니다. 공백과 탭 들여쓰기를 포함한 뒷면.

    초기 구분 기호 앞뒤의 공백은 무시됩니다.

    2. 예시 분석EOF는 END Of File의 약자로 커스텀 종결자를 의미합니다. EOF는 사용자 정의가 가능하므로 고정된 값이 없으며 임의로 별칭을 설정할 수 있습니다. 예를 들어 Linux에서는 Ctrl-D를 대신 EOF로 사용할 수 있습니다.

    EOF는 일반적으로 cat과 함께 작동하여 여러 줄의 텍스트를 출력합니다.

    예제는 다음과 같습니다.

    [root@localhost ~]# wc -l << EOF
    > a
    > b
    > c
    > d
    > e
    > EOF
    5 #输入内容为5行
    [root@localhost ~]# cat << EOF
    > a
    > b
    > c
    > d
    > e
    > f
    > EOF
    a
    b
    c
    d
    e
    f
    로그인 후 복사

    EOF는 다음과 같이 사용자 정의할 수도 있습니다.

    [root@iZ2ze95cxr3kx9il409khtZ ~]# cat << CCC
    > a
    > b
    > c
    > d
    > CCC
    a
    b
    c
    d
    로그인 후 복사

    스크립트 입력을 실행할 때 다음 형식을 사용할 수 있습니다.

    #拥有大量输入的时候可以用下面的形式,将标准输入的内容重定向到(输入到)test.sh文件中。
    [root@localhost ~]# cat << EOF >test.sh 
    > 123123123
    > 3452354345
    > asdfasdfs
    > EOF
    [root@localhost ~]# cat test.sh 
    123123123
    3452354345
    asdfasdfs
    [root@localhost ~]#
    로그인 후 복사

    위 내용은 Linux 작업에서 리디렉션 문제를 해결하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

    관련 라벨:
    원천:yisu.com
    본 웹사이트의 성명
    본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
    인기 튜토리얼
    더>
    최신 다운로드
    더>
    웹 효과
    웹사이트 소스 코드
    웹사이트 자료
    프론트엔드 템플릿