Di Bash, misalkan saya mengunjungi direktori, dan lalu direktori lain. Saya ingin menyalin file dari direktori pertama ke direktori kedua, tetapi tanpa menentukan nama path panjang dari mereka. Apa itu mungkin?
Solusi sementara saya adalah menggunakan /tmp
sebagai tempat sementara untuk menyimpan salinan file.cp myfile /tmp
ketika saya berada di direktori pertama, dan kemudian cp /tmp/myfile .
ketika saya berada di direktori kedua. Tapi saya dapat memeriksa apakah file akan menimpa apa pun di /tmp
.
Apakah ada yang mirip dengan clipboard untuk menyalin dan menempelkan file?
cd
perintah, sehingga Anda dapat hanyacd -
untuk kembali ke direktori sebelumnya, up-panah untuk mengingatcd
perintah, dan mengedit garis menjadicp
bukancd
. (ctrl-a (awal-line-), alt-d (kill-word)cp -a
,, ctrl-e (akhir-of-line)).M-x term
Anda dapat menggunakan papan klip Emacs.Jawaban:
Menggunakan Bash, saya hanya akan mengunjungi direktori:
Lalu, saya akan menggunakan jalan pintas
~-
, yang menunjuk ke direktori sebelumnya:Jika seseorang ingin mengunjungi direktori dengan urutan terbalik, maka:
sumber
"$OLDPWD"
. Mengapa tigacp
perintah terpisah ?cp -a ~-/file[1-3].txt .
cp
adalah contoh. Di dunia nyata, karakter wildcard juga dapat digunakan untuk menyederhanakan tugas salin.pushd
dan penguraiandirs
... tapi ini jauh, jauh lebih baik. Saya sarankan Anda menambahkan fakta yang"$OLDPWD"
persis sama dengan~-
dan lebih portabel (bermanfaat bagi mereka yang tidak menggunakanbash
.)~+
juga merupakan jalan pintas untuk"$PWD"
Jika saya melihat situasi itu datang sekali, saya mungkin:
Jika ada direktori yang saya temukan menyalin file secara tidak teratur, saya mungkin akan mendefinisikan beberapa variabel mnemonic untuk mereka di .profile saya.
Diedit untuk menambahkan:
Setelah tidur di atasnya, saya bertanya-tanya seberapa dekat saya bisa dengan perilaku GUI / OS lain di mana Anda memilih beberapa file, "potong" atau "salin" mereka, kemudian "tempel" mereka di tempat lain. Mekanisme seleksi terbaik yang bisa saya buat adalah otak / preferensi Anda ditambah fitur globbing shell. Saya tidak terlalu kreatif dalam penamaan, tetapi ini adalah ide dasar (dalam sintaks Bash):
Untuk menggunakannya, masukkan kode ke ~ / .bash_profile, lalu
cd
ke direktori sumber dan jalankan salah satucopyfiles glob*here
ataucutfiles glob*here
. Semua yang terjadi adalah shell Anda memperluas gumpalan dan menempatkan nama file ke dalam array. Anda kemudiancd
ke direktori tujuan dan menjalankanpastefiles
, yang mengeksekusicp
perintah untuk setiap file sumber. Jika sebelumnya Anda "memotong" file, maka pastefile juga menghapus file sumber (atau, mencoba untuk). Ini tidak melakukan pengecekan kesalahan (dari file yang ada, sebelum berpotensi mengalahkan mereka dengancp
; atau bahwa Anda memiliki izin untuk menghapus file selama "pemotongan", atau bahwa Anda dapat mengakses kembali direktori sumber setelah Anda pindah) itu).sumber
$OLDPWD
sudah ada, yang dapat disingkat menjadi~-
bash dan zsh.Saya pikir itu
~-
adalah jawaban yang tepat, tetapi perhatikan bahwa bash memiliki editor garis bawaan yang dapat menyalin / menempelkan teks.Jika Anda berada dalam mode emacs, Anda dapat mengingat
cd
perintah Anda dari histori, dan gunakan Control-uuntuk membunuh baris ke bash "clipboard" yang disebut kill-ring (ada juga cara lain). Anda kemudian dapat menarik string ini menjadi perintah baru kapan saja dengan Control-y. Jelas, dalam contoh Anda ini tergantung pada Anda telah menggunakan nama direktori absolut dalamcd
perintah Anda .Anda juga dapat menggunakan pengikatan kunci default yang menarik Meta-.. Ini menyalin kata terakhir dari perintah sebelumnya ke baris Anda saat ini. Jika diulang, setiap kali kembali satu perintah dalam sejarah. Jadi, jika Anda melakukan
cd /x
, makacd /y
diikuti olehcd
Meta-.Meta-.Anda akan memiliki/x
di masukan Anda.sumber
Memperluas jawaban dari Anderson M. Gomes , Bash memungkinkan Anda untuk merujuk ke direktori sebelumnya di tumpukan direktori Anda dengan mengetik
~N
(atau~+N
) di manaN
posisi pada tumpukan direktori. Sebagai contoh:Sekarang Anda dapat menyalin file di antara dua direktori sebelumnya, tidak satu pun dari yang sekarang, dengan:
Untuk mengatasi masalah poster asli, Anda harus:
Dengan sekumpulan file besar, Anda bisa mendaftar nama mereka dalam file manifes dan kemudian melakukan salinan dari dir sumber:
Lihat juga: ini bagian dari halaman manual Bash
Demikian pula, di Tcsh, Anda dapat menggunakan
=2
notasi (daripada~2
) untuk merujuk ke dir kedua pada tumpukan dir Anda.Lihat juga: ini bagian dari halaman manual Tcsh
sumber
ketika Anda berada di direktori pertama, katakanlah sumber atau
src
singkatnya, jalankanlalu
cd
ke direktori kedua dan jalankan:yang
-i
pilihan akan menanyakan apakah Anda ingin menimpa, jika ada file duplikatsumber
Variasi pada respons anderson-m-gomes. Menggunakan Bash, saya hanya akan mengunjungi direktori:
Kemudian, saya akan menggunakan variabel $ OLDPWD, yang menunjuk ke direktori sebelumnya:
Jika seseorang ingin mengunjungi direktori dengan urutan terbalik, maka:
sumber
$OLDPWD
berisi spasi, ini pecah. Juga, saya selalu menggunakancp -a
. Juga, sangat disayangkan bahwa penyelesaian tab rusak pada ekspansi variabel. Anda dapat menggunakan ctrl-alt-e untuk shell-perluas baris perintah saat ini, setelah mengetik bagian $ OLDPWD.~-
adalah jalan pintas untuk$OLDPWD
Jika dalam bash, saya akan menggunakan pushd dan popd . Perintah-perintah ini menyimpan tumpukan direktori FIFO yang berguna untuk digunakan nanti. Anda dapat berkonsultasi dengan stack kapan saja menggunakan dirs .
Dengan demikian saya akan lakukan:
sumber
Anda bisa menggunakan
xclip
:Contoh:
Kunjungi juga xsel .
sumber
tar | gzip
masuk / keluar dari clipboard X. Agak kikuk dibandingkan dengancp
, dan tidak menggeneralisasi untuk membuat symlink atau hardlink. (cp -as
ataucp -al
)Anda dapat memeriksa
clipboard-files
skrip di sini: https://github.com/larspontoppidan/clipboard-filesIni memberikan perintah seperti
ccopy
,ccut
dancpaste
yang menggunakan clipboard lingkungan desktop dan memungkinkan penyalinan / menempel file secara intuitif:Saat clipboard lingkungan desktop digunakan, copy / paste akan berinteraksi dengan file yang diletakkan di clipboard dalam program lain seperti manajer file dan IDE. Setidaknya itu berfungsi pada desktop seperti Gnome.
Pengungkapan penuh, saya menulis naskah setelah menyerah menemukan sesuatu seperti itu di luar sana ...
sumber