Apa cara tercepat untuk menambahkan teks ke file dari baris perintah?


30

Kadang-kadang saya berpikir bahwa saya ingin menulis ke dalam file ketika saya di terminal. Saya ingin semua catatan ini dalam file yang sama, hanya terdaftar satu demi satu. Saya juga ingin tag tanggal / waktu pada masing-masing tag

Apakah mungkin melakukan ini tanpa harus membuka file setiap kali? Bisakah saya memasukkannya ke terminal dan menambahkannya ke file setiap kali dengan perintah atau skrip?

Saya menggunakan GNU BASH.

Jawaban:


25

Tulis sendiri skrip shell yang disebut "n". Taruh ini di dalamnya:

#!/bin/sh
notefile=/home/me/notefile
date >> $notefile
emacs $notefile -f end-of-buffer

Saya merekomendasikan ini daripada cat >> notefilekarena:

  1. Suatu hari Anda akan terburu-buru sehingga Anda akan mencari-cari >> dan ketik> sebagai gantinya dan meniup file Anda.
  2. Emacs dimulai dalam lima per seratus detik di Mac Mini saya. Butuh sepersepuluh detik untuk memulai pada sistem berbasis Celeron berusia sepuluh tahun yang telah saya duduki. Jika Anda tidak bisa menunggu selama itu untuk mengetik, maka Anda sudah menjadi mesin dan tidak perlu membuat catatan. :)

Jika Anda bersikeras menghindari editor teks, gunakan fungsi shell:

n () { date >> /home/me/notefile; cat >> /home/me/notefile; }

yang harus bekerja di semua shell yang mengklaim kompatibilitas shell Bourne.


1
Bagaimana nfungsi menulis ke file? Tidakkah Anda berarti sesuatu seperti echo "$*"daripada UUOC ? Bagaimana cara memasukkan tag tanggal / waktu?
jasonwryan

1
Tidak terlalu berguna. Bunyinya dari stdin, di situlah pengguna akan mengetik catatan mereka. Saya memang lupa datestamp.
Kyle Jones

Saya tidak selalu setuju tentang UUOC, tetapi Anda harus mengembalikannya pada tanggal ...
jasonwryan

5
+1 coding defensif bagus dan alasan terhadap kesalahan ketik yang tak terhindarkan
msw

2
Kyle, Anda jelas tidak memiliki 90MB .emacs.d. Astaga, aku harus membersihkannya.
quodlibetor

19

Juga, untuk menulis banyak baris ke file dari baris perintah, lakukan:

cat >> sometextfile.txt << EOF
text
more text
and another line
EOF

1
Atau cat > sometextfile.txt << EOFuntuk menimpa file yang ada.
mbomb007

10

Cukup gunakan echo:

echo $(date) Hi. >> notes.txt

Anda dapat menggunakan >> untuk menambahkan file, atau menggunakan> untuk menimpanya.


3

Banyak lonceng dan peluit yang rapi di sini!

Metode CIUMAN:

date >>filename; cat >>filename


1

Tergantung pada kebutuhan Anda, syslogd mungkin merupakan alat lain untuk dibaca. Perintah

theuser@tetrad:~$ logger This message is sent to syslog

akan mencatat pesan dengan fasilitas user.notice. Dengan banyak sistem Linux, ini akan cukup untuk membuat file /var/log/user.log dibuka dan ditambahkan, dengan yang lain Anda mungkin perlu mendefinisikan penanganan untuk fasilitas tersebut dan tingkat log (atau, fasilitas mana pun yang Anda pilih - local0 ke local7 fasilitas biasanya bebas untuk menetapkan hal-hal seperti ini.

Itu mendapat manfaat karena mampu (alias dapat dikonfigurasi) untuk mengirim catatan dari mesin klien ke server logging pusat, sesuatu yang saya suka gunakan untuk melacak tindakan administratif karena menjaga stempel waktu, informasi pengguna dan host secara otomatis, sambil menjaga tindakan dalam urutan .

hasil keluaran dalam file lokal:

theuser@tetrad:~$ tail /var/log/user.log
Jan 31 07:18:37 tetrad theuser: This message is sent to syslog

Contoh untuk baris konfigurasi syslog di Solaris :

local5.notice             ifdef(`LOGHOST', /var/log/diary, @loghost)

Catatan: Ini ifdefdiproses dengan m4, pada mesin dengan hostname / hostalias "loghost", pesan akan dicatat ke file / var / log / diary, pada semua yang lain, mereka akan dikirim ke layanan syslog jarak jauh di loghost. Untuk menguji konfigurasi seperti ini, file config dapat dikirim melalui m4 untuk ekspansi (biarkan -D LOGHOSTuntuk melihat bagaimana tampilannya pada sistem yang tidak disebut loghost :

theuser@solstice$ /usr/ccs/bin/m4 -D LOGHOST /etc/syslog.conf



0

Menggabungkan beberapa jawaban berbeda untuk mencapai apa yang saya cari, yang merupakan beberapa pilihan.

  1. Cepat
    user @ hostname: ~ / Dokumen $ echo text >> nama file
    user @ hostname: ~ / Dokumen $ nama file kucing
    teks
    
  2. Beberapa baris
    user @ hostname: ~ / Documents $ cat >> filename2 << EOF
    > baris teks 1
    > baris teks 2
    > baris teks 3
    > EOF
    user @ hostname: ~ / Documents $ cat filename2  
    baris teks 1
    baris teks 2
    baris teks 3
    
    1. Ubah file pada nomor baris yang diberikan

      user @ hostname: ~ / Documents $ sed -i '2iinserting new line' filename2
      user @ hostname: ~ / Documents $ cat filename2
      baris teks 1
      memasukkan baris baru
      baris teks 2
      baris teks 3
      
    Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
    Licensed under cc by-sa 3.0 with attribution required.