태그 보관물: shell

shell

cp의 오류 메시지를 어떻게 억제합니까? 방법을 찾고 cp있습니다. 나는한다: root@ubuntu:~$ cp

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

나는한다:

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

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



답변

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


답변

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


답변

다음
옵션 중 하나를 사용할 수 있습니다. 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


답변