명령 행에서 파일에 텍스트를 추가하는 가장 빠른 방법은 무엇입니까?


29

때때로 나는 터미널에있는 동안 파일에 쓰고 싶다고 생각했습니다. 이 노트들을 모두 같은 파일에 넣고 싶었습니다. 또한 각 날짜 / 시간 태그를 원합니다.

매번 파일을 열지 않고도이 작업을 수행 할 수 있습니까? 터미널에 입력하고 명령이나 스크립트로 매번 파일에 추가 할 수 있습니까?

GNU BASH를 사용하고 있습니다.

답변:


25

"n"이라는 쉘 스크립트를 작성하십시오. 이것을 넣으십시오 :

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

다음 대신에 이것을 권장합니다 cat >> notefile.

  1. 언젠가는 서두르고 >>를 입력하고 대신>를 입력하여 파일을 날려 버릴 수 있습니다.
  2. Emacs는 Mac Mini에서 100 분의 1 초 안에 시작됩니다 . 내가 앉아있는 10 살짜리 Celeron 기반 시스템에서 시작하는 데 10 분의 1 초가 걸립니다. 입력을 시작하기 위해 오랫동안 기다릴 수 없다면 이미 기계이므로 메모를 할 필요가 없습니다. :)

텍스트 편집기를 사용하지 않으려면 쉘 함수를 사용하십시오.

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

Bourne 쉘 호환성을 주장하는 모든 쉘에서 작동합니다.


1
어떻게합니까 n파일에 함수를 쓰기? 당신은 UUOCecho "$*" 보다는 오히려 무언가를 의미하지 않습니까 ? 날짜 / 시간 태그를 어떻게 통합합니까?
jasonwryan

1
별로 쓸모가 없습니다. 사용자가 메모를 입력하는 stdin에서 읽습니다. 그래도 날짜 스탬프를 잊어 버렸습니다.
Kyle Jones

나는 UUOC에 대해 반드시 동의하지는 않지만, 당신은 그 날짜를 다시 지적
하니

5
피할 수없는 오타에 대한 +1 멋진 방어 코딩 근거.
msw

2
카일, 당신은 분명히 90MB가 없습니다 .emacs.d. Yikes, 나는 그것을 정리해야합니다.
quodlibetor

18

또한 명령 행에서 파일에 여러 행을 쓰려면 다음을 수행하십시오.

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

또는 cat > sometextfile.txt << EOF기존 파일을 덮어 씁니다.
mbomb007

10

그냥 사용하십시오 echo:

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

>>를 사용하여 파일을 추가하거나>를 사용하여 파일을 덮어 쓸 수 있습니다.


3

깔끔한 종소리와 휘파람이 많이 있습니다!

키스 방법 :

date >>filename; cat >>filename


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)

참고 : 는 호스트 이름 / 호스트 별칭이 "loghost"인 시스템에서 ifdef로 사전 처리되며 m4, 메시지는 / 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 $ 고양이 파일 이름
    본문
    
  2. 여러 줄
    user @ hostname : ~ / Documents $ cat >> filename2 << EOF
    > 텍스트 1 행
    > 텍스트 2 행
    > 텍스트 줄 3
    > EOF
    user @ hostname : ~ / Documents $ 고양이 파일 이름 2  
    텍스트 줄 1
    텍스트 줄 2
    텍스트 줄 3
    
    1. 주어진 줄 번호에서 파일 수정

      user @ hostname : ~ / Documents $ sed -i '2i 삽입 새 줄'filename2
      user @ hostname : ~ / Documents $ 고양이 파일 이름 2
      텍스트 줄 1
      줄 바꾸기
      텍스트 줄 2
      텍스트 줄 3
      
    당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
    Licensed under cc by-sa 3.0 with attribution required.