bash 데이터 흐름 재 설정 및 파이프 (회전)

2985 단어 linux
bash (Bourne - Again SHell) 는 현재 많은 Linux 시스템 의 기본 셸 로 강력 한 기능 을 가지 고 사람들 이 Linux 시스템 을 조작 하고 사용 할 수 있 도록 한다.
bash 에서 사용 하 는 특수 기 호 는 다음 과 같다.
기호.
내용.
#
주석 기 호 는 script 에서 가장 많이 사용 되 며 설명 으로 간주 합 니 다.그 후의 데 이 터 는 모두 실행 되 지 않 는 다.
\
전의 기호, 특수 문자 나 어댑터 를 일반 문자 로 복원
|
파이프 (pipe), 두 파이프 명령 의 구분
;
연속 명령 실행 구분자, 연속 명령 의 정의
$
변수 전도 부 호 를 적용 합 니 다. 즉, 변수 전에 추가 해 야 할 변수 대체 값 입 니 다.
&
작업 제어 (job control), 명령 을 배경 으로 이동 합 니 다.
> 와 >>
데이터 흐름 재 설정, 출력 마법사, 각각 '교체' 와 '누적' 입 니 다.
< 와 <<
데이터 흐름 재 설정, 입력 마법사, 각각 "키보드 입력"과 "입력 종료"
' '
작은 따옴표, 변수 교체 기능 이 없습니다.
""
따옴표
` `
먼저 실행 할 수 있 는 명령, $() 를 사용 할 수 있 습 니 다.
( )
하위 셸 의 시작 과 끝
{ }
명령 블록 조합
1. 출력 방향 변경
예 를 들 어 설명:
#屏幕本应该显示的标准输出(stdout)内容重定向转存到test.txt文件中
#如果test.txt文件已存在,则覆盖
$ ls -al ~ > ~/test.txt

#屏幕本应该显示的标准输出内容重定向转存到test.txt文件中 (数据累加而不覆盖)
$ ls -al ~ >> ~/test.txt

#将标准输出内容重定向到test.txt中,标准错误输出则重定向到test2.txt中,均为累加方式而非覆盖
$ ls -al /test/ >> ~/test.txt 2>> ~/test2.txt

#将标准输出内容与标准错误输出内容均重定向至test.txt中,累加方式
$ find /home/ -name "test.txt" &>> ~/test.txt                   #正确写法
$ find /home/ -name "test.txt" >> ~/test.txt 2>>&1              #正确写法
$ find /home/ -name "test.txt" >> ~/test.txt 2>> ~/test.txt     #错误写法

#将标准错误输出内容丢弃,只在屏幕上显示标准输出内容
$ find /home/ -name "test.txt" 2> /dev/null

2. 재 설정 입력
< 의 역할: 키보드 입력 대신 텍스트 파일 내용 이나 장치 원본 사용
<< 의 역할: 입력 종료 (자주 사용 되 지 않 음)
예 를 들 어 설명:
#创建一个文本文件test3.txt,内容为 /home/lsy/,以 end 为结束输入
$ cat > test3.txt << "end"
> /home/lsy/
> end         在此处按下回车
$             查看当前目录下,存在test3.txt文件

#下面这条命令的执行效果同 ls -al /home/lsy/
$ ls -al < test3.txt

3. 파이프
파이프 | 두 명령 을 연결 하 는 데 사 용 됩 니 다. 즉, "|"왼쪽 명령 의 표준 출력 으로 오른쪽 명령 의 표준 입력 으로 다음 과 같 습 니 다.
command1 | command2 | command3
stdout1  => stdin2
            stdout2 => stdin3

파이프 명령 은 표준 출력 만 처리 하고 표준 오류 출력 은 무시 합 니 다.그리고 파이프 오른쪽 명령 은 less, more, grep, cut 등 표준 입력 을 받 을 수 있어 야 하 며, ls, cp, mv 등 명령 은 표준 입력 을 받 을 수 없 기 때문에 파이프 오른쪽 에 놓 을 수 없습니다.
예 를 들 어:
rpm -qa --last | less     #用less来查看显示结果

4. 양 방향 재 설정
명령 tee 는 표준 출력 을 캡 처 할 수 있 습 니 다 (표준 오류 출력 을 캡 처 할 수 없습니다). 파일 이나 장치 에 전송 하 는 동시에 표준 출력 으로 다음 단계 에 계속 전달 합 니 다.용법 은 다음 과 같다.
tee [-a] file/device
-a : 以累加的方式,将数据流加入file中

#将 ls -al 的执行结果以累加方式保存至test.txt中,并显示在屏幕上
$ ls -al | tee -a test.txt

#将 ls -al 的执行结果以累加方式保存至test.txt中,并显示在屏幕上(用less命令查看)
$ ls -al | tee -a test.txt | less

#将 ls -al 的执行结果分别保存至test.txt、test2.txt中,均以累加方式写入
$ ls -al | tee -a test.txt >> test2.txt

이 걸 따라 주세요.  저작권 협의 (Use  License), 전재 가 필요 하 시 면  양 쯔 블 로그.

좋은 웹페이지 즐겨찾기