Linux에서 셸 스크립트를 사용하여 텍스트 파일에 자동으로 데이터를 쓰려면 어떻게해야합니까?
파일을 열 수있었습니다. 그러나 데이터를 쓰는 방법을 모르겠습니다.
답변
echo "some data for the file" >> fileName
답변
#!/bin/sh
FILE="/path/to/file"
/bin/cat <<EOM >$FILE
text1
text2 # This comment will be inside of the file.
The keyword EOM can be any text, but it must start the line and be alone.
EOM # This will be also inside of the file, see the space in front of EOM.
EOM # No comments and spaces around here, or it will not work.
text4
EOM
답변
명령 출력을 파일로 리디렉션 할 수 있습니다.
$ cat file > copy_file
또는 그것에 추가
$ cat file >> copy_file
직접 쓰려면 명령은 echo 'text'
$ echo 'Hello World' > file
답변
#!/bin/bash
cat > FILE.txt <<EOF
info code info
info code info
info code info
EOF
답변
나는 이것이 지독한 오래된 질문이라는 것을 알고 있지만 OP는 스크립팅에 관한 것이므로 Google이 나를 여기로 데려 갔다는 사실 때문에 동시에 읽고 쓰기 위해 파일 설명자를 여는 것도 언급해야합니다.
#!/bin/bash
# Open file descriptor (fd) 3 for read/write on a text file.
exec 3<> poem.txt
# Let's print some text to fd 3
echo "Roses are red" >&3
echo "Violets are blue" >&3
echo "Poems are cute" >&3
echo "And so are you" >&3
# Close fd 3
exec 3>&-
그런 다음 cat
터미널의 파일
$ cat poem.txt
Roses are red
Violets are blue
Poems are cute
And so are you
이 예에서는 파일 설명자 3에서 읽고 쓸 수 있도록 poem.txt 파일을 열었습니다. 또한 * nix 상자는 stdin, stdout 및 stderr (fd 0,1,2)보다 더 많은 fd를 알고 있음을 보여줍니다. 실제로 많이 보유하고 있습니다. 일반적으로 커널이 할당 할 수있는 최대 파일 디스크립터 수는 9 개를 초과 /proc/sys/file-max
하거나 /proc/sys/fs/file-max
fd를 사용하는 것은 쉘에서 내부적으로 사용하는 fd와 충돌 할 수 있으므로 위험합니다. 따라서 fd의 0-9 만 귀찮게 사용하지 마십시오. bash 스크립트에 9 개의 파일 설명자가 더 필요하다면 다른 언어를 사용해야합니다 🙂
어쨌든 fd는 많은 흥미로운 방식으로 사용될 수 있습니다.
답변
나는이 대답을 좋아한다 :
cat > FILE.txt <<EOF
info code info
...
EOF
그러나 cat >> FILE.txt << EOF
이미 존재하는 것을 지우지 않고 파일 끝에 무언가를 추가하고 싶다면 제안 할 것입니다.
이처럼 :
cat >> FILE.txt <<EOF
info code info
...
EOF
답변
@lycono의 요청에 따라 답변으로 내 의견 이동
루트 권한으로이를 수행해야하는 경우 다음과 같이하십시오.
sudo sh -c 'echo "some data for the file" >> fileName'