まず、$
を使用しないでください。 エイリアスを呼び出すとき。 $
変数を展開するためのものです (およびこの質問に特に関係のない他のいくつかのもの)。
しかし、第二に、エイリアスは機能します 変数に少し似ていますが、(少し単純化しすぎるリスクがありますが) 単語の集まりに展開されるだけです。あなたは myrm foo
をしたいと言っています 、しかし、それは mv /home/user/Trash/* foo
に展開されます 、意味がありません。
簡単な解決策は、エイリアスを mv -t /home/user/Trash
に定義することです mv
のため、これは機能します をサポート
mv -t destination_dir file …構文の代替として
mv file … destination_dir構文。
ただし、シェル関数を使用すると、柔軟性を高めることができます。これらは、スクリプトの柔軟性とエイリアスの (低い) オーバーヘッドを兼ね備えています。たとえば、
myrm() { mv "[email protected]" /home/user/Trash; }
myrm foo
が発生します mv foo /home/user/Trash
と解釈される .
おそらくより簡単な解決策は、 trash-cli
を使用することです パッケージ。次に、 alias myrm=trash
を実行できます そして trash foo
あなたがしたいことを達成するために。 foo が ~/. local/share/Trash
になることを除いて
問題は、 mv
で mv source destination
のように使用する必要があります .
あなたのエイリアスではその逆です mv destination source
.
また、アスタリスク *
は必要ありません 最後に、宛先をフォルダーとして処理するためです。フォルダー /home/user/Trash
を確認してください mkdir /home/user/Trash
で存在します .
エイリアスのアイデアを解決するには、このスタックオーバーフローの質問をご覧になることをお勧めします:
- https://stackoverflow.com/q/7131670/7311363
これはその解決策につながります。これを ~/.bashrc
に追加してください source ~/.bashrc
を実行します 追加後:
myrm() {
/bin/mv "[email protected]" /home/user/Trash/
}