「rm:書き込み保護された通常ファイル[x]を削除しますか?」に対する応答として使用されるソリューションを探しています。
私は、bashrcで文字を発行し、その後何回かキャリッジリターンを行うことを考えていました。どうすればいいですか?
「rm:書き込み保護された通常ファイル[x]を削除しますか?」に対する応答として使用されるソリューションを探しています。
私は、bashrcで文字を発行し、その後何回かキャリッジリターンを行うことを考えていました。どうすればいいですか?
回答:
更新された質問に基づいて編集:
ファイルの削除についての質問を回避するには、-f
( "force")オプションを追加します。
rm -f /path/to/file
これには、注意が必要な副作用が1つあります。指定されたパスのいずれかが存在しない場合、これは報告されず、正常に戻ります。
$ rm -f /nonexistent/path
$ echo $?
0
元の回答:
簡単なソリューションを次に示します。
yes "$string" | head -n $number | tr $'\n' $'\r'
yes
改行で区切られた文字列を無限に繰り返します。head
後に、それを停止$number
時間、およびtr
キャリッジリターンに改行を変換します。キャリッジリターンが原因で出力が表示されない場合がありますが、このコマンド(bash
)に出力を渡すと、次のようになります。
printf %q "$(yes "$string" | head -n $number | tr $'\n' $'\r')"
を持たないユーザーbash
は、結果をod
にパイプしhexdump
たりxxd
、実際に返される文字を確認したりできます。
rm
書き込み保護されたファイルについて「対話的に」(ユーザー入力を待機するプロンプト)を要求するようにハードコードされています。rm
質問を防ぐための2つの方法があります。
rm -rf somedir
そして
rm -r --interactive=never somedir
(両方とも-r
dirsの代わりにファイルを削除するときにも動作します)
説明:
-f
MAKES rm
「プロンプト、存在しないファイルと引数を決して無視しない」にします。
--interactive=never
それが言うことをします:決してインタラクティブではありません。言い換えると、プロンプトは表示されません。
違い-f
とは--interactive=never
「存在しないファイルと引数を無視する」:この部分です。
比較する:
$ rm -rf nonexistingname
$ echo $?
0
そして
$ rm -r --interactive=never nonexistingname
rm: cannot remove 'nonexistingname': No such file or directory
$ echo $?
1
違いは主rm
に、インタラクティブになりたくないがエラーを処理したいスクリプトを書くときに興味深いものです。
概要:コマンドラインで使用しますrm -rf
。スクリプトで使用しますrm -r --interactive=never
。
回答については、記載されている質問(「保護されたファイルを削除するときに「y」を数回発行する必要を回避する方法)」を参照してくださいhttps://askubuntu.com/questions/338857/automatically-enter-input-in-command-line / 338860#338860
私も同じ問題に遭遇しました。上記の答えは1つのファイルに対するものですが、多くのyesを無視したい場合です。
使用できます
sudo rm -r /path/to/directory
すべての書き込み保護された通常ファイルを削除する