Apakah ada manfaat membuat file dengan sentuhan sebelum diedit .. seperti:
touch foo
vi foo
dibandingkan dengan langsung mengeditnya? Suka:
vi foo
Saya melihat beberapa tutorial menggunakan yang pertama ( touch
lalu vi
).
touch
ing file pertama kali menegaskan bahwa Anda benar-benar memiliki kemampuan untuk membuat file, daripada membuang-buang waktu di editor hanya untuk mengetahui bahwa sistem file hanya-baca atau masalah lain.
touch
memungkinkan Anda untuk melakukanchmod +x
sesudahnya, sebelum mengedit, yang masuk akal jika Anda menulis#!/bin/bash
skrip shell.:w
hal pertama setelah memulaivi
sekalipun. (dan:chmod +x %
jika Anda ingin membuatnya dapat dieksekusi)touch
mungkin gagal di manavi
's:w!
akan berhasil meskipun (misalnya jikafile
ada tetapi Anda tidak pemiliknya dan tidak memiliki akses tulis untuk itu, sementara Anda memiliki akses tulis ke direktori saat ini). Sebaliknya,touch
mungkin berhasil tapivi
's:w
atau:w!
mungkin gagal jika Anda pemilik sedang file, tetapi tidak memiliki akses tulis untuk itu atau ke direktori saat ini (Anda akan bisa bekerja di sekitarnya dengan:!chmod +w %
(beberapavi
implementasi sepertivim
dapat melakukan secara otomatis setelah:w!
))."foo" [readonly]
. Dan lagi ketika memasuki mode memasukkan:Warning: Changing a readonly file.
Terlepas dari jawaban yang diberikan, satu keuntungan sentuhan adalah bahwa pengguna lain / terminal mengedit file yang sama saat Anda menyentuhnya, akan menerima peringatan ketika mereka mencoba menyimpan perubahan.
Ini akan mengingatkan mereka meskipun Anda belum melakukan perubahan apa pun dan hanya menyentuh file.
sumber
Terlepas dari jawaban yang diterima:
Perlu dicatat bahwa
touch
digunakan untuk memperbarui cap waktu file. Jika Anda menggunakantouch
file yang ada, itu akan memperbarui timestamp file ke tanggal dan waktu saat ini. Jika file tidak ada, itu membuat file kosong dengan tanggal dan waktu saat ini sebagai timestamp.vi
, di sisi lain, tidak membuat file baru kecuali Anda menulisnya.Misalnya, jika saya mengetik
vi test.txt
, mengetik beberapa catatan, lalu mengetik:q!
;test.txt
tidak akan ada.sumber
Tanpa
touch
, file baru tidak akan ada sampai Anda memintavi
untuk menulisnya.Pertimbangkan sistem multi-pengguna (mungkin Anda menggunakan sistem file yang dipasang di jaringan yang digunakan bersama oleh banyak sistem, masing-masing dengan banyak pengguna). Menjalankan
touch
akan memastikan Anda memiliki file (dan Anda dapat menulisnya) dan bahkan memperbarui timestamp. Pengguna lain yang ingin membuat file seperti itu akan melihat bahwa Anda memilikinya. Jika sudah ada dan pengguna lain ingin menghapus atau menggantinya, mereka akan melihat bahwa itu baru saja dimodifikasi dan mungkin berpikir dua kali.sumber
Tidak ada manfaatnya
touch
lebih dulu;vi
akan membuat file jika tidak ada.Jawaban yang diterima mengatakan itu memeriksa apakah Anda dapat menulis di sana sebelum membuang-buang waktu di editor. Benar, tapi sekarang Anda akan membuang waktu mengetik
touch
setiap waktu. Tidak dapat menulis di suatu tempat cukup luar biasa dibandingkan dengan seberapa sering itu hanya bekerja (selama Anda ingatsudo
untuk file di luar direktori home atau/tmp
, atau login sebagai root).Cukup buka editor dan lakukan apa yang Anda inginkan, kemudian cobalah untuk menyimpan file. Jika tidak berhasil, bahkan dengan
:w!
, simpan di tempat lain (:w ~/asdf
) dan perbaiki masalahnya. Setelah itu tetap, Anda dapat menyalin isi file dari file sementara dengan aslinya:cat ~/asdf > /mnt/example.txt && rm ~/asdf
. Alasan kami menggunakancat
alih-alihmv
ataucp
karena menggunakan izin tujuan dan atribut lainnya.Selain itu, untuk beberapa penggunaan baris perintah yang lebih lanjut, Anda bisa melatar belakangi
vi
dengan Ctrl+ Zsaat Anda memperbaiki masalah (atau menggunakan:suspend
, atau:sus
), dan akhirnyafg
lagi untuk menjalankan perintah tulis.Sunting: posting ditingkatkan dalam menanggapi komentar / u / G-Man . Terima kasih!
sumber
/mnt/example.txt
tersebut tidak seharusnya dapat dibaca dunia, tetapi umask Anda disetel ke sesuatu yang permisif seperti 22, maka file tersebut/tmp/asdf
akan dapat dibaca dunia. Jika ada orang lain di sistem, mereka mungkin dapat membaca salinan sementara file tersebut. (2) File/mnt/example.txt
ini mungkin tidak seharusnya bisa ditulis oleh dunia, tetapi, jika ada orang jahat dalam sistem, mereka mungkin dapat membaca salinan sementara dari file dan menggantinya dengan versi modifikasi sebelum Anda memindahkan / menyalin kembali ke lokasi yang tepat. ... (Lanjutkan)/tmp
dapat mencegah hal ini.) (3) Perintahmv /tmp/asdf /mnt/example.txt
akan benar-benar menghancurkan arus/mnt/example.txt
dan menggantinya dengan/tmp/asdf
. Anda ingin mengganti isi dari/mnt/example.txt
dengan isi dari/tmp/asdf
. Dengan menggunakanmv
, Anda mengatur/mnt/example.txt
untuk memiliki atribut yang sama dengan/tmp/asdf
- mungkin dimiliki oleh Anda dan dapat dibaca dunia. Mungkin lebih baikcp /tmp/asdf /mnt/example.txt
atau bahkan lebihcat /tmp/asdf > /mnt/example.txt
. ... PS (4) Anda dapat menangguhkanvi
dengan mengetik:suspend
(atau:sus
, singkatnya)./tmp
, tetapi tidak ada alasan untuk tidak menulis~/
. Saya juga tidak berpikir bahwa itu akan menggantikan atribut. Saya akan mengedit posting saya, terima kasih :)Tidak ada manfaatnya.
vi
akan membuat file jika tidak ada.sumber
vi
adalah editor teks visual (vi = visual) Lagipula visual dibandingkan dengan "ed", yang memungkinkan Anda melihat dan mengubah satu baris teks pada satu waktu.The
touch
perintah update timestamp pada file yang ada, atau membuat file baru jika file tidak sudah ada. Ini bagus untuk menguji hal-hal yang sangat tergantung pada cap waktu.Sekarang jika file Anda adalah file teks, atau belum ada, membukanya dengan vi, kemudian mengeluarkan perintah
:wq
ke vi, akan memiliki hasil yang sama dengan menyentuh file itu. Itulah satu-satunya cara kedua perintah itu sama sekali.sumber
Khusus untuk digunakan bersama
vi
, tidak perlu membuat file sebelum Anda mengeditnya:vi
dapat digunakan untuk membuat dan menyimpan file baru. Namun, ada konteks panggilan di mana file perlu ada. Misalnya, pada sistem saya (OS X) saya dapat meluncurkan editor GUI yang sesuai (ditentukan berdasarkan jenis file) seperti ini:Ini akan terbuka
foo.txt
di TextEdit, atau di emacs, atau apa pun yang saya tentukan sebagai editor pilihan saya untuk file teks, dan lepaskan proses sehingga saya mendapatkan prompt saya segera kembali. (open bar.py
mungkin membukanya di IDLE, editor python; dll.) Atau saya dapat secara eksplisit meminta emacs:Tetapi
open
membutuhkan file yang sudah ada, jika tidak menimbulkan kesalahan. Jadi saya harus mendefinisikanemacs
sebagai fungsi shell berikut, yang memungkinkan saya menulisemacs foo
untuk meluncurkanemacs
GUI bahkan jikafoo
tidak ada.sumber
vi digunakan untuk mengedit file sebagai pengguna, sementara sentuhan dapat mengatur cap waktu di atasnya dan sebagian besar digunakan dalam skrip dan semacamnya.
Cara lain untuk membuat file adalah:
sumber
zsh
, identik dengancat >newfile.txt
dan perlu Anda tekan Ctrl + D.Dengan sentuhan halaman manual tugas utamanya adalah mengubah cap waktu file.
Ofc juga membuat file dengan cap waktu saat ini dan kemudian Anda dapat mengedit file.
VI adalah editor teks yang melakukan apa yang dikatakannya mengedit teks membuka, menyimpan, mengedit file dll.
Semua adalah rasa pengguna dan habbit: sentuh lalu vi atau vi file.txt hal yang sama warna yang berbeda.
sumber
touch
perintah mengubah tanggal dan waktu file dengan cap waktu saat ini.jika file tidak ada, itu membuat file baru dengan tanggal dan waktu.
vi
Editor digunakan untuk mengedit file jika file tidak ada itu membuat file baru kecuali jika kita tidak menyimpan file.sumber