>  기사  >  운영 및 유지보수  >  Linux 작업에서 리디렉션 문제를 해결하는 방법

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

PHPz
PHPz앞으로
2023-05-17 14:37:141762검색

    1. 개요

    (1) 리디렉션 명령 목록

    출력을 파일로 리디렉션 명령 < ; file은 입력을 file 명령 >> file로 추가하여 출력을 파일로 리디렉션합니다. file은 파일 설명자를 n으로 설정합니다. n >> filen >& mn 79e4ed7632475f1ac75d5c1ac0c22915> 연산자를 사용하세요. (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执行
    참고:

     

    출력 리디렉션은 기호(>)보다 큽니다. 입력 리디렉션은 미만 기호(672113f510bdfb6a1d23fc62a2e7bf1f 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 ~]#
    명령어 설명
    command >
    을 추가하여 파일 설명자 n이 있는 파일을 file로 리디렉션합니다. m과 n merge

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

    성명:
    이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제