Làm cách nào để tự động ghi dữ liệu vào tệp văn bản bằng shell script trong Linux?Mở và ghi dữ liệu trên tệp văn bản bằng cách bash/shell scripting
Tôi có thể mở tệp. Tuy nhiên, tôi không biết cách ghi dữ liệu vào nó.
Làm cách nào để tự động ghi dữ liệu vào tệp văn bản bằng shell script trong Linux?Mở và ghi dữ liệu trên tệp văn bản bằng cách bash/shell scripting
Tôi có thể mở tệp. Tuy nhiên, tôi không biết cách ghi dữ liệu vào nó.
echo "some data for the file" >> fileName
Bạn có thể chuyển hướng đầu ra của một lệnh vào một tệp:
$ cat file > copy_file
hoặc thêm vào sau nó
$ cat file >> copy_file
Nếu bạn muốn viết trực tiếp lệnh là echo 'text'
$ echo 'Hello World' > file
Nếu bạn cần quyền root: 'sudo sh -c 'cat file>/etc/init/gunicorn.conf'' (nhờ lời bình luận của lukaserat ở trên) – aero
#!/bin/sh
FILE="/path/to/file"
/bin/cat <<EOM >$FILE
text1
text2
text3
text4
EOM
Có nhiều đầu ra đa dạng. –
Người mới sẽ được hưởng lợi từ việc biết chính xác phải làm gì với tệp này. Làm thế nào để lưu nó, làm thế nào để chạy nó, vv – Danny
Xin giải thích thay vì chỉ cần đưa lên một đoạn mã. Nó sẽ làm cho nó hữu ích hơn nhiều cho tất cả mọi người - đặc biệt là người mới. –
#!/bin/bash
cat > FILE.txt <<EOF
info code info
info code info
info code info
EOF
Một lời giải thích về mã của bạn sẽ đi một chặng đường dài để làm cho nó dễ sử dụng hơn cho người khác. Ngay cả những chú thích từ vựng như "tài liệu ở đây" và "chuyển hướng" có thể trỏ người tìm kiếm đến các tài nguyên khác. – Palpatim
Giải thích là không cần thiết cho một cái gì đó như thế này. –
Thông tin về 'EOF' và kỹ thuật liên quan: http://stackoverflow.com/a/2954835/712334 –
Tôi thích câu trả lời này:
cat > FILE.txt <<EOF
info code info
...
EOF
nhưng sẽ đề nghị cat >> FILE.txt << EOF
nếu bạn muốn chỉ cần thêm một cái gì đó vào cuối của tập tin mà không cần lau ra những gì đã tồn tại
Như thế này:
cat >> FILE.txt <<EOF
info code info
...
EOF
Thêm một số giải thích với câu trả lời cho cách câu trả lời này giúp OP trong việc khắc phục sự cố hiện tại –
Di chuyển nhận xét của tôi dưới dạng câu trả lời, theo yêu cầu của @lycono
Nếu bạn cần phải làm điều này với quyền root, làm theo cách này:
sudo sh -c 'echo "some data for the file" >> fileName'
Tôi biết đây là một câu hỏi cũ chết tiệt, nhưng như OP là về kịch bản, và thực tế là google mang lại cho tôi ở đây, mở các mô tả tập tin để đọc và viết cùng một lúc cũng nên được đề cập.
#!/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>&-
Sau đó cat
tập tin trên thiết bị đầu cuối
$ cat poem.txt
Roses are red
Violets are blue
Poems are cute
And so are you
Ví dụ này gây ra tập tin poem.txt được mở để đọc và ghi trên mô tả tập tin 3. Nó cũng cho thấy rằng * hộp nix biết thêm của fd sau đó chỉ stdin, stdout và stderr (fd 0,1,2). Nó thực sự nắm giữ rất nhiều. Thông thường, số lượng tối đa các tập tin mô tả hạt nhân có thể phân bổ có thể được tìm thấy trong /proc/sys/file-max
hoặc /proc/sys/fs/file-max
nhưng sử dụng bất kỳ fd trên 9 là nguy hiểm vì nó có thể xung đột với fd được sử dụng bởi vỏ trong nội bộ. Vì vậy, không bận tâm và chỉ sử dụng 0-9 của fd. Nếu bạn cần thêm 9 bộ mô tả tập tin trong một tập lệnh bash, bạn nên sử dụng một ngôn ngữ khác anyways :)
Nhưng dù sao, fd cũng có thể được sử dụng theo nhiều cách thú vị.
Tên của nhà điều hành này là gì? Tôi muốn tìm hướng dẫn về nó. –
toán tử> chuyển hướng đầu ra sang tệp ghi đè tệp nếu có tệp. >> sẽ thêm vào tệp hiện có. –
Cảm ơn bạn, đây là liên kết đến trang wiki, trong trường hợp ai đó cần nó http://en.wikipedia.org/wiki/Redirection_(computing)#Redirecting_standard_input_and_standard_output –