कमांड लाइन से फाइल में टेक्स्ट जोड़ने का सबसे तेज तरीका क्या है?


29

कभी-कभी मेरे पास एक विचार होता है कि मैं टर्मिनल पर रहते हुए एक फाइल में लिखना चाहता हूं। मैं इन सभी नोटों को एक ही फ़ाइल में, एक के बाद एक सूचीबद्ध करना चाहता हूँ। मैं हर एक पर एक तारीख / समय टैग भी चाहूंगा।

क्या हर बार फाइल को खोले बिना ऐसा करना संभव है? क्या मैं इसे टर्मिनल में दर्ज कर सकता हूं और क्या इसे हर बार कमांड या स्क्रिप्ट के साथ फाइल में जोड़ा जा सकता है?

मैं GNU BASH का उपयोग कर रहा हूँ।

जवाबों:


25

अपने आप को "n" नामक एक शेल स्क्रिप्ट लिखें। इसे इसमें डालें:

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

मैं इसकी बजाय इसकी सलाह देता हूं cat >> notefile:

  1. एक दिन आप इतनी जल्दी में होंगे कि आप >> और टाइप करें> को फैंकेंगे और अपनी फाइल को उड़ा देंगे।
  2. Emacs मेरे मैक मिनी पर एक सेकंड के पांच सौवें हिस्से में शुरू होता है । यह दस साल पुराने सेलेरॉन-आधारित प्रणाली पर शुरू करने के लिए एक सेकंड का दसवां हिस्सा लेता है, जो मेरे पास बैठा है। यदि आप टाइप करने के लिए लंबे समय तक इंतजार नहीं कर सकते हैं, तो आप पहले से ही एक मशीन हैं और आपको नोट्स लेने की आवश्यकता नहीं है। :)

यदि आप पाठ संपादक से बचने पर जोर देते हैं, तो शेल फ़ंक्शन का उपयोग करें:

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

जो बोर्न शेल संगतता का दावा करने वाले सभी गोले में काम करना चाहिए।


1
nफ़ंक्शन फ़ाइल में कैसे लिखता है? क्या आपको UUOC केecho "$*" बजाय कुछ मतलब नहीं है ? यह दिनांक / समय टैग को कैसे शामिल करता है?
जसनवरी २

1
बिल्कुल बेकार नहीं। यह स्टडिन से पढ़ता है, जो उपयोगकर्ता को अपना नोट टाइप कर रहा होगा। मैं डेटस्टैम्प भूल गया, हालांकि।
काइल जोन्स

मैं जरूरी नहीं कि यूयूओसी के बारे में सहमत हूं, लेकिन आपके पास तारीख के लिए वापस आ गया है ...
जसोनव्रीयन

5
अपरिहार्य टाइपो के खिलाफ +1 अच्छा रक्षात्मक कोडिंग और तर्क।
msw

2
काइल, आप स्पष्ट रूप से एक 90MB नहीं है .emacs.d। Yikes, मैं उस को साफ करने की जरूरत है।
क्वॉडलिबिटर

18

इसके अलावा, कमांड लाइन से एक फ़ाइल में कई लाइनें लिखने के लिए, करें:

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

या cat > sometextfile.txt << EOFमौजूदा फ़ाइल को अधिलेखित करने के लिए।
mbomb007

10

बस उपयोग करें echo:

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

आप किसी फ़ाइल में संलग्न करने के लिए >> या इसे अधिलेखित करने के लिए> का उपयोग कर सकते हैं।



2

यदि आपके कंप्यूटर पर माणिक स्थापित है तो आप https://github.com/minhajuddin/taskr का उपयोग कर सकते हैं । इस तरह से आपको टैग और घंटों बीत जाने के साथ अपने नोट्स का एक अच्छा दृश्य मिलता है।

टास्क स्क्रीनशॉट


वैसे, स्क्रीनशॉट अक्सर बहुत अच्छी तरह से दिखते हैं, लेकिन यदि आप कॉपी-पेस्ट का उपयोग करते हैं तो यह बहुत बेहतर है।
पीटर ने कहा कि मोनिका

1

अपनी आवश्यकताओं के आधार पर, syslogd को भ्रमित करने के लिए एक और उपकरण हो सकता है। आदेश

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

