Câu hỏi Cách tạo tệp (ví dụ: tập lệnh .sh), có thể chạy từ thiết bị đầu cuối


Tôi có một tập tin script.sh và loại tập tin này là tập tin shellscript. Tôi muốn làm cho tập tin này như là tập tin ứng dụng / x-thực thi. Làm thế nào tôi có thể làm cho nó?


182
2017-12-16 12:27


gốc


có quan hệ với Làm cách nào để chạy các tệp .sh trong Thiết bị đầu cuối? - TuKsn
Có thể trùng lặp Làm cách nào để chạy các tệp .sh? - karel
Nó không phải là một bản sao, bởi vì tôi đã yêu cầu cụ thể về làm cho nó ứng dụng / x-thực thi. Câu hỏi khác chỉ yêu cầu mở file sh trong terminal. - Ziyaddin Sadigov


Các câu trả lời:


bạn có thể làm nó bằng cách làm

chmod +x filename.sh

vì vậy nó sẽ thực hiện khi bạn gọi nó sẽ

./filename.sh

và bạn cũng có thể truy cập tập lệnh đó dưới dạng ứng dụng.

mở thiết bị đầu cuối của bạn và gõ như dưới đây từ thư mục chính của bạn.

gedit .bashrc

sau đó trong tệp đã mở, hãy nhập tệp này ở dòng cuối cùng.

alias <Name_with which you wanna call it >='./filename.sh'

lưu và đóng.

Sau đó, nhập mã này vào thiết bị đầu cuối của bạn source ~/.bashrc để áp dụng các thay đổi bạn đã thực hiện. sau đó chỉ cần nhập tên bạn đã đặt ở đó sau bí danh để truy cập tập lệnh của bạn.

đảm bảo rằng bạn đã đặt trong thư mục chính.

khác

alias <Name_with which you wanna call it >='./<path to your script >.sh'

Hy vọng rằng sẽ giúp.


244
2017-12-16 12:33



