Saya punya sedikit pertanyaan di sini.
Jika saya memiliki dua file, katakan filea
dan fileb
, mv filea fileb
akan
- menghapus
fileb
- ganti nama
filea
menjadifileb
Maka jika saya memiliki dua direktori, katakan dira
dan dirb
, mv dira dirb
akan
- pindah
dira
kedirb
(itu akan menjadidirb/dira
)
Memperhatikan bahwa dalam kedua kasus tidak ada pemberitahuan atau pesan, maka ini sangat tidak konsisten bagi saya. Saya pikir mv dira dirb
harus menimpa dirb
dengan isi dira
(atau menggabungkan dua direktori di bawah direktori bernama dirb
).
Saya ingat pernah membaca di suatu tempat bahwa nama direktori dengan garis miring (seperti dira/
) diperlakukan seperti direktori, dan nama tanpa garis miring (seperti dira
) diperlakukan seperti file (tentu saja sampai batas tertentu). Pokoknya sekarang saya ingin membuat shell (zsh dan mungkin bash) menghormati notasi direktori saya dengan menggunakan slash. Apakah ada opsi terminal yang memungkinkan saya untuk menerapkannya?
Untuk memperjelas, inilah perilaku yang saya inginkan:
mv dira dirb
hasildirb
ditimpa dengan kontendira
mv dira dirb/
hasildira
dipindahkan kedirb
(didirb/dira
)
Adakah yang berpikir dengan cara yang sama dengan saya? Atau aku hanya aneh?
Jawaban:
Ya, ini agak tidak konsisten, bahkan di dalam alat GNU.
Satu masalah dengan proposal Anda adalah bahwa direktori yang tidak kosong tidak dapat dihapus. Terlepas dari itu,
-T
(di tanah GNU, bagaimanapun) mendekati apa yang Anda inginkan (kasus pertama):sumber
alias ren=mv -T
.Jika Anda hanya ingin memindahkan semuanya dari dira ke dirb, Anda dapat menjalankannya
mv dira/* dirb
.Sesuai halaman manual pada HP-UX saya.
The mv command moves:
+ One or more directory subtrees (directory1, [directory2, ...]) to a new or existing directory (dest-directory).
sumber
shopt -s dotglob
di bash akan memperbaikinya.