Pertama-tama, Anda tidak menggunakan $
ketika Anda memanggil alias. $
adalah untuk memperluas variabel (dan beberapa hal lain yang tidak terlalu relevan dengan pertanyaan ini).
Namun, kedua, alias berfungsi berfungsi sedikit seperti variabel, dalam arti bahwa mereka (dengan risiko terlalu menyederhanakan sedikit) hanya berkembang menjadi sekumpulan kata. Anda mengatakan ingin melakukan myrm foo
, tetapi itu akan meluas ke mv /home/user/Trash/* foo
, yang tidak masuk akal.
Solusi sederhana adalah dengan mendefinisikan alias menjadi mv -t /home/user/Trash
, yang akan berfungsi karena mv
mendukung
mv -t destination_dir file …sintaks sebagai alternatif untuk
mv file … destination_dirsintaksis.
Tapi Anda bisa mendapatkan fleksibilitas yang lebih besar dengan fungsi shell. Ini menggabungkan fleksibilitas skrip dengan overhead alias (rendah). Misalnya,
myrm() { mv "[email protected]" /home/user/Trash; }
akan menyebabkan myrm foo
untuk ditafsirkan sebagai mv foo /home/user/Trash
.
Solusi yang mungkin lebih mudah adalah dengan menggunakan trash-cli
kemasan. Kemudian Anda cukup melakukan alias myrm=trash
lalu trash foo
untuk mencapai apa yang Anda inginkan. Kecuali foo itu sekarang akan pergi ke ~/. local/share/Trash
Masalahnya adalah, dengan mv
Anda harus menggunakannya seperti mv source destination
.
Dengan alias Anda, sebaliknya mv destination source
.
Anda juga tidak memerlukan tanda bintang *
pada akhirnya, karena berfungsi dengan tujuan sebagai folder. Pastikan folder Anda /home/user/Trash
ada dengan mkdir /home/user/Trash
.
Untuk memecahkan ide alias Anda, saya akan merekomendasikan Anda untuk melihat pertanyaan stackoverflow ini:
- https://stackoverflow.com/q/7131670/7311363
Ini akan mengarah pada solusi itu; harap tambahkan ini ke ~/.bashrc
Anda dan lakukan source ~/.bashrc
setelah menambahkan:
myrm() {
/bin/mv "[email protected]" /home/user/Trash/
}