コマンドラインからファイルにテキストを追加する最も簡単な方法は何ですか?


30

時々、端末にいる間にファイルに書き込みたいと思うことがあります。これらのメモはすべて同じファイルに入れて、次々にリストしたいだけです。また、それぞれに日付/時刻タグが必要です。

毎回ファイルを開かずにこれを行うことは可能ですか?ターミナルに入力して、コマンドまたはスクリプトで毎回ファイルに追加できますか?

GNU BASHを使用しています。

回答:


25

「n」というシェルスクリプトを自分で作成します。これを入れてください:

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

代わりにこれをお勧めしますcat >> notefile

  1. ある日、あなたは急いで>>を手探りし、代わりに>を入力して、ファイルを吹き飛ばします。
  2. 私のMac Miniでは、Emacsは5分の1秒で始まります。私が座っている10年前のCeleronベースのシステムで起動するには、1/10秒かかります。入力を開始するのにそれほど長く待てない場合、あなたはすでにマシンであり、メモを取る必要はありません。:)

テキストエディターの使用を避けたい場合は、シェル関数を使用します。

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

これは、Bourneシェルの互換性を主張するすべてのシェルで機能するはずです。


1
n関数はどのようにファイルに書き込みますか?UUOCecho "$*"ではなくaのようなものではありませんか?日付/時刻タグはどのように組み込まれますか?
-jasonwryan

1
まったく役に立たないわけではありません。ユーザーがメモを入力する場所であるstdinから読み取ります。ただし、日付スタンプは忘れました。
カイルジョーンズ

私は必ずしも
UUOCに

5
避けられないタイプミスに対する素敵な防御コーディング理論的根拠を+1 。
msw

2
カイル、あなたは明らかに90MBを持っていません.emacs.d。うん、それをきれいにする必要がある。
-quodlibetor

19

また、コマンドラインからファイルに複数の行を書き込むには、次のようにします。

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

1
またはcat > sometextfile.txt << EOF、既存のファイルを上書きします。
mbomb007

10

ただ使用するecho

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

>>を使用してファイルに追加するか、>を使用して上書きできます。



2

コンピューターにrubyがインストールされている場合は、https://github.com/minhajuddin/taskrを使用できます。このようにして、タグと経過時間を使用してメモの素晴らしいビューを取得します。

Taskrスクリーンショット


よく、スクリーンショットは非常によく見えますが、可能であれば、コピーと貼り付けを使用する方がはるかに優れています。
ペテルはモニカを

1

ニーズによっては、syslogdを熟読するための別のツールになる場合があります。コマンド

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

ファシリティuser.noticeでメッセージを記録します。多くのLinuxシステムでは、これはファイル/var/log/user.logを開いて追加するのに十分です。他のシステムでは、その機能とログレベル(または、選択した機能-local0 local7の施設は通常、このようなものに自由に割り当てることができます。

タイムスタンプ、ユーザーおよびホスト情報を自動的に保存し、アクションを順番に保持するため、管理アクションを追跡するために使用したい、クライアントマシンから中央ロギングサーバーにノートを送信できる(設定可能)という利点があります。

ローカルファイルの結果出力:

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

Solarisの syslog設定行の例:

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

注:ifdefm4、ホスト名/ hostalias "loghost"のマシンでで前処理され、メッセージはファイル/ var / log / diaryに記録され、他のすべてでは、loghostのリモートsyslogサービスに送信されます。この種の構成をテストするには、構成ファイルをm4経由で送信して展開します(loghost-D LOGHOSTと呼ばれないシステムでどのように見えるかを確認するために残してください:

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



0

いくつかの異なる答えを組み合わせて、私が求めていたものを達成しました。これは複数の選択肢でした。

  1. クイック
    user @ hostname:〜/ Documents $エコーテキスト>>ファイル名
    user @ hostname:〜/ Documents $ catファイル名
    テキスト
    
  2. 複数行
    user @ hostname:〜/ Documents $ cat >> filename2 << EOF
    >テキスト行1
    >テキスト行2
    >テキスト行3
    > EOF
    user @ hostname:〜/ Documents $ cat filename2  
    テキスト行1
    テキスト行2
    テキスト行3
    
    1. 指定された行番号のファイルを変更します

      user @ hostname:〜/ Documents $ sed -i '2iinserting new line' filename2
      user @ hostname:〜/ Documents $ cat filename2
      テキスト行1
      新しい行を挿入する
      テキスト行2
      テキスト行3
      
    弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
    Licensed under cc by-sa 3.0 with attribution required.