cp에서 오류 메시지를 억제하는 방법은 무엇입니까?

cp에서 오류 메시지를 억제하는 방법은 무엇입니까?

저는 현재 Linux에서 잘못된 명령, 특히 cp.

나는 다음을 원한다:

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

나타나는 오류 메시지를 억제하는 방법인쇄화면에? 즉, 내 모니터에서 이 오류 메시지를 보고 싶지 않습니다.

답변1

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

답변2

오류 메시지(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

답변3

귀하의 질문이 불분명합니다. 가장 현명한 방법은 와일드카드가 어떤 파일과도 일치하지 않을 때 실행 하고 오류 메시지를 숨기는 것 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에서는 glob이 변경되지 않고 존재하지 않는 파일을 가리키는지 테스트합니다.

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

답변4

~/.bashrc에 다음 콘텐츠를 추가합니다.

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

그 다음에:

source ~/.bashrc

관련 정보