Làm cách nào để tạo các lệnh tùy chỉnh trong Unix / Linux? [đóng cửa]


55

Bất cứ ai cũng có thể hướng dẫn tôi tạo các lệnh tùy chỉnh trong Unix / Linux.


2
Để tham khảo trong tương lai, bạn nên kiểm tra trang sự kiện. Nó giải thích những điều bạn nên đặt trong câu hỏi của bạn. (chẳng hạn như đăng những thứ mà bạn đã nghiên cứu & thử). Đó có thể là lý do tại sao một người nào đó đã bỏ phiếu này.
kẻ lừa đảo

Câu trả lời:


68

Tạo một tập lệnh bash trong thư mục / usr / bin của bạn, nó sẽ trông giống như thế này

#!/bin/bash
Whatever combination of commands you want to run when you type this thing.

Nó thực sự dễ dàng.

Chỉ cần đặt tên cho tập lệnh bash những gì bạn muốn nhập vào thiết bị đầu cuối và làm cho nó có thể thực hiện được: chmod +x filenamevà bạn thật tuyệt!


1
Bạn có thể sửa đổi điều này thành một hướng dẫn từng bước, bao gồm mọi bước cần thiết không? Tôi vẫn không chắc chắn làm thế nào để thực hiện lệnh tùy chỉnh của riêng tôi.
Yoda

5
@AndersMB, bạn cần đọc một cuốn sách . Có nhiều cái tốt, thậm chí có sẵn miễn phí. Bắt đầu với "Dòng lệnh Linux" .
tự đại diện

Umm .. anh ấy đã nói đùa. Anh ấy đang đùa, phải không?!
Somenath Sinha

1
thực hiện với./filename
Squirrl

46
  1. Tạo một thư mục nói "bin" trong thư mục nhà của bạn.
  2. Cập nhật biến đường dẫn của bạn để bao gồm thư mục bin này. Đặt nó trong .profilehoặc .bash_profletập tin để làm cho nó vĩnh viễn.

    export PATH=$PATH":$HOME/bin"

  3. Tạo một kịch bản nói, "xin chào" và giữ nó trong thư mục bin của bạn. Cấp quyền thực thi cho kịch bản xin chào bằng cách $ chmod +x hello.

    #!/bin/bash    
    echo My first program
  4. Tải lại .profilehoặc .bash_profle:

    $ . ~/.bash_profile

  5. Từ bất kỳ thư mục nào, bạn chỉ cần gõ:

    $ hello
    My first program

Tôi biết điều này rất cũ nhưng tôi đã thấy đề xuất của bạn về việc tạo một binthư mục trong rất nhiều câu trả lời ở đây. Có vấn đề gì nếu nó .binthay vì bin? Tôi thực sự kén chọn về homengoại hình của mình và tôi không muốn có thêm một thư mục chỉ vì.
MO

Tôi đã thử sử dụng nó không thành công và đã rất thất vọng trong một thời gian nghĩ rằng có gì đó không đúng với zshcài đặt của tôi hoặc $PATHcuối cùng là nó chmod -x hellokhông hoạt động, vốn cũng không -X. Thay vào đó tôi đã thử chmod 755 hello, trong khi tôi không chắc chắn về các rủi ro bảo mật liên quan đến lệnh này, nó thực sự cho phép tôi chạy hello. Có ai có một lời giải thích cho điều này? Tôi cho rằng đó là một vấn đề liên quan đến tuổi?
ConstantFun

1
@ConstantFun Sử dụng chmod +x hellođể thêm đặc quyền 'chạy' vào tập lệnh. chmod -x hellothực hiện ngược lại chính xác - loại bỏ các đặc quyền 'chạy'. (Lưu ý sự khác biệt dấu cộng / trừ trong câu trả lời và trong nhận xét của bạn.)
Filip Happy

25

Dễ dàng, tạo một bí danh.

Giả sử bạn muốn viết một lệnh để cd vào thư mục tải xuống của bạn. Và bạn muốn gọi nó là cdd.

alias cdd='cd ~/Downloads' 

Bạn có thể tạo bất kỳ lệnh nào bạn muốn.

Dưới đây là thông tin thêm:
http://www.mediacolitic.com/linux/command/alias.html


6
Điều này không tồn tại qua các phiên, mặc dù. Lệnh này hoạt động, nhưng không vĩnh viễn. Một cách lâu dài hơn sẽ là sửa đổi tệp ~ / .bash_aliases của bạn và thêm dòng bạn đề xuất ở đó.
Jeff Grimes

2
Cũng hoạt động bằng cách thêm nó vào tệp ~ / .bashrc của bạn
Delicia Brummitt

11

Hầu hết, nếu không phải tất cả cho đến bây giờ, các bản phân phối Linux có một tập lệnh nhỏ trong ~ / .bashrc trông gần giống như thế này:

if [ -e ~/.bash_aliases ]
then
. ~/.bash_aliases
fi

Điều này chỉ có nghĩa là bạn có thể tạo các lệnh của riêng mình (còn được gọi là ' aliases' thường được gọi là một lệnh hiện có với một số đối số bạn luôn phải sử dụng hoặc danh sách các lệnh phải được thực hiện theo thứ tự).

Bản phân phối Linux của bạn rất có thể sẽ không có tệp .bash_aliases được tạo trong nhà của bạn, trừ khi bạn đã thực hiện thủ công điều đó. Vì vậy, để tạo tập tin, gõ lệnh sau:
touch ~/.bash_aliases

Bây giờ tệp đó sẽ được thực thi tự động mỗi khi bạn tắt Terminal mới.

Những gì bạn có thể làm bây giờ là tạo một danh sách các bí danh và thêm chúng vào tệp đó để sử dụng sau. Ví dụ: lệnh rm(remove) theo mặc định KHÔNG yêu cầu bạn xác nhận yêu cầu của bạn khi bạn yêu cầu xóa tệp / thư mục. Tuy nhiên, có một đối số rmyêu cầu bạn xác nhận yêu cầu của bạn , -i. Vì vậy, rm -i filePathsẽ hiển thị một thông báo hỏi bạn nếu bạn chắc chắn muốn xóa tệp đã chỉ định. Bây giờ, nếu bạn vô tình xóa một tập tin, rất có thể bạn sẽ quên bao gồm -itùy chọn và đó là nơi aliastrở nên rất có lợi. Gõ lệnh sau

echo "alias rm='\rm -i'" >> ~/.bash_aliases

sẽ thông báo Bashrằng mỗi khi bạn yêu cầu xóa một tập tin, một thông báo xác nhận sẽ được hiển thị cho bạn. Tất nhiên, có rất nhiều thứ bạn có thể làm được, đây chỉ là những điều cơ bản.

Nếu bạn muốn tìm hiểu làm thế nào để sử dụng một số lệnh cơ bản (tức là cd, touch, rm, mkdir, pushd, popd, vv) và / hoặc những người phức tạp hơn, tôi khuyên bạn nên một cuốn sách rất tốt bạn có thể có trên kệ sách của bạn như một tài liệu tham khảo được gọi là

một hướng dẫn thực tế cho các trình soạn thảo lệnh linux và lập trình shell , bởi Mark G. Sobell . SĐT: 980-0133085044


1
Tại sao dấu gạch chéo ngược?
phil294
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.