cp의 오류 메시지를 어떻게 억제합니까?


13

현재 Linux에서 특히 오류 명령을 억제하는 방법을 찾고 cp있습니다.

나는한다:

root@ubuntu:~$ cp /srv/ftp/201*/wha*/*.jj ~/.
cp: cannot stat `/srv/ftp/201*/wha*/*.jj': No such file or directory

화면에 인쇄 되는 오류 메시지를 어떻게 억제 합니까? 즉,이 오류 메시지를 모니터에 표시하고 싶지 않습니다.


1
참고로 오류를 확인하는 가장 좋은 방법은 종료 코드입니다. 는 / dev / null로 배관 STDERR은 표준 오류의 시각적 표시를 제거하지만, 0이 개 아닌 반환 상태를 확인하여 오류 여부가 있다면 알려 드리겠습니다, 적어도 그게이되는 방법입니다 가정 할 ...
Nathan McCoy

질문이 명확하지 않습니다. cp에서 모든 오류 메시지를 숨기시겠습니까? 또는 와일드 카드가 파일과 일치하지 않으면 오류 메시지가 나타나지 않습니까? 아니면 다른 기준?
Gilles 'SO- 악마 그만'

답변:


38

에서 오류 출력을 억제하려면 명령 끝에 bash추가 2>/dev/null하십시오. 파일 핸들 2 (STDERR)를로 리디렉션합니다 /dev/null. 다른 쉘에는 유사한 구문이 있지만 특정 구문은 약간 다를 수 있습니다.


내가 왜 그 xx를 생각하지 못했는지 궁금해
Abdul

8

오류 메시지 (STDERR)를 /dev/null다음으로 리디렉션하십시오 .

root@ubuntu:~$ cp /srv/ftp/201*/wha*/*.jj ~/. 2>/dev/null

예:

$ cp /srv/ftp/201*/wha*/*.jj ~/.  ##Error message gets printed
cp: cannot stat ‘/srv/ftp/201*/wha*/*.jj’: No such file or directory

$ cp /srv/ftp/201*/wha*/*.jj ~/. 2>/dev/null  ##No error message gets printed

5

질문이 명확하지 않습니다. cp와일드 카드가 파일과 일치하지 않을 때 cp오류 메시지를 실행 하거나 숨기는 것이 아니라 가장 합리적인 방법 은 와일드 카드가 전혀 실행 되지 않는 것 입니다.

셸이 bash 인 경우 와일드 카드 패턴이 파일과 일치하지 않는 경우 아무 것도 확장되지 않도록 nullglob옵션을 설정하십시오 . 그런 다음 패턴이 어떤 것으로 확장되었는지 확인하고이 cp경우에는 호출하지 마십시오 .

#!/bin/bash
shopt -s nullglob
files=(/srv/ftp/201*/wha*/*.jj)
if [[ ${#files[@]} -ne 0 ]]; then
  cp "${files[@]}" ~
fi

일반 sh에서는 존재하지 않는 파일을 가리키면서 글롭이 변경되지 않은 상태인지 테스트하십시오.

set -- /srv/ftp/201*/wha*/*.jj
if ! [ -e "$1" ] && ! [ -L "$1" ]; then
  cp "$@" ~
fi

이것은 cp가 쉘 스크립트 내에서 오류를 던지 길 원하지 않는 경우에 필요한 기술입니다.
NessBird

0

~ / .bashrc에 이것을 추가하십시오 :

alias cp='cp 2> /dev/null'

그때:

source ~/.bashrc

2
이 작업을 영구적으로 수행하는 것이 나에게는 어리석은 것처럼 보입니다. 오류 출력이 원치 않는 경우 에만 파이프 stderr하는 것이 훨씬 더 좋은 아이디어처럼 보입니다 /dev/null. 또는와 다른 이름을 사용하십시오 cp.
HalosGhost

동의하지만이 모니터에 대한 오류 메시지를보고 싶지 않은 사람을위한 솔루션입니다 cp.
M122

-1

다음
옵션 중 하나를 사용할 수 있습니다. 1 옵션 : 2>/dev/null.
2 옵션 : 2>&1
명령 끝에 이것을 사용할 수 있으며 오류 메시지가 표시되지 않습니다.

여기 예

$cp nofile.txt b.txt > log.txt 2>/dev/null

여기서 오류 메시지에 대한 정보를 검색 할 수 없습니다. 예 2 :

$cp nofile.txt b.txt > log.txt 2>&1

아래 로그 파일에서 일부 정보를 검색 할 수 있습니다.

$ cat log.txt
cp: cannot stat `nofile.txt': No such file or directory
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.