it-swarm-eu.dev

Jaký je nejrychlejší způsob, jak přidat text do souboru z příkazového řádku?

Občas jsem si myslel, že chci zapsat do souboru, když jsem v terminálu. Chtěl bych, aby tyto poznámky byly všechny ve stejném souboru, jen jeden po druhém. Chtěl bych také značku data a času na každé z nich.

Je to možné, aniž byste museli soubor otevírat pokaždé? Mohu jej jednoduše zadat do terminálu a nechat jej přiložit k souboru pokaždé pomocí příkazu nebo skriptu?

Používám GNU BASH).

32
Brian Dant

Napište si skript Shell s názvem „n“. Dej to do toho:

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

Doporučuji to místo cat >> notefile protože:

  1. Jednoho dne budete v takovém spěchu, že místo toho budete fumblefinger >> a napište> a odfoukněte soubor.
  2. Emacs začíná v pět setin sekundy na mém Mac Mini. Trvá desetinu sekundy, než se spustí desetiletý systém založený na Celeronu, který jsem seděl. Pokud nemůžete tak dlouho čekat, až začnete psát, už jste stroj a nemusíte si dělat poznámky. :)

Pokud trváte na vyhýbání se textovému editoru, použijte funkci Shell:

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

který by měl fungovat ve všech skořepinách a prohlašovat kompatibilitu Bourne Shell.

27
Kyle Jones

Chcete-li do souboru z příkazového řádku zapsat více řádků, postupujte takto:

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

Stačí použít echo:

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

K přidání souboru můžete použít >> nebo jej přepsat pomocí>.

12
Rob Wouters

Spousta úhledných zvonů a píšťalky zde!

Metoda KISS:

date >>filename; cat >>filename
3
Jan Steinman

Pokud máte v počítači nainstalovánu Ruby), můžete použít https://github.com/minhajuddin/taskr . Tímto způsobem získáte pěkné zobrazení vašich poznámek pomocí značky a uplynulé hodiny.

Taskr screenshot

2

Taskwarrior může dělat to, co jste chtěli, o něco lépe než jednoduchý skript Shell. sekundový tutoriál by vám měl říct, jestli mám pravdu nebo špatně.

echo "`date` text here" >> filename

nebo

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

více na tee

1

V závislosti na vašich potřebách může být syslogd dalším nástrojem, který si můžete prohlédnout. Příkaz

[email protected]:~$ logger This message is sent to syslog

zprávu zaznamená do zařízení user.notice. U mnoha systémů Linux bude stačit, aby byl otevřen a připojen soubor /var/log/user.log, s ostatními budete možná muset definovat manipulaci pro toto zařízení a úroveň protokolu (nebo kterékoli zařízení, které si vyberete - local0) k místním zařízením7 lze obvykle takové věci přiřadit.

Výhodou je, že je možné (aka konfigurovatelné) odesílat poznámky z klientských počítačů na centrální logovací server, což se mi líbí pro sledování administrativních akcí, protože automaticky udržuje časové údaje, informace o uživateli a hostiteli a zároveň udržuje akce v pořádku. .

výsledný výstup v lokálním souboru:

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

Příklad konfiguračního řádku syslog na Solaris:

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

Poznámka: ifdef je předzpracován s m4, na stroji s názvem hosthost/hostalias "loghost" budou zprávy zaznamenány do souboru/var/log/deník, na všech ostatních budou odeslány do vzdálené syslogové služby v loghost. Chcete-li otestovat tento druh konfigurace, lze konfigurační soubor odeslat prostřednictvím m4 pro rozšíření (ponechte -D LOGHOST Chcete-li vidět, jak by to vypadalo na systému, který se nezavolává loghost :

[email protected]$ /usr/ccs/bin/m4 -D LOGHOST /etc/syslog.conf
1
Tatjana Heuser

Kombinace několika různých odpovědí k dosažení toho, co jsem hledal, bylo několik možností.

  1. Rychlý
     user @ hostname: ~/Documents $ echo text >> filename [filename] 
     user @ hostname: ~/Documents $ cat filename 
     text 
    
  2. Více řádků
    user @ hostname: ~/Documents $ cat >> filename2 << EOF 
    > textový řádek 1 
    > textový řádek 2 
    > textový řádek 3 
    > EOF 
     user @ hostname: ~/Documents $ cat filename2 
     textový řádek 1 
     textový řádek 2 
     textový řádek 3 
    
  1. Upravit soubor na dané číslo řádku

     user @ hostname: ~/Documents $ sed -i '2iinserting new line' filename2 
     user @ hostname: ~/Documents $ cat filename2 
     textový řádek 1 
     vložení nového řádku 
     textový řádek 2 
     textový řádek 3 
    
0
conman253