Việc tạo một tệp văn bản trong vi sẽ thay đổi máy tính của tôi?


9

Tôi biết rằng Linux là một hệ điều hành được xây dựng trên các tệp văn bản. Những gì tôi muốn làm là tạo một tệp bằng cách sử dụng vitất cả các lệnh khác nhau mà tôi đã học. Bằng cách đó tôi có thể tìm thấy từng lệnh riêng lẻ rất dễ dàng bằng cách sử dụng lệnh /in vi. Nhưng tôi chỉ muốn làm điều này nếu nó không thay đổi cách thức hoạt động của máy tính. Liệu cái này có phải một ý tưởng hay?


12
Vâng, nó sẽ có một tệp văn bản hơn ở đâu đó. ;-) (Đùa) Thực sự, một tập tin là một tập tin. Giống như hỏi nếu thêm ảnh vào thư mục hoặc tạo tài liệu từ mới sẽ thay đổi máy tính của bạn. Nó sẽ được thôi; bạn có thêm một bức ảnh / tài liệu ở đó Dù thế nào, câu trả lời bạn nhận được hầu hết là chính xác.
Rmano

Tại sao bạn nghĩ rằng nó sẽ làm điều đó?
Braiam

2
Không chắc ý của bạn là "hệ điều hành được xây dựng trên tệp văn bản", nhưng Linux không thực sự khác với Windows, khi nói đến tệp văn bản. Windows có các tệp .ini và .bat chẳng hạn, nếu đó là những gì bạn đang nghĩ.
hyde

Ngoài ra, bạn có nghĩ có gì đặc biệt về vi(so với, nói, gedit) hoặc bạn chỉ có nghĩa là "một trình soạn thảo văn bản"?
Ông Lister

1
@BJsgoodlife Một số tệp văn bản kiểm soát hệ thống. Họ được đặt ở những nơi đặc biệt và thường không thể sửa đổi mà không có sudo.
cpast

Câu trả lời:


34

Viết một tệp văn bản sẽ không "thay đổi cách thức hoạt động của máy tính".

Đặc biệt, để làm được điều đó, bạn phải làm một trong những

  • ghi đè lên một số tập tin quan trọng
  • ghi tệp của bạn vào một vị trí được bảo vệ đặc biệt như thư mục * .d trong / etc; bạn sẽ không được phép làm điều này
  • đánh dấu tập tin thực thi và đặt nó vào đường dẫn của bạn

Vì bạn rõ ràng sẽ không làm bất cứ điều gì như thế này, nên không có gì phải lo lắng. Cụ thể, câu trả lời khác đi đến độ dài không cần thiết bằng cách đề xuất các tệp văn bản của bạn cần bắt đầu bằng băm trên mỗi dòng. Tất nhiên họ không. Chỉ cần lưu trữ một tệp văn bản ở đâu đó trong một thư mục nhà bình thường sẽ không làm gì cả.


3
Tôi đề nghị đặt #để không có gì vô tình được thực hiện bởi bất kỳ cơ hội. Tôi nghĩ nó luôn luôn tốt hơn để ở bên an toàn hơn.
heemayl

8
Tôi nghĩ không phải lúc nào cũng tốt hơn để ở bên an toàn hơn. An toàn có một chi phí, và có một điểm mà rủi ro giảm không còn xứng đáng với chi phí. Ví dụ: khi nó vượt quá giá trị của thứ bạn đang cố gắng giữ an toàn (trong bối cảnh nơi tranh luận này có ý nghĩa). Về Bảo mật thông tin, bạn có thể tìm thấy rất nhiều câu trả lời thảo luận về việc bảo mật đúng đắn như thế nào và hệ thống hoàn toàn an toàn duy nhất cũng hoàn toàn vô dụng, vì vậy sẽ thật ngớ ngẩn khi nhấn mạnh vào bảo mật hoàn hảo trong mọi trường hợp.
David Z

9
Như một vấn đề hơi riêng, tôi nghĩ rằng hầu hết các điểm quan trọng để đưa lên (mà câu trả lời này không, còn người kia thì không) là tạo ra một tập tin tùy ý sẽ không làm bất cứ điều gì để thay đổi hệ thống. Bạn chỉ có thể ảnh hưởng đến hệ thống bằng cách tạo một tệp mà một quá trình khác đang tìm kiếm hoặc bằng cách thực thi tệp bạn tạo, nếu nó chứa mã ảnh hưởng đến hệ thống - nhưng điều đó nằm trong lời khuyên chung là không chạy các lệnh shell hoàn toàn không xác định , đó là thông minh cho dù bạn đang làm việc với các tập tin hay không.
David Z

