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 "[email protected]" /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 "[email protected]" /home/user/Trash/
}