私は現在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