Bạn có biết làm thế nào để sử dụng lệnh sudo sau khi nhập lệnh như: "alias command1 = '/home/user_name/dir/script.sh' .Trong tôi, nó hoạt động mà không có sudo, nhưng không phải với nó. - Aditya
Bạn cần phải khởi động lại bash sau khi chỉnh sửa .bashrc run: exec bash để khởi động lại bash. - Sampath Perera
Tại sao tệp thi hành được ./filename.sh và không chỉ filename.sh? - user1993
@ user1993 có, tôi cũng đang tìm cách để làm cho nó thực thi chỉ bằng filename và không ./filename - MycrofD
@ user1993 Nói chung, sử dụng ./filename.sh chỉ định tệp trong thư mục hiện tại và sử dụng filename.sh chỉ định một tệp trong thư mục hiện tại hoặc bất kỳ thư mục nào của PATH. Cách sử dụng đầu tiên loại bỏ bất kỳ sự không chắc chắn nào về tệp được truy cập. Trong trường hợp này, bạn đang cố gắng thực thi kịch bản với bash hoặc một trình thông dịch khác (bằng giả định #!/bin/bash như dòng đầu tiên trong kịch bản của bạn) chỉ bằng cách nhập tên tệp. Việc sử dụng này yêu cầu thư mục được chỉ định. Ngoài ra, bạn có thể thử bash filename.sh mà dường như làm việc với thư mục không xác định. - a505999


Có hai cách để thực thi tệp:

Phương thức GUI:

Chuyển đến tab quyền, sau đó đánh dấu vào hộp 'Execute: [] Cho phép thực thi tệp dưới dạng chương trình.

enter image description here

Phương thức Terminal / Command:

Bạn có thể sử dụng:

cd /to/my/required/directory

Sau đó chạy

chmod +x filename.extension

Hoặc chỉ cần chạy:

chmod +x /path/to/your/filename.extension

chmod cũng có một số tùy chọn nâng cao hơn:

Các khoảng trống là để cho thấy rằng nó được chia ra: - rwx --- ---

Tập đầu tiên của --- là Người dùng. Nhóm thứ hai là Nhóm và người cuối cùng là Người khác (bất kỳ ai khác)

r là viết tắt của Read, w cho Write và x cho eXecute.

Vì vậy, để cho phép mọi người đọc nó, nhưng chỉ Nhóm để thực hiện và Người dùng đọc và viết nó (nhưng vì một lý do nào đó không thực hiện) sẽ là:

-rw- rx- r-- Nhưng điều này sẽ được thêm vào lệnh như:

chmod +rw-rx-r-- /path/to/file.extension

chmod cũng có thể làm điều này bằng các con số. Nó dựa trên nhị phân (tôi nghĩ, vì nó là 1,2 và 4)

Vì vậy, có những con số này:

Thực hiện bởi người dùng là 100. Thực thi theo nhóm là 010. Thi hành bởi người khác là 001

Viết bởi người dùng là 200. Viết theo nhóm là 020. Viết bởi người khác là 002.

Đọc bởi người dùng là 400. Đọc theo nhóm là 040. Đọc bởi người khác là 004.

Sau đó, bạn thêm chúng lại với nhau để có được sự kết hợp mong muốn.

Vì vậy, để cho phép mọi người đọc nó, nhưng chỉ Nhóm để thực hiện và Người dùng viết nó (nhưng vì một lý do nào đó không thực hiện) sẽ là:

400 + 040 + 004 và 010 và 200

Giá trị này tăng lên 600 + 050 + 004 = 654.

Sau đó bạn có thể chạy lệnh.

chmod +654 /path/to/file.extension để đặt nó.

Và để đặt tất cả các quyền bạn có thể nhập:

chmod +rwxrwxrwx /path/to/file.extension

Hoặc (đây là một chút dễ dàng hơn để viết, nhưng khó nhớ mỗi một):

chmod +777 /path/to/file.extension

Cuối cùng, bạn có thể làm:

chmod -777 /path/to/file.extension

Để nhận tất cả các quyền từ mọi người.

Và:

chmod +300 /path/to/file.extension

Để thêm đọc và viết cho người dùng, mà không ảnh hưởng đến bất kỳ quyền nào khác (ví dụ: Thực thi quyền).

Trang web này có một hộp kiểm tra lưới nhỏ rất hữu ích, nhờ đó bạn có thể đánh dấu vào các tùy chọn bạn muốn và nó cung cấp cho bạn lệnh:

enter image description here

Tuy nhiên, không phải tất cả các kết hợp có thể đều hợp lý để sử dụng; những cái chính được sử dụng như sau:

755 - Owner có tất cả, và Group và Other có thể đọc và thực thi

700 - Owner có tất cả

644 - Owner có thể đọc và viết, và Group và Othercó thể đọc

600 - Owner có thể đọc và viết

Và, nếu bạn đang sử dụng các nhóm người dùng không tầm thường:

775 - Owner có thể đọc và viết, và Group và Othercó thể đọc

770 - Owner và Group có tất cả, và Other có thể đọc và thực thi

750 - Owner có tất cả, và Group có thể đọc và thực thi

664 - Owner và Group có thể đọc và viết, và Other chỉ có thể đọc

660 - Owner và Group có thể đọc và viết

640 - Owner có thể đọc và viết, và Groupcó thể đọc

777 và 666 hiếm khi được sử dụng, ngoại trừ trong / tmp.

Cảm ơn Ilmari Karonen cho chỉ ra những người sử dụng phổ biến!


31
2018-06-18 12:22



Nó không dựa trên bát phân (8-base) thay vì nhị phân (2-based)? Trong dạng nhị phân, bạn chỉ có thể có 0 và 1, trong khi ở bát phân, bạn có thể có 0, 1, ... 6, 7 - Justinas
@Justinas nhị phân trong đó 7 = 4 + 2 + 1 - 111 đại diện cho Đọc và Viết và Thực thi. - Tim


Chạy:

chmod +x /path/to/file.sh

Để làm cho nó không thể thực thi được, hãy chạy:

chmod -x /path/to/file.sh

Ví dụ tôi đã tạo .sh tập tin:

vi tester12.sh

Sau khi tôi viết một số mã trên trình soạn thảo vi, tôi sẽ thoát khỏi trình soạn thảo vi:

:wq!
chmod +x tester12.sh
./tester12.sh

7
2018-06-18 12:39