Bir dosyaya komut satırından metin eklemenin en hızlı yolu nedir?


29

Bazen terminaldeyken bir dosyaya yazmak istediğimi düşündüm. Bu notların hepsinin aynı dosyada olmasını istiyorum, birbiri ardına sıralı. Ayrıca her birinde bir tarih / saat etiketi istiyorum.

Bunu her seferinde dosyayı açmak zorunda kalmadan yapmak mümkün mü? Sadece terminale girip her seferinde bir komut veya komut dosyasıyla dosyaya ekleyebilir miyim?

GNU BASH kullanıyorum.

Yanıtlar:


25

Kendine "n" adında bir kabuk betiği yaz. Bunu içine koy:

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

Bunun yerine bunu tavsiye ederim cat >> notefile:

  1. Bir gün o kadar acele edeceksin ki, >> ve>> kelimelerini araştıracaksın ve dosyanızı mahvedeceksin.
  2. Mac Mini'de Emacs, saniyenin beşte biri ile başlıyor . Oturup oturduğum on yıllık Celeron tabanlı bir sisteme başlamak bir saniyenin onda birini alıyor. Yazmaya başlamak için o kadar bekleyemezseniz, o zaman zaten bir makinisiniz ve not almanıza gerek yoktur. :)

Bir metin düzenleyiciden kaçınmakta ısrar ediyorsanız, bir kabuk işlevi kullanın:

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

Bourne kabuğunun uyumluluğunu iddia eden tüm mermilerde çalışması gerekir.


1
nFonksiyon dosyaya nasıl yazıyor? UUOCecho "$*" yerine bir şey demek istemiyor musun? Tarih / saat etiketini nasıl içerir?
jasonwryan

1
Tamamen işe yaramaz değil. Kullanıcının notunu yazacağı yer olan stdin'den okur. Yine de tarih damgasını unuttum.
Kyle Jones

UUOC hakkında kesin olarak hemfikir değilim, ancak tarih için geri
döndünüz

5
Kaçınılmaz yazım kuralına karşı +1 güzel savunma kodlama ve mantık.
msn,

2
Kyle, belli ki 90 MB'ınız yok .emacs.d. Yikes, onu temizlemeliyim.
quodlibetor,

18

Ayrıca, bir dosyaya komut satırından birden çok satır yazmak için şunu yapın:

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

Veya cat > sometextfile.txt << EOFvarolan dosyanın üzerine yazmak için.
mbomb007

10

Sadece kullan echo:

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

Bir dosyaya eklemek için >> tuşunu kullanabilir veya üzerine yazmak için> tuşunu kullanabilirsiniz.


3

Burada bir sürü zarif çan ve ıslık var!

KISS yöntemi:

date >>filename; cat >>filename


1

Gereksinimlerinize bağlı olarak syslogd, kullanmanız gereken başka bir araç olabilir. Komuta

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

iletiyi tesis user.notice ile kaydeder. Pek çok Linux sisteminde bu, /var/log/user.log dosyasının açılması ve eklenmesi için yeterli olacaktır; başkalarıyla, bu tesis için bir işlem tanımlamanız ve kayıt seviyesi (veya hangisini seçerseniz seçin - yerel0 Yerellere7 tesisler genellikle bu gibi şeyleri atamak için ücretsizdir.

Müşteri makinelerinden merkezi bir günlük sunucusuna not gönderebilme (yani yapılandırılabilir) özelliği, eylemleri düzenli tutarken zaman damgasını, kullanıcı ve ana bilgisayar bilgilerini otomatik olarak koruduğu için yönetimsel eylemi izlemek için kullandığım bir şey. .

yerel dosyada sonuç çıktı:

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

Solaris'te syslog yapılandırma satırı örneği :

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

Not: ifdefile önişlemdedir m4mesajları tüm diğerleri üzerinde, onlar loghost en uzak syslog hizmetine gönderilecek, dosya / var / log / günlüğüne kaydedilir, hostname / hostalias "loghost" ile makinede. Konfigürasyonda bu tür test etmek için, yapılandırma dosyası uzakta terk genişleme (için m4 aracılığıyla gönderilebilir -D LOGHOSTadı değil bir sistemde nasıl görüneceğini görmek için loghost :

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



0

Aradığımı elde etmek için birkaç farklı cevabı birleştirmek, ki bu çok seçenekliydi.

  1. Hızlı
    user @ hostname: ~ / Documents $ eko metni >> dosyaadı
    user @ hostname: ~ / Belgeler $ cat dosya adı
    Metin
    
  2. Birden çok satır
    user @ hostname: ~ / Belgeler $ cat >> dosyaadı2 << EOF
    > metin satırı 1
    > metin satırı 2
    > metin satırı 3
    > EOF
    user @ hostname: ~ / Belgeler $ cat dosyaadı2  
    metin satırı 1
    metin satırı 2
    metin satırı 3
    
    1. Bir dosyayı belirli bir satır numarasında değiştirme

      user @ hostname: ~ / Documents $ sed -i '2 yeni satır ekliyor' dosyaadı2
      user @ hostname: ~ / Belgeler $ cat dosyaadı2
      metin satırı 1
      yeni satır ekleyerek
      metin satırı 2
      metin satırı 3
      
    Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
    Licensed under cc by-sa 3.0 with attribution required.