Za prvé, nepoužíváte $ když zavoláte alias. $ je pro rozšíření proměnné (a několik dalších věcí, které nejsou pro tuto otázku nijak zvlášť relevantní).
Ale za druhé, aliasy fungují trochu jako proměnné v tom smyslu, že se (s rizikem, že se trochu zjednoduší) jen rozšiřují na hromadu slov. Říkáte, že chcete udělat myrm foo ,ale to by se rozšířilo na mv /home/user/Trash/* foo ,což nedává smysl.
Jednoduchým řešením by bylo definovat alias jako mv -t /home/user/Trash ,což by fungovalo, protože mv podporuje
mv -t destination_dir file …syntaxe jako alternativa k
mv file … destination_dirsyntax.
Ale můžete získat větší flexibilitu pomocí funkce shell. Ty kombinují flexibilitu skriptů s (nízkou) režií aliasů. Například,
myrm() { mv "example@unixlinux.online" /home/user/Trash; }
způsobí myrm foo být interpretován jako mv foo /home/user/Trash .
Pravděpodobně jednodušší řešení je použít trash-cli balík. Pak stačí udělat alias myrm=trash a poté trash foo abyste dosáhli toho, co chcete. Až na to, že foo nyní přejde na ~/. local/share/Trash
Problém je s mv musíte jej použít jako mv source destination .
S vaším aliasem je to naopak mv destination source .
Také nepotřebujete hvězdičku * na konci, protože pracuje s cílem jako složkou. Zkontrolujte, zda je vaše složka /home/user/Trash existuje s mkdir /home/user/Trash .
Chcete-li vyřešit svůj nápad na alias, doporučil bych vám podívat se na tyto otázky týkající se stackoverflow:
- https://stackoverflow.com/q/7131670/7311363
To povede k tomuto řešení; přidejte to prosím do svého ~/.bashrc a proveďte source ~/.bashrc po přidání:
myrm() {
/bin/mv "example@unixlinux.online" /home/user/Trash/
}