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

関連情報