(1) 리디렉션 명령 목록
명령어 | 설명 |
---|---|
command > | 출력을 파일로 리디렉션|
은 입력을 file | |
로 추가하여 출력을 파일로 리디렉션합니다. file | 은 파일 설명자를 n으로 설정합니다. |
은 | |
을 추가하여 파일 설명자 n이 있는 파일을 file로 리디렉션합니다. m과 n merge | |
입력 파일 m과 n을 병합합니다. | |
시작 태그 태그와 끝 태그 태그 사이의 내용을 입력으로 가져옵니다 | |
(2) 파일 설명자 |
1: 표준 출력(STDOUT)
2: 표준 오류 출력(STDERR)
2. 출력 리디렉션
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 ~]#
위의 예에서는 많은 명령줄에 두 개의 #이 표시됩니다.
첫 번째 #은 다음을 의미합니다. 현재 사용자가 루트 사용자입니다( 다른 사용자의 경우 $ 기호가 표시됩니다);
를 의미합니다.
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):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 중국어 웹사이트의 기타 관련 기사를 참조하세요!