Bash에서 명령 출력을 숨기는 방법
최종 사용자를 위해 Bash 스크립트를 더욱 우아하게 만들고 싶습니다.Bash가 명령을 실행할 때 출력을 숨기려면 어떻게 해야 합니까?
예를 들어 Bash가 실행되는 경우
yum install nano
다음은 Bash를 실행한 사용자에게 표시됩니다.
Loaded plugins: fastestmirror
base | 3.7 kB 00:00
base/primary_db | 4.4 MB 00:03
extras | 3.4 kB 00:00
extras/primary_db | 18 kB 00:00
updates | 3.4 kB 00:00
updates/primary_db | 3.8 MB 00:02
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package nano.x86_64 0:2.0.9-7.el6 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
nano x86_64 2.0.9-7.el6 base 436 k
Transaction Summary
================================================================================
Install 1 Package(s)
Total download size: 436 k
Installed size: 1.5 M
Downloading Packages:
nano-2.0.9-7.el6.x86_64.rpm | 436 kB 00:00
warning: rpmts_HdrFromFdno: Header V3 RSA/SHA256 Signature, key ID c105b9de: NOKEY
Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
Importing GPG key 0xC105B9DE:
Userid : CentOS-6 Key (CentOS 6 Official Signing Key) <centos-6-key@centos.org>
Package: centos-release-6-4.el6.centos.10.x86_64 (@anaconda-CentOS-201303020151.x86_64/6.4)
From : /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Installing : nano-2.0.9-7.el6.x86_64 1/1
Verifying : nano-2.0.9-7.el6.x86_64 1/1
Installed:
nano.x86_64 0:2.0.9-7.el6
Complete!
이제 이 정보를 사용자에게 숨기고 대신 다음을 표시합니다.
Installing nano ......
어떻게 하면 이 일을 해낼 수 있을까요?스크립트가 더 사용하기 편하도록 확실히 도와드리겠습니다.오류가 발생하면 사용자에게 표시해야 합니다.
일련의 명령이 실행되는 동안 동일한 메시지를 표시하는 방법을 알고 싶습니다.
이걸로.
{
/your/first/command
/your/second/command
} &> /dev/null
설명.
명령에서 출력을 제거하려면 다음 두 가지 옵션이 있습니다.
출력 설명자 파일을 닫으면 더 이상 입력을 허용하지 않습니다.이것은 다음과 같습니다.
your_command "Is anybody listening?" >&-일반적으로 출력은 파일 설명자 1(stdout) 또는 2(stderr)로 이동합니다.파일 설명자를 닫으면 번호가 지정된 모든 설명자에 대해 닫아야 합니다.
&>(아래)는 다음과 호환되지 않는 특수 BASH 구문입니다.>&-:/your/first/command >&- 2>&-순서를 주의하여 기록합니다.
>&-stdout을 닫습니다. 이것이 당신이 하고 싶은 일입니다.&>-stdout 및 stderr을 이름이 지정된 파일로 리디렉션합니다.-당신이 하고 싶은 일이 아닙니다.처음에는 동일하게 보이지만 나중에는 작업 디렉토리에 파일을 만듭니다.쉽게 기억할 수 있습니다.>&2stdout을 설명자 2(stderr)로 리디렉션합니다.>&3stdout을 설명자 3으로 리디렉션합니다.>&-stdout을 막다른 골목으로 리디렉션합니다(즉, stdout을 닫습니다).또한 일부 명령은 닫힌 파일 설명자("쓰기 오류: 불량 파일 설명자")를 특히 잘 처리하지 못할 수 있으므로 더 나은 해결책은...
출력을 로 리디렉션하여 모든 출력을 수락하고 아무것도 하지 않습니다.다음과 같이 표시됩니다.
your_command "Hello?" > /dev/null파일에 대한 출력 리디렉션의 경우 stdout과 stderr를 모두 매우 간결하게 동일한 위치로 지정할 수 있지만 bash로만 지정할 수 있습니다.
/your/first/command &> /dev/null
마지막으로 한 번에 여러 명령에 대해 동일한 작업을 수행하려면 전체를 중괄호 모양으로 둘러쌉니다.Bash는 이를 명령 그룹으로 처리하여 한 번에 모두 리디렉션할 수 있도록 출력 파일 설명자를 집계합니다.대신 서브셸에 익숙하다면 다음을 사용합니다.( command1; command2; )구문을 사용하면 파이프에 포함되지 않는 한 브레이스가 하위 셸을 만들지 않으므로 내부에 변수를 설정할 수 있다는 점을 제외하고는 브레이스가 거의 동일하게 동작한다는 것을 알 수 있습니다.
{
/your/first/command
/your/second/command
} &> /dev/null
자세한 내용, 옵션 및 구문은 리디렉션에 대한 bash 매뉴얼을 참조하십시오.
stdout을 /dev/null로 리디렉션할 수 있습니다.
yum install nano > /dev/null
아니면 stdout과 stderr 둘 다 리디렉션할 수 있습니다.
yum install nano &> /dev/null.
하지만 프로그램에 조용한 옵션이 있다면 훨씬 더 좋습니다.
공정에는 일반적으로 선별할 출력이 stdout(표준 출력)과 stderr(표준 오류) 두 가지가 있습니다.
일반적으로 정보 메시지는 다음으로 이동합니다.sdout오류 및 경고가 다음으로 이동합니다.stderr.
끌 수 .stdout을 할 을▁by▁for▁doing▁command▁a위여하.
MyCommand >/dev/null
전원을 끕니다.stderr수행:
MyCommand 2>/dev/null
둘 다 해제하려면 다음을 수행합니다.
MyCommand >/dev/null 2>&1
그2>&1stdout과 로 send stderr을 합니다.
출력을 다음으로 리디렉션할 수 있습니다./dev/null/dev/null에 대한 자세한 내용은 이 링크를 참조하십시오.
다음과 같은 방법으로 명령 출력을 숨길 수 있습니다.
echo -n "Installing nano ......"; yum install nano > /dev/null; echo " done.";
을 "표준출을다리션렉디로으음력션▁the"로 리디렉션합니다./dev/null하지만 표준 오차는 아닙니다.를 들어 됩니다. 를 들어 " " " " " " " " " (" " " " " " " " 입니다.yum패키지를 찾을 수 없습니다.
echo -n "Installing nano ......"; yum install nano &> /dev/null; echo " done.";
표준 오류와 표준 출력이 모두 리디렉션되어 다음으로 무효화되므로 이 코드는 터미널에 아무것도 표시하지 않습니다./dev/null.
>/dev/null 2>&1 다 합니다.stdout그리고.stderr
yum install nano >/dev/null 2>&1
이 경우 bash를 사용하여 출력을 제거하면 안 됩니다.은 Yum은 옵션있다습니이▁yum .-q출력을 억제합니다.
당신은 또한 확실히 사용하고 싶을 것입니다.-y
echo "Installing nano..."
yum -y -q install nano
yum에 대한 모든 옵션을 보려면 다음을 사용합니다.man yum.
하여 이 할 수도 이 때 특히 합니다. 이것은 특히 당신이 없을 때 유용합니다./dev/null.
예, 사용할 수 없는 상황이 발생했습니다./dev/null.
제가 찾은 해결책은 출력을 변수에 할당하는 것이었습니다. 변수는 이후에 절대 사용하지 않을 것입니다.
hide_output=$([[ -d /proc ]] && [[ mountpoint -q /proc ]] && umount -l /proc)
다음 항목:command > /dev/null 이것: ( 오는이것: (오류를 억제하기 위해서도)command > /dev/null 2>&1
되지 .2>개발/개발자 앞에 있습니다.
.SILENT:
"를 입력합니다.SILENT: "콜론이 없는 스크립트의 시작 부분입니다.
언급URL : https://stackoverflow.com/questions/18062778/how-to-hide-command-output-in-bash
'itsource' 카테고리의 다른 글
| Linux에서 시간 명령의 출력을 파일로 리디렉션하는 방법은 무엇입니까? (0) | 2023.05.02 |
|---|---|
| 모든 하위 디렉터리에서 특정 확장명의 모든 파일 복사 (0) | 2023.05.02 |
| 동기 코드를 비동기 호출로 래핑 (0) | 2023.05.02 |
| ~/.composer/vendor/bin 디렉토리를 PATH에 배치하는 방법은 무엇입니까? (0) | 2023.05.02 |
| iOS 시뮬레이터 스크린샷은 어디에 저장됩니까? (0) | 2023.05.02 |