Bagaimana cara menukar dua argumen baris perintah terakhir?

5
$ ln -s ./dir/target.txt /path/to/source.txt{cursor here}

Bagaimana cara swap file yang diketikkan nama file di baris perintah? Alt+ Tbertukar kata, bukan nama file, menghasilkan ln -s ./dir/target.txt /path/to/txt.source.

Idealnya solusi juga harus diinterpretasikan "filenames with quotes.txt"dengan benar.

Bisakah itu dilakukan dengan beberapa konfigurasi readline dan / atau bash, atau dengan beberapa pintasan pintas yang ada?

Vi.
sumber

Jawaban:

5

Sebagian jawaban berdasarkan ini . {}menunjukkan kursor:

$ ln -s ./dir/target.txt /path/to/source.txt{}

Ctrl+ W(ulangi ini jika satu kali saja tidak cukup, tetapi jangan Backspace)

$ ln -s ./dir/target.txt {}

Ctrl+ { , , , }, ,

$ ln -s {}./dir/target.txt 

Ctrl+ Y,Space

$ ln -s /path/to/source.txt. {}/dir/target.txt

Siap.

Vi.
sumber
Berdasarkan jawaban Anda dan tautan yang Anda berikan, saya baru saja belajar banyak yang tidak saya ketahui tentang bash :) Di mana orang menemukan permata ini?
Madivad
4

Saya pikir ini bisa dilakukan dengan menggunakan perintah bang:

!:0 !:2 !:1

!:0 word designator 0, the zeroth word.
!:n The nth word.


man bash

Penunjuk kata, bagian.

Leo Gutiérrez
sumber
Hanya memberikan cuplikan kode tidak cukup tanpa penjelasan.
peterh
Saya mengetik !:0 !:2 !:1setelah itu /path/to/source.txt, tetapi tidak ada yang terjadi. Jelas, saya tidak ingin mengeksekusi baris perintah yang salah.
Vi.
Word Designators Word designators are used to select desired words from the event.-> Acara? Apakah itu hal menjengkelkan ( bash: !": event not found) yang masuk ke jalan saya dan menjatuhkan baris perintah saya ketika saya lupa untuk melarikan diri !?
Vi.