답변:
cat >> filename
This is text, perhaps pasted in from some other source.
Or else entered at the keyboard, doesn't matter.
^D
기본적으로 파일에 원하는 텍스트를 덤프 할 수 있습니다. CTRL-D는 입력을 종료하고 쉘로 돌아가는 파일 끝 신호를 보냅니다.
sudo !!
-마지막 명령을 sudo
앞에 추가 하여 실행합니다 . 나는 최근에 이것이 또한 nano
(우연히 시도함으로써 nano nano auth
...) 작동 한다는 것을 알게되었다
!!
전에 사용하지 않았어요 . 나는 종종 같은 일을 cat /var/log/apache/error.log
하고 허가를받지 못합니다 . 이것은 또한 히스토리의 ID로 수행 될 수 있습니다. 예를 들어 sudo !1419
이것은 1419
히스토리의 라인 에서 sudo로 명령을 실행합니다 .
어때 :
echo "hello" >> <filename>
>>
연산자를 사용하면 파일 끝에 데이터가 추가되고를 사용 >
하면 이미있는 경우 파일의 내용을 덮어 씁니다.
당신은 또한 사용할 수 있습니다 printf
동일한 방식으로 .
printf "hello" >> <filename>
위의 내용을 사용하는 것은 위험 할 수 있습니다. 예를 들어 이미 파일이 있고 파일 끝에 데이터를 추가해야하는데 마지막 추가를 잊어 버린 >
경우 파일의 모든 데이터가 파괴됩니다. 에서 noclobber
변수를 설정하여이 동작을 변경할 수 있습니다 .bashrc
.
set -o noclobber
이제 그렇게하려고하면 다음과 echo "hello" > file.txt
같은 경고가 표시 cannot overwrite existing file
됩니다.
파일에 강제로 쓰려면 이제 특수 구문을 사용해야합니다.
echo "hello" >| <filename>
또한 기본적으로 플래그 echo
를 사용하여 억제 할 수있는 후행 개행 문자를 추가 한다는 것을 알아야합니다 -n
.
echo -n "hello" >> <filename>
참고 문헌
cat
하지만 >>
대신 사용하도록 조심하는 것이 좋습니다 >
!
sudo rm -r /
=) 와 같은 일을 할 수 있습니다.
sudo rm -r /
낫다 sudo rm -rf /
! ^ _ ^ 기존 파일의 내용을 덮어 쓰기 전에 확인을 요청하는 플래그가 >
있습니까? 항상 그런 플래그를 사용하도록 별칭을 지정하는 것이 좋은 생각 인 것 같습니다.
set -o noclobber
. .bashrc
그러면 특수 구문을 사용하지 않고 기존 파일을 덮어 쓸 수 없습니다echo "hello" >| <filename>
다른 가능한 방법은 다음과 같습니다.
echo "text" | tee -a filename >/dev/null
그만큼 -a
파일 끝에 추가됩니다.
필요한 sudo
경우 다음을 사용하십시오.
echo "text" | sudo tee -a filename >/dev/null
>/dev/null
최종 방지 "텍스트"에서이 콘솔에 표시합니다.
수락 된 답변에 대한 후속 조치를 취하십시오.
스크립트에서 이것을 사용하는 경우 끝을 지정하려면 CTRL-D 이외의 것이 필요합니다 . 대신 이것을 시도하십시오.
cat << EOF >> filename
This is text entered via the keyboard or via a script.
EOF
이렇게하면 명시된 파일에 텍스트가 추가됩니다 ( "EOF"제외).
그것은 사용 여기에 문서 (또는 히어 닥을) .
그러나 명시된 파일에 추가하기 위해 sudo가 필요한 경우 명령 줄에 직접 입력하는 경우 I / O 리디렉션으로 인해 heredoc을 사용하는 데 문제가 발생합니다.
이 변형은 명령 줄에 직접 입력 할 때 작동합니다.
sudo sh -c 'cat << EOF >> filename
This is text entered via the keyboard.
EOF'
또는 tee
대신 cat과 함께 heredoc을 사용할 때 나타나는 명령 줄 sudo 문제를 피할 수 있습니다 .
tee -a filename << EOF
This is text entered via the keyboard or via a script.
EOF
cat << 'EOF' >
몇 년 동안 사용해 왔고 cat << 'EOF' >>
추가 할 것인지 몰랐습니다 ! 감사합니다