回答:
最初:問題を理解します:
$ rm() { /bin/rm --interactive=always "$@"; }
$ mkdir -p rmtest && touch rmtest/a rmtest/b rmtest/c rmtest/d && rm -rf rmtest
$ rm() { /bin/rm "$@" --interactive=always; }
$ mkdir -p rmtest && touch rmtest/a rmtest/b rmtest/c rmtest/d && rm -rf rmtest
/bin/rm: descend into directory 'rmtest'? y
/bin/rm: remove regular empty file 'rmtest/b'? y
/bin/rm: remove regular empty file 'rmtest/a'? y
/bin/rm: remove regular empty file 'rmtest/d'? y
/bin/rm: remove regular empty file 'rmtest/c'? y
/bin/rm: remove directory 'rmtest'? y
この--interactive=always(または-Iまたは-i)のものは、使用して、少なくとも行うことができます
a)関数
b)通常のラッパースクリプト
ところで:--interactive 引数が最初にあるため、エイリアスを使用して行うことはできません。
この振る舞いを取り除くには、それぞれを確認する必要があります。または、明示的に呼び出すことができますeg /bin/rmまたは/usr/bin/rm
シェル関数rmがあるかどうかを確認します
set | grep "^rm ()"
でそれを取り除く
unset rm
または、最初にインタラクティブな引数を持つように変更して、オーバーライドできるようにします
rm() { /bin/rm --interactive=always "$@"; }
シェルスクリプトを検索します。
which rm
または
type -p rm
それから
file $whatever_path_was_shown
例えば
file /bin/rm
シェルスクリプトの場合
$EDITOR /bin/rm
--interactive引数を前に移動します
ルートアクセス権がない場合は、元のrmを指す関数またはエイリアスを使用してシェルスクリプトを非表示にします
rm、rmやっ従います-f。詳細を入力してください。type rmand の出力は何rm --versionですか?