Tôi cần tạo một tệp văn bản (trừ khi nó đã tồn tại) và viết một dòng mới vào tệp bằng cách sử dụng bash.Tạo tập tin văn bản và điền vào nó bằng bash
Tôi chắc chắn nó đơn giản, nhưng bất cứ ai có thể giải thích điều này cho tôi?
Tôi cần tạo một tệp văn bản (trừ khi nó đã tồn tại) và viết một dòng mới vào tệp bằng cách sử dụng bash.Tạo tập tin văn bản và điền vào nó bằng bash
Tôi chắc chắn nó đơn giản, nhưng bất cứ ai có thể giải thích điều này cho tôi?
Nếu bạn đang muốn đây là một kịch bản, kịch bản Bash sau nên làm những gì bạn muốn (cộng cho bạn biết khi tập tin đã tồn tại):
#!/bin/bash
if [ -e $1 ]; then
echo "File $1 already exists!"
else
echo >> $1
fi
Nếu bạn không muốn "đã tồn tại" tin nhắn, bạn có thể sử dụng:
#!/bin/bash
if [ ! -e $1 ]; then
echo >> $1
fi
Chỉnh sửa về cách sử dụng:
Lưu phiên bản nào có tên bạn muốn, giả sử "create_file" (trích dẫn của tôi, bạn không muốn chúng trong tên tệp). Sau đó, để làm cho các tập tin executatble, tại dấu nhắc lệnh làm:
chmod u+x create_file
Put the file in a directory in your path, sau đó sử dụng nó với:
create_file NAME_OF_NEW_FILE
Các $ 1 là một biến vỏ đặc biệt trong đó có các đối số đầu tiên trên lệnh dòng sau tên chương trình; tức là $ 1 sẽ nhận NAME_OF_NEW_FILE trong ví dụ sử dụng ở trên.
Câu hỏi của bạn hơi mơ hồ. Đây là một lệnh shell mà những gì tôi nghĩ rằng bạn muốn làm:
echo >> name_of_file
Giả sử bạn có nghĩa là các lệnh shell UNIX, chỉ cần chạy
echo >> file.txt
echo
in một dòng mới, và >>
nói với vỏ để thêm dòng mới vào tệp, tạo nếu nó chưa tồn tại.
Để trả lời đúng câu hỏi, tuy nhiên, tôi cần biết bạn muốn điều gì xảy ra nếu tệp đã tồn tại. Nếu bạn muốn thay thế nội dung hiện tại của nó với xuống dòng, ví dụ, bạn sẽ sử dụng
echo > file.txt
EDIT: và để đáp lại lời nhận xét của Justin, nếu bạn muốn thêm xuống dòng chỉ khi các tập tin không đã tồn tại, bạn có thể làm
test -e file.txt || echo > file.txt
Ít nhất nó hoạt động trong Bash, tôi cũng không chắc nó có hoạt động trong các vỏ khác hay không.
+1. Tôi nghĩ rằng có 1 cách giải thích khác có thể: tạo và viết một dòng mới nếu tập tin chưa tồn tại, nếu không thì không sửa đổi tập tin. –
@Justin: tốt điểm, tôi đoán tôi có thể thêm rằng một trong quá và chúng tôi sẽ có tất cả các tùy chọn được bảo hiểm. –
Tạo tệp văn bản trong Unix có thể được thực hiện thông qua trình soạn thảo văn bản (vim, emacs, gedit, v.v.). Nhưng những gì bạn muốn có thể giống như thế này
echo "insert text here" > myfile.txt
Điều này sẽ đặt văn bản 'chèn văn bản vào đây' vào tệp myfile.txt. Để xác minh rằng điều này làm việc sử dụng lệnh 'mèo'.
cat myfile.txt
Nếu bạn muốn thêm vào một tập tin sử dụng này
echo "append this text" >> myfile.txt
$ 1 là gì, ở đây? – switz
Tôi có thể thay thế bằng "text.txt" không? – switz
@Switz: Xem chỉnh sửa giải thích $ 1. Nếu bạn thay thế $ 1 trong tập lệnh bằng "text.txt", nó sẽ luôn sử dụng "text.txt" làm tên tệp. – GreenMatt