GNU/Linux >> Belajar Linux >  >> Linux

Secara tidak sengaja menggunakan pengalihan keluaran > alih-alih pipa |

Untuk mencegah file yang ada ditimpa oleh pengalihan > gunakan noclobber opsi di bash atau shell mirip POSIX (juga di (t)csh dari mana fitur sebenarnya berasal, meskipun Anda melakukan set noclobber bukannya set -o noclobber /set -C di sana). Kemudian, jika Anda perlu memaksa untuk mengganti file, gunakan >| operator pengalihan (>! di (t)csh ).

Contoh:

$ echo abc > file
$ set -o noclobber
$ echo xyz > file
bash: file: cannot overwrite existing file
$ echo xyz >| file
$ cat file
xyz

BTW, Anda dapat memeriksa pengaturan saat ini dengan set -o :

$ set -o
...
monitor         on
noclobber       on
noexec          off
...

Sayangnya saya curiga Anda harus menulis ulang. (Jika Anda memiliki cadangan, inilah saatnya untuk mengeluarkannya. Jika tidak, saya sangat menyarankan Anda menyiapkan sistem cadangan untuk masa mendatang. Banyak opsi tersedia, tetapi di luar topik untuk jawaban ini.)

Saya menemukan bahwa meletakkan executable di direktori terpisah, dan menambahkan direktori itu ke PATH membantu. Dengan cara ini saya tidak perlu mereferensikan executable dengan jalur eksplisit. Direktori program pilihan saya untuk skrip pribadi (pribadi) adalah "$HOME"/bin dan itu dapat ditambahkan ke jalur pencarian program dengan PATH="$HOME/bin:$PATH" . Biasanya ini akan ditambahkan ke skrip startup shell .bash_profile dan/atau .bashrc .

Terakhir, tidak ada yang menghentikan Anda menghapus izin menulis untuk diri Anda sendiri di semua program yang dapat dijalankan:

touch some_executable.py
chmod a+x,a-w some_executable.py    # chmod 555, if you prefer

ls -l some_executable.py
-r-xr-xr-x+ 1 roaima roaima 0 Jun 25 18:33 some_executable.py

echo "The hunting of the Snark" > ./some_executable.py
-bash: ./some_executable.py: Permission denied

Saya sangat menyarankan untuk memiliki skrip penting di bawah repo git , disinkronkan dari jarak jauh (platform yang dihosting sendiri akan melakukannya), seperti yang dikatakan komentar @ casey.

Dengan cara ini Anda terlindung dari kesalahan manusia yang buruk seperti mengembalikan file ke status kerja sebelumnya dan menjalankannya lagi.


Linux
  1. Pelajari Dasar-dasar Cara Kerja Pengalihan I/O (Input/Output) Linux

  2. Tujuan Menggunakan Fifo Vs File Sementara Atau Pipa?

  3. Redirect Dan Output Pipa?

  1. Pengalihan Io Dan Perintah Kepala?

  2. Output Yang Akan Disimpan Dalam File Bernama Sama Dengan File Input?

  3. Simpan Semua Output Terminal Ke File?

  1. Bagaimana Cara Mengatur Pengguna Php-fpm Menjadi Pengguna Php Alih-alih Data Www?

  2. Bagaimana cara mem-pipe atau mengarahkan output dari curl -v?

  3. pengalihan keluaran on-the-fly, melihat keluaran pengalihan file saat program masih berjalan