저는 현재 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