2
làm cho tôi một chiếc bánh sandwich You won't have permission to do this. sudo làm cho tôi một chiếc bánh sandwich. Aye, aye, sir!
Lie Ryan

2
@heemayl tại sao không chỉ tạo dòng đầu tiên trong tập tin exit?
Random832

15

Bạn có thể lưu tất cả các lệnh bạn đã học trong một tệp nhưng một số điểm quan trọng cần lưu ý:

  • Đừng làm cho tập tin thực thi
  • Không bao giờ sourcetập tin
  • Cách tốt nhất là đặt một #phần đầu của tất cả các lệnh để nhận xét tất cả các lệnh để chúng không bị thực thi một cách tình cờ. Bằng cách này, bạn thực sự có thể tìm kiếm lệnh bạn cần và cũng sẽ không có rủi ro. Bạn có thể thêm #vào đầu mỗi dòng bằng lệnh sau:

    sed -i 's/^/#/' <file_name>

EDIT: Tôi đã đưa ra điểm thứ ba là một biện pháp bảo mật cực đoan, vì "neon_overload" và "David Z" chỉ ra rằng việc băm trong tất cả các dòng là quá rộng và do đó không cần thiết, tôi sẽ đứng thứ hai trong bối cảnh này. Cũng như được chỉ ra bởi "Random832", một sự thay thế tốt hơn nhiều so với điểm thứ ba của tôi sẽ là bắt đầu tập tin exit, vì sau đó sẽ không có lệnh nào được thực thi.

EDIT-2: "Rinzwind" đã đề cập đến hai điểm quan trọng:

  • Không ghi đè lên một tập tin hiện có

  • Lưu trữ tệp trong thư mục nhà của người dùng ( /home/$USER/).


4
put a # in the beginning of all the commands to comment out all the commands so they don't get executed accidentallyTôi không chắc đó là một đề nghị nghiêm túc hay một trò đùa. Máy dò mỉa mai của tôi thất bại tôi ngày hôm nay.
Lie Ryan

Từ mà bạn cần đặt tầm quan trọng là 'vô tình' .. người dùng có thể vô tình giữ tệp ở một nơi nào đó không an toàn vì có thể thực thi được .... ở đây tôi chỉ không có cơ hội nào..hãy bạn đã rõ rồi ..
heemayl

4
Anh ta không thể đặt một "lối ra" hoặc một cái gì đó tương tự ở đầu tập tin, thay vì bình luận từng dòng một?
o0 '.

Có lẽ ý anh là #! - đó là đặt trình thông dịch thành null để nó không chạy.
Joshua

1
@BJsgoodlife, không #!- chỉ exit; theo cách đó bạn cũng được bảo vệ chống lại sh yourfile, điều mà một shebang không hợp lệ sẽ không giúp được.
Charles Duffy

7

neon_overload có một câu trả lời rất hay.

Tôi sẽ mở rộng một chút về một khía cạnh nào đó của câu hỏi của bạn - Tôi sẽ đưa ra nhận xét này, nhưng tôi không có đủ danh tiếng ở đây.

Linux, với tư cách là một hệ điều hành, rất nhiều KHÔNG dựa trên các tệp văn bản. Điều đó nói rằng, tôi có thể thấy bạn đến từ đâu. Đối với một người quan sát bên ngoài, có một chút công bằng với việc chỉnh sửa và khởi chạy các tệp "văn bản", đặc biệt là so với Windows.