सुविधा user.notice के साथ संदेश लॉग करेगा। कई लिनक्स सिस्टम के साथ, यह एक फ़ाइल /var/log/user.log को खोलने और इसमें संलग्न होने के लिए पर्याप्त होगा, दूसरों के साथ आपको उस सुविधा और लॉग स्तर (या, जो भी आपके द्वारा चुनी गई सुविधा - स्थानीय 0 के लिए हैंडलिंग को परिभाषित करने की आवश्यकता हो सकती है) स्थानीय 7 सुविधाओं के लिए आम तौर पर इस तरह की चीजों को आवंटित करने के लिए स्वतंत्र हैं।

ग्राहक मशीनों से केंद्रीय लॉगिंग सर्वर पर नोट भेजने में सक्षम (उर्फ कंफर्टेबल) होने का लाभ मिला है, कुछ ऐसा है जो प्रशासनिक कार्रवाई का ट्रैक रखने के लिए उपयोग करना पसंद करता हूं क्योंकि यह टाइमस्टैम्प, उपयोगकर्ता और होस्ट जानकारी को स्वचालित रूप से संरक्षित रखता है, जबकि कार्रवाई जारी रखते हुए ।

स्थानीय फ़ाइल में परिणामी उत्पादन:

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)

नोट: होस्टनाम / होस्टलियास "लॉगहॉस्ट" के साथ मशीन पर ifdefप्रीप्रोसेस किया गया है m4, संदेशों को फ़ाइल / var / log / डायरी में लॉग इन किया जाएगा, अन्य सभी पर, उन्हें लॉगहॉस्ट में दूरस्थ syslog सेवा में भेजा जाएगा। इस तरह के कॉन्फ़िगरेशन का परीक्षण करने के लिए, कॉन्फ़िगरेशन फ़ाइल को विस्तार के लिए m4 के माध्यम से भेजा जा सकता है ( -D LOGHOSTयह देखने के लिए छोड़ दें कि यह सिस्टम पर कैसे दिखेगा, जिसे लॉगहॉस्ट नहीं कहा जाता है :

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

1

टास्कवारियर वह कर सकता है जो आप एक साधारण शेल स्क्रिप्ट की तुलना में थोड़ा बेहतर चाहते थे। 30 सेकेंड की ट्यूटोरियल आप को बताना चाहिए कि अगर मैं सही है या गलत कर रहा हूँ।


1
echo "`date` text here" >> filename

या

echo "text here `date`"|tee -a filename

टी पर अधिक


सिंगल बैकटिक केवल
बालास्वामी वड्डमैन

1
इसकी कीमत क्या है, इसके लिए मैं $(..)कमांड प्रतिस्थापन के लिए बैकटिक्स का उपयोग करने की सलाह दूंगा। अधिक जानकारी: unix.stackexchange.com/questions/11576/…
rahmu

0

मैंने जो मांगा था, उसे हासिल करने के लिए कुछ अलग-अलग उत्तरों को मिलाकर, जो कई विकल्प थे।

  1. शीघ्र
    user @ hostname: ~ / दस्तावेज़ $ गूंज पाठ >> फ़ाइल नाम
    user @ hostname: ~ / दस्तावेज़ $ बिल्ली फ़ाइल नाम
    टेक्स्ट
    
  2. एकाधिक लाइनें
    user @ hostname: ~ / दस्तावेज $ बिल्ली >> filename2 << EOF
    > पाठ पंक्ति १
    > पाठ पंक्ति २
    > पाठ पंक्ति ३
    > ईओएफ
    user @ hostname: ~ / डॉक्युमेंट्स $ cat filename2  
    पाठ पंक्ति 1
    पाठ पंक्ति २
    पाठ पंक्ति ३
    
    1. किसी दिए गए लाइन नंबर पर एक फ़ाइल को संशोधित करें

      user @ hostname: ~ / दस्तावेज $ sed -i '2iintingting नई लाइन' filename2
      user @ hostname: ~ / डॉक्युमेंट्स $ cat filename2
      पाठ पंक्ति 1
      नई लाइन डालना
      पाठ पंक्ति २
      पाठ पंक्ति ३
      
    हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
    Licensed under cc by-sa 3.0 with attribution required.