Làm cách nào để tạo một tệp trong Linux từ cửa sổ terminal? [đóng cửa]


449

Cách dễ nhất để tạo một tệp trong thiết bị đầu cuối Linux là gì?


1
$>newfilecũng có thể tạo tập tin.
EsmaeelE

Câu trả lời:


577

Tùy thuộc vào những gì bạn muốn tập tin chứa:

  • touch /path/to/file cho một tập tin trống
  • somecommand > /path/to/file cho một tập tin chứa đầu ra của một số lệnh.

      eg: grep --help > randomtext.txt
          echo "This is some text" > randomtext.txt
  • nano /path/to/filehoặc vi /path/to/file(hoặc any other editor emacs,gedit etc)
    Nó sẽ mở tệp hiện có để chỉnh sửa hoặc tạo và mở tệp trống để nhập, nếu nó không tồn tại


51
cũng có, printf "some long message\nwith newlines\n" > file. Chúc mọi người may mắn.
shellter

1
UNIX không phải là một môi trường dòng lệnh, mà là một họ các hệ điều hành (rất khác nhau). Điều đó nói rằng: Có, điều này sẽ hoạt động trên hầu hết các Unices
Eugen Rieck

4
touchsẽ hoạt động trong UNIX, vì đó là một công cụ tiêu chuẩn. Các somecommandví dụ sẽ làm việc vì nó sử dụng cú pháp chuẩn. Các nanomẫu có thể không làm việc vì một biên tập viên tên nanocó thể không được cài đặt (nano không chuẩn). Trình chỉnh sửa tiêu chuẩn đang edvà có thể được sử dụng thay thế nanohoặc bạn có thể sử dụng $EDITORđể sử dụng trình soạn thảo văn bản mặc định do người dùng hoặc hệ thống cấu hình, nếu có.
Bọ Cạp

14
Ngoài ra, bạn có thể chỉ cần nói >/path/to/fileđể tạo một tệp trống, ngay cả khi bạn không có touch.
Bọ Cạp

2
@EugenRieck Điều gì sẽ xảy ra nếu nó cho phép bị từ chối
123


92

Tạo tập tin bằng cách sử dụng cat

$ cat > myfile.txt

Bây giờ, chỉ cần nhập bất cứ điều gì bạn muốn trong tệp:

Hello World!

CTRL-D để lưu và thoát


Tôi thích sử dụng mèo vì nó cung cấp một cách dễ dàng và thuận tiện để chỉnh sửa tệp ngay lập tức.
Delali

Bạn cũng có thể gõ không có gì.
Bing Zhao

Khi tôi thử cat /etc/systemd/system/sample.service, nó nói "không có tệp hoặc thư mục như vậy" thay vì tạo tệp mẫu.service mới.
TylerH

