Ketika saya mengubah file di cygwin bash dengan perintah sed, file tersebut akan terkunci.
Mereproduksi:
- Buka
cmd
dancd
ke direktori non-pengguna (fetemp
) echo aaa > test.txt
- Buka di texteditor, tambahkan baris, coba simpan => karya
%CYGWIN_HOME%\bin\bash -c "sed -i 's/aaa/bbb/' test.txt
"- Di texteditor, tambahkan baris lain dan coba simpan => "Akses ditolak"
WTF ?! Bagaimana saya bisa menyimpan file tanpa mengunci, atau melepaskan pegangan file sesudahnya?
Izin keamanan Windows tampaknya benar-benar kacau pada file:
Izin sebelumnya:
Izin setelah:
Namun itu berfungsi di direktori pengguna (
Desktop
)- Saya memeriksa file dengan LockHunter tetapi tidak ada proses yang muncul untuk mengunci file
- Cygwin FAQ menyebutkan gangguan dengan beberapa program. Itu mencoba menghapus Antivir dan Catalyst dan me-reboot.
- Mencoba
UnxTools(macet),GnuWin32(tidak mendukung substitusi inplace),Interex(pemasang tidak mendukung W7 Pro) ... * sigh *
Jawaban:
sesuai dengan Mailinglist Cygwin , gunakan noacl untuk pemasangan
atau langsung di Windows
../cygwin/fstab
sebelum memulai Cygwin bashsumber
Saya memiliki masalah yang sama persis setelah menggunakan find dalam kombinasi dengan grep dan sed di bawah cygwin untuk memproses folder yang penuh dengan file kode sumber Java secara otomatis. Sed mengacaukan izin file NTFS dari file saya, yang masih persisten setelah reboot, jadi saya mencari cara mudah untuk memperbaikinya.
Saya benar-benar menemukan cara mudah untuk mendapatkan izin file kembali ke nilai lama. Ini dapat dilakukan untuk seluruh folder secara rekursif, yang penting bagi saya, karena saya telah memodifikasi begitu banyak file sekaligus (beberapa ratus). Sayangnya, saya hanya tahu nama Jerman untuk entri menu, jadi saya tidak yakin bagaimana entri menu (di Windows Explorer) disebut dalam bahasa Inggris yang benar.
Dalam bahasa Jerman, Anda melakukannya: Klik kanan pada folder induk folder tempat saya menggunakan "Eigenschaften" (menu konteks), "Sicherheit" (tab pada dialog), "Erweitert" (tombol), "Berechtigungen ändern ... "(tombol dengan UAC prompt), sekarang saya hanya memeriksa kedua kotak centang (yang atas sudah diatur, tetapi yang lebih rendah tidak, tetapi harus). Sekarang saya klik "OK" untuk tiga kali.
Perubahan sebenarnya yang dilakukan oleh ini adalah bahwa kotak centang bawah memaksa Windows untuk mengganti izin saat ini untuk konten folder secara rekursif dengan izin folder yang Anda klik kanan, sehingga semua izin yang rusak diperbaiki. Bekerja seperti pesona bagi saya, dan juga sangat cepat (hanya beberapa detik untuk banyak file).
Kemungkinan terjemahan (ditebak oleh saya):
sumber
Saya menjalankan serangkaian tes saya sendiri, dan, memang, izin file tersebut dapat diatur ke r-xr-x --- setelah perintah sed dan perintah cygwin berikutnya akan menganggap ini sebagai file hanya baca.
Izin -r-xr-x --- ini mencegah penulisan selanjutnya oleh beberapa perangkat lunak:
Jadi, solusinya adalah menambahkan chmod tambahan pada file
sumber
chmod 777 test.txt
perintah untuk menyelesaikan masalah ini.