현재 Linux에서 특히 오류 명령을 억제하는 방법을 찾고 cp
있습니다.
나는한다:
root@ubuntu:~$ cp /srv/ftp/201*/wha*/*.jj ~/.
cp: cannot stat `/srv/ftp/201*/wha*/*.jj': No such file or directory
화면에 인쇄 되는 오류 메시지를 어떻게 억제 합니까? 즉,이 오류 메시지를 모니터에 표시하고 싶지 않습니다.
현재 Linux에서 특히 오류 명령을 억제하는 방법을 찾고 cp
있습니다.
나는한다:
root@ubuntu:~$ cp /srv/ftp/201*/wha*/*.jj ~/.
cp: cannot stat `/srv/ftp/201*/wha*/*.jj': No such file or directory
화면에 인쇄 되는 오류 메시지를 어떻게 억제 합니까? 즉,이 오류 메시지를 모니터에 표시하고 싶지 않습니다.
답변:
오류 메시지 (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
질문이 명확하지 않습니다. 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
~ / .bashrc에 이것을 추가하십시오 :
alias cp='cp 2> /dev/null'
그때:
source ~/.bashrc
stderr
하는 것이 훨씬 더 좋은 아이디어처럼 보입니다 /dev/null
. 또는와 다른 이름을 사용하십시오 cp
.
cp
.
다음
옵션 중 하나를 사용할 수 있습니다. 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