@TylerH cat /etc/systemd/system/sample.servicein tệp lên bàn điều khiển cat > /etc/systemd/system/sample.servicechuyển hướng đầu vào tiêu chuẩn vào tệp (đó là lý do tại sao bạn cần đóng đầu vào tiêu chuẩn bằng cách nhấn control-d.
Jerry Jeremiah

40

Có một số giải pháp có thể:

Tạo một tập tin trống

touch file

>file

echo -n > file

printf '' > file

Các echophiên bản sẽ chỉ làm việc nếu phiên bản của echohỗ trợ các-n chuyển sang dòng mới ngăn chặn. Đây là một bổ sung không chuẩn. Các ví dụ khác sẽ hoạt động trong vỏ POSIX.

Tạo một tệp chứa một dòng mới và không có gì khác

echo '' > file

printf '\n' > file

Đây là một "tệp văn bản" hợp lệ vì nó kết thúc bằng một dòng mới.

Viết văn bản vào một tập tin

"$EDITOR" file

echo 'text' > file

cat > file <<END \
text
END

printf 'text\n' > file

Đây là tương đương. Các $EDITORlệnh giả định rằng bạn có một soạn thảo văn bản tương tác được định nghĩa trong biến môi trường EDITOR và rằng bạn tương tác nhập văn bản tương đương. Các catphiên bản giả định một dòng mới đen sau\ và sau mỗi dòng khác. Ngoài ra, tất cả sẽ hoạt động trong vỏ POSIX.

Tất nhiên, có nhiều phương pháp khác để viết và tạo tập tin.



17

Cách tạo tệp văn bản trên Linux:

  • Sử dụng touchđể tạo tệp văn bản:$ touch NewFile.txt
  • Sử dụng catđể tạo một tệp mới: $ cat NewFile.txt
    Tệp được tạo, nhưng nó trống và vẫn đang chờ đầu vào từ người dùng. Bạn có thể nhập bất kỳ văn bản nào vào thiết bị đầu cuối và sau khi thực hiện xong CTRL-D sẽ đóng nó hoặc CTRL-C sẽ thoát bạn ra ngoài.
  • Chỉ cần sử dụng >để tạo một tệp văn bản:$ > NewFile.txt
  • Cuối cùng, chúng ta có thể sử dụng bất kỳ tên trình soạn thảo văn bản nào và sau đó tạo tệp, chẳng hạn như:
    nano MyNewFile vi MyNewFile NameOfTheEditor NewFileName

16

haha dễ thôi! thử cái này:

$ touch filename

1
Điều này làm việc với sudo, vì vậy tôi có thể tạo tệp mới trong thư mục hệ thống.
Patricia

15

Bạn có thể sử dụng touchlệnh, như những người khác nói:

touch filename

Để ghi vào tập tin trên dòng lệnh, bạn có thể sử dụng echohoặc printf:

echo "Foo" > filename
printf "Foo" > filename

Có lẽ bạn có thể có vấn đề với quyền. Nếu bạn gặp phải lỗi sau : bash: filename: Permission denied, bạn cần sử dụng sudo bash -c 'echo "Foo" > filename', như được mô tả ở đây: https://askubfox.com/questions/103643/cannot-echo-hello-x-txt-even-with-sudo


14

Phương pháp 1

echo -n > filename.txt

Phương pháp thứ 2

> filename.txt

Phương pháp thứ 3

touch filename.txt

Để xem nội dung tập tin

vi filename.txt

Phương thức 2 là loại-> "> filename.txt"
shashwat gupta

Câu hỏi không thuộc chủ đề cho Stack Overflow như được định nghĩa trong trung tâm trợ giúp . Xin đừng trả lời những câu hỏi như vậy; thay vào đó, bạn nên gắn cờ chúng để chú ý và chúng sẽ được đóng hoặc di chuyển một cách thích hợp.
Toby Speight

12

Điều này sẽ tạo một tệp trống với dấu thời gian hiện tại

touch filename





4

Trong trường hợp các bạn đang cố gắng tạo một tệp mới, nhưng nó nói : 'File does not exist', đơn giản là vì bạn cũng đang truy cập một thư mục chưa tồn tại. Bạn phải tạo tất cả các thư mục không tồn tại trước, sử dụng mkdir /path/to/dirlệnh.


0

Để tạo một tập tin trống với quyền sở hữu và quyền sử dụng cài đặt.

sudo install -v -oUSER -gGROUP -m640 /dev/null newFile.txt

Điều sudonày rất hữu ích trong nhiều tình huống, nhưng không trực tiếp là một phần của câu trả lời cho câu hỏi của OP.
tripleee

Nó là cần thiết nếu bạn không phải là tên người dùng mà bạn cần tập tin thuộc sở hữu của hoặc không phải là thành viên của nhóm.
LinuxGuru

Vâng, có những kịch bản như thế tuy nhiên nói đúng ra không phải những gì OP yêu cầu.
tripleee

0

Một trong những cách dễ nhất và nhanh chóng

$ vim filename
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.