Điều này có một số lý do, một số trong đó là:

  • Không có hệ thống đăng ký trong Linux, giống như trong Windows. Do đó, thông thường các ứng dụng lưu trữ cài đặt của chúng trong tệp văn bản và bạn sẽ được hướng dẫn chỉnh sửa chúng, thay vì chỉnh sửa sổ đăng ký như trong Windows.
  • Linux được sử dụng rất rộng rãi như một hệ thống máy chủ và nhiều người trong số họ sử dụng nó trên máy tính để bàn làm việc với các hệ thống máy chủ. Không giống như Windows Server, máy chủ Linux thường chạy mà không có giao diện đồ họa. Do đó, các sản phẩm dự kiến ​​sẽ chạy trên máy chủ Linux và trên thực tế, người dùng và quản trị viên của họ, sẽ hoạt động mà không có giao diện đồ họa. Các sản phẩm (và các tính năng hệ thống, đáng nói) chỉ được mong đợi chạy trên Windows thường tập trung vào GUI nhiều hơn (như MS SQL)
  • Hệ thống kịch bản Linux có phần phổ biến và minh bạch hơn Windows. Bạn sẽ thấy các tập lệnh trên Windows - nhưng chúng sẽ được gọi là Something.vbs hoặc other.bat. Bạn sẽ không nhận ra chúng là các tệp văn bản - nhưng, xem xét những gì trong điểm thứ hai của tôi, việc Linux rình mò xung quanh các tệp .sh là điều phổ biến hơn nhiều.
  • Cuối cùng, nhiều người dùng Linux đã quen làm việc mà không có giao diện đồ họa, và, trong nhiều thứ, sẽ thay vì chỉnh sửa các tệp trực tiếp như họ không có GUI, thay vì dò dẫm các công cụ đồ họa. Tôi biết rằng khi tôi muốn làm một cái gì đó sâu hơn trong hệ thống, tôi chỉ cần khởi động thiết bị đầu cuối, và nhiều đồng nghiệp của tôi cũng vậy.

"Không có hệ thống đăng ký trong Linux", nhưng có dconf ( en.wikipedia.org/wiki/Dconf ). Tuy nhiên, không phải tất cả các hệ thống chạy kernel Linux đều có nó và không phải tất cả mọi thứ mà một hệ thống Windows sẽ cấu hình trong registry sẽ được cấu hình ở đó.
Daniel Landau

1

Câu trả lời ngắn gọn là, không, bạn sẽ không thay đổi máy tính của mình bằng cách tạo tệp văn bản bằng vi. Tuy nhiên, nếu bạn không cẩn thận, việc tạo tệp văn bản đầu tiên đó có thể thay đổi cuộc sống của bạn . Học theo cách Unix có thể là một thực hành bổ ích sâu sắc.


0

vilà một trình soạn thảo văn bản , do đó, nếu tất cả những gì bạn muốn chỉ là lưu trữ một số đoạn văn bản trong một tệp văn bản và tìm kiếm thông qua nó, thì bạn có thể thực hiện tất cả trực tiếp từ thiết bị đầu cuối với các lệnh tích hợp.

  1. Viết ghi chú vào tệp văn bản (sẽ tạo tệp nếu không tồn tại):

    lưu ý tiếng vang với dữ liệu quan trọng >> info.txt

QUAN TRỌNG: Coi chừng các trích dẫn đơn và kép, và tiền tố chúng bằng dấu gạch chéo nếu bạn muốn bao gồm chúng.

  1. Tìm kiếm tệp cho một số văn bản (ví dụ important):

    grep --color -i thông tin quan trọng

Để tránh gõ --color -imà nên được đặt bí danh trong của bạn ~/.bashrc.

Bạn cũng có thể thêm văn bản nhiều dòng vào các tệp văn bản hiện có hoặc không tồn tại:

cat >> info2.txt

sau đó nhập hoặc dán văn bản và khi hoàn tất, sau đó nhấn CTR+Z

Đối với việc thay đổi hệ thống, không, nó sẽ không thay đổi cách hệ thống của bạn hoạt động miễn là bạn tạo tệp trong thư mục nhà riêng của mình và không thực thi chúng (bạn có thể thực thi tệp ngay cả khi không thực thi được, ví dụ như với bash myFile) . Cũng đảm bảo rằng bạn chỉ sử dụng các đặc quyền gốc một cách nghiêm ngặt khi bạn cần chúng.

Và cuối cùng, cách giải thích của bạn về hệ thống dựa trên tệp đã phần nào khiến bạn hiểu lầm: hầu hết hệ điều hành đều có các tệp lưu trữ các cài đặt quan trọng ảnh hưởng sâu sắc đến cách hệ thống hoạt động, nhưng chúng nằm ở các vị trí được xác định trước và thường được bảo vệ khỏi sự sửa đổi của người dùng thông thường.

Tuy nhiên, có thể dễ dàng tự bắn vào chân mình, ví dụ, nếu như một người dùng thông thường, bạn có một thư mục 'thực thi' cục bộ mà bạn đã thêm vào PATHvà nếu trong thư mục đó, bạn có các tệp thực thi có cùng tên được xây dựng -in tiện ích chung hoặc từ khóa bash, chẳng hạn như test, echo, cat, for, cut,, vv

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.