echo "text" >> 'Users/Name/Desktop/TheAccount.txt'
Làm cách nào để tạo tệp nếu nó không tồn tại nhưng ghi đè lên nếu nó đã tồn tại. Ngay bây giờ kịch bản này chỉ nối thêm.Ghi vào tệp, nhưng ghi đè lên nếu nó tồn tại
echo "text" >> 'Users/Name/Desktop/TheAccount.txt'
Làm cách nào để tạo tệp nếu nó không tồn tại nhưng ghi đè lên nếu nó đã tồn tại. Ngay bây giờ kịch bản này chỉ nối thêm.Ghi vào tệp, nhưng ghi đè lên nếu nó tồn tại
Một chút hiểu biết về cách hoạt động của ống * nix.
Tóm tắt >>
nhà điều hành chuyển hướng sẽ nối thêm dòng vào cuối tệp được chỉ định, trong đó-vì đơn lớn hơn >
sẽ trống và ghi đè lên tệp.
echo "text" > 'Users/Name/Desktop/TheAccount.txt'
Một số môi trường không cho phép với một cái gì đó như '-bash: TheAccount.txt: không thể ghi đè lên tệp hiện có'. –
Ngoài ra, '>' và '>>' là các toán tử * chuyển hướng đầu ra *. Toán tử đường ống là '|'. –
Xem câu trả lời của @BrDaHa.Sử dụng '> |' để bắt buộc ghi đè hiện tại – Jake
Mặc dù NylonSmile
's answer, đó là "loại" đúng .. Tôi đã không thể ghi đè lên file, theo cách này ..
echo "i know about Pipes, girlfriend" > thatAnswer
zsh: file exists: thatAnswer
để giải quyết vấn đề của tôi .. Tôi đã phải sử dụng ... >!
, á la ..
[[ $FORCE_IT == 'YES' ]] && echo "[email protected]" >! "$X" || echo "[email protected]" > "$X"
Rõ ràng, hãy cẩn thận với điều này ...
Điều này có nghĩa là bạn có tùy chọn zsh không mặc định 'NOCLOBBER' được đặt. Sử dụng 'setopt clobber' để khôi phục hành vi mặc định. –
#!/bin/bash
cat <<EOF > SampleFile
Put Some text here
Put some text here
Put some text here
EOF
Nếu bạn có đầu ra có thể có sai sót, bạn có thể muốn sử dụng một dấu và lớn hơn, như sau:
my_task &> 'Users/Name/Desktop/task_output.log'
điều này sẽ chuyển hướng cả stderr và stdout vào tệp nhật ký (thay vì chỉ là giá trị mặc định).
Điều đó có thể đúng, nhưng không liên quan đến câu hỏi. – Deiwin
Trong Bash, nếu bạn đã thiết lập noclobber a la set -o noclobber
, sau đó bạn sử dụng cú pháp >|
Ví dụ:
echo "some text" >| existing_file
này cũng hoạt động nếu tập tin không tồn tại được nêu
Cảm ơn, hoạt động cho zsh quá. –
well..này thật tuyệt vời. Tôi đã thừa nhận> sớm hơn một chút >>. – Jokester