Cách nhanh nhất để thêm văn bản vào một tệp từ dòng lệnh là gì?


29

Thỉnh thoảng tôi có một suy nghĩ rằng tôi muốn viết vào một tập tin trong khi tôi đang ở nhà ga. Tôi muốn tất cả các ghi chú trong cùng một tệp, chỉ được liệt kê từng cái một. Tôi cũng muốn một thẻ ngày / thời gian trên mỗi một.

Có thể làm điều này mà không cần phải mở tệp mỗi lần? Tôi chỉ có thể nhập nó vào thiết bị đầu cuối và nó được gắn vào tệp mỗi lần bằng một lệnh hoặc tập lệnh?

Tôi đang sử dụng GNU BASH.

Câu trả lời:


25

Viết cho mình một kịch bản shell gọi là "n". Đặt cái này trong đó:

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

Tôi khuyên bạn nên điều này thay cat >> notefilevì bởi vì:

  1. Một ngày nào đó bạn sẽ vội vàng đến mức bạn sẽ dò dẫm >> và gõ> thay vào đó và thổi bay tập tin của bạn.
  2. Emacs bắt đầu sau năm phần trăm giây trên Mac Mini của tôi. Phải mất một phần mười giây để bắt đầu một hệ thống dựa trên Celeron mười năm tuổi mà tôi đang ngồi xung quanh. Nếu bạn không thể đợi lâu như vậy để bắt đầu nhập, thì bạn đã là một máy và không cần ghi chú. :)

Nếu bạn khăng khăng tránh trình soạn thảo văn bản, hãy sử dụng hàm shell:

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

mà sẽ hoạt động trong tất cả các shell yêu cầu khả năng tương thích vỏ Bourne.


1
Làm thế nào để nchức năng ghi vào tập tin? Đừng bạn có nghĩa là một cái gì đó giống như một echo "$*"chứ không phải UUOC ? Làm thế nào để nó kết hợp thẻ ngày / thời gian?
jasonwryan

1
Không hoàn toàn vô dụng. Nó đọc từ stdin, đó là nơi người dùng sẽ gõ ghi chú của họ. Tôi đã quên dấu thời gian, mặc dù.
Kyle Jones

Tôi không nhất thiết phải đồng ý về UUOC, nhưng bạn có thể quay lại ngày ...
jasonwryan

5
+1 mã hóa phòng thủ đẹp lý do chống lại lỗi đánh máy không thể tránh khỏi.
msw

2
Kyle, rõ ràng là bạn không có 90MB .emacs.d. Rất tiếc, tôi cần phải dọn dẹp nó.
quodlibetor

18

Ngoài ra, để viết nhiều dòng vào một tệp từ dòng lệnh, hãy làm:

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

Hoặc cat > sometextfile.txt << EOFđể ghi đè lên tập tin hiện có.
mbomb007

10

Chỉ cần sử dụng echo:

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

Bạn có thể sử dụng >> để thêm vào một tệp hoặc sử dụng> để ghi đè lên nó.


3

Rất nhiều chuông gọn gàng và còi ở đây!

Phương pháp KISS:

date >>filename; cat >>filename

2

Nếu bạn đã cài đặt ruby ​​trên máy tính của mình, bạn có thể sử dụng https://github.com/minhajuddin/taskr . Bằng cách này, bạn sẽ có được một cái nhìn tốt đẹp về ghi chú của mình với các thẻ và thời gian trôi qua.

Ảnh chụp màn hình tác vụ


Chà, ảnh chụp màn hình thường trông rất tốt, nhưng nếu bạn có thể, sẽ tốt hơn nhiều nếu bạn sử dụng bản sao-dán.
peterh nói phục hồi Monica

1

Tùy thuộc vào nhu cầu của bạn, syslogd có thể là một công cụ khác để xem xét. Lệnh

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

sẽ đăng nhập tin nhắn với người dùng cơ sở. chú ý. Với nhiều hệ thống Linux, điều này sẽ đủ để mở tệp /var/log/user.log, với các hệ thống khác, bạn có thể cần xác định xử lý cho cơ sở đó và mức ghi nhật ký (hoặc, bất kỳ cơ sở nào bạn chọn - local0 đến các cơ sở local7 thường được tự do gán cho những thứ như thế này.

Nó có lợi ích là có thể (còn có thể định cấu hình) để gửi ghi chú từ máy khách đến máy chủ ghi nhật ký trung tâm, thứ tôi muốn sử dụng để theo dõi hành động quản trị vì nó bảo quản tự động dấu thời gian, thông tin người dùng và máy chủ lưu trữ, trong khi giữ hành động theo thứ tự .

kết quả đầu ra trong tệp cục bộ:

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

Ví dụ cho dòng cấu hình nhật ký hệ thống trên Solaris :

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

Lưu ý: ifdefĐược xử lý trước m4, trên máy có tên máy chủ / tên lưu trữ "loghost", các tin nhắn sẽ được ghi vào tệp / var / log / nhật ký, trên tất cả các tệp khác, chúng sẽ được gửi đến dịch vụ nhật ký hệ thống từ xa tại loghost. Để kiểm tra loại cấu hình này, tệp cấu hình có thể được gửi qua m4 để mở rộng (bỏ qua -D LOGHOSTđể xem nó trông như thế nào trên một hệ thống không được gọi là loghost :

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



0

Kết hợp một vài câu trả lời khác nhau để đạt được điều tôi tìm kiếm, đó là nhiều lựa chọn.

  1. Nhanh chóng
    user @ hostname: ~ / Documents $ echo text >> tên tệp
    tên người dùng @ hostname: ~ / Documents $ catename
    bản văn
    
  2. Nhiều dòng
    tên người dùng @ hostname: ~ / Documents $ cat >> filename2 << EOF
    > dòng văn bản 1
    > dòng văn bản 2
    > dòng văn bản 3
    > EOF
    tên người dùng @ hostname: ~ / Documents $ cat filename2  
    dòng văn bản 1
    dòng văn bản 2
    dòng văn bản 3
    
    1. Sửa đổi một tập tin tại một số dòng nhất định

      user @ hostname: ~ / Documents $ sed -i '2iinserting dòng mới' filename2
      tên người dùng @ hostname: ~ / Documents $ cat filename2
      dòng văn bản 1
      chèn dòng mới
      dòng văn bản 2
      dòng văn bản 3
      
    Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
    Licensed under cc by-sa 3.0 with attribution required.