Làm thế nào để gọi chỉ là một chức năng từ tập lệnh văn bản?


2

Tôi có một tệp văn bản với rất nhiều chức năng trong đó. ví dụ:

# fisrt function
# runs update and upgrade
    function upug() {
        sudo apt-get update && sudo apt-get upgrade
    }

# second function
# find out the processes running that use the most memory
    function memusage() {
        ps aux | sort -nrk 4 | head
    }
# third function
# install package
    function ipkg() {
        sudo apt-get install
    }
[...]

Bây giờ tôi muốn có thể sử dụng các chức năng này như một cái gì đó tương tự như sau trong thiết bị đầu cuối:

  • với việc chạy upugtrong các cuộc gọi đầu cuốifunction upug()

    user@test-pc:~$ upug 
    
  • với việc chạy memusagetrong các cuộc gọi đầu cuốifunction memusage()

    user@test-pc:~$ memusage
    
  • với ipkg package_Namecác cuộc gọi liên kếtfunction ipkg()

    user@test-pc:~$ ipkg package_Name
    

Tôi đã tạo một bí danh cho mỗi lệnh này với tên hàm. Bây giờ câu hỏi là làm thế nào tôi có thể gọi các chức năng này với tên bí danh của điều đó?

Câu trả lời:


1

Nếu tôi là bạn, tôi sẽ đặt cả hàm và bí danh vào ~/.bash_aliases(Xem Bí danh: sự khác biệt giữa .bash_rc, .bash_aliases và / usr / local / bin ).

Vì bạn đã có các bí danh được xác định trong phiên hiện tại của mình, bạn có thể chỉ cần nguồn tệp văn bản để sau đó gọi các lệnh bí danh:

user@test-pc:~$ . <PATH_TO_YOUR_TEXT_COMMANDS>/my_commands.txt
user@test-pc:~$ upug

Ngoài ra, bạn có thể tải tệp từ của bạn ~/.bashrcnhư sau:

if [ -f <PATH_TO_YOUR_TEXT_COMMANDS>/my_commands.txt ]; then
    . <PATH_TO_YOUR_TEXT_COMMANDS>/my_commands.txt
fi

và evey thời gian tôi phải chạy . <PATH_TO_YOUR_TEXT_COMMANDS>/my_commands.txt?
αғsнιη

Chỉ khi bạn giữ chúng trong một tệp riêng biệt, nhưng chúng sẽ được tự động tải nếu được đặt vào~/.bash_aliases
Sylvain Pineau

Nếu bạn muốn giữ chúng trong một tệp riêng biệt, bạn cũng có thể tải nó từ .bashrctệp của mình , áp dụng cùng một cơ chế được sử dụng để tải ~/.bash_aliases. Xem câu hỏi tôi liên kết trong câu trả lời của tôi cho mã liên quan.
Sylvain Pineau

Tôi đã cập nhật câu trả lời của mình với mã mà tôi đã đề cập
Sylvain Pineau

1

Cuối cùng tôi tìm thấy một giải pháp dễ dàng. Tôi đã lưu tệp văn bản bằng cách đặt tên my_funcsvà nó trong thư mục nhà của tôi. sau đó tôi gọi một hàm với lệnh sau:

source file_Name; func_Nmae [extra_Parameters]

ví dụ để sử dụng ipkgchức năng và cài đặt bất kỳ gói nào tôi đã sử dụng lệnh đơn giản như lệnh dưới đây:

source my_funcs; ipkg package_Nmae

kết quả của việc chạy source my_funcs; ipkg vlcnhư sau:

kasiya@kasiya-pc:~$ source my_funcs; ipkg vlc

[sudo] password for kasiya: 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
[...]

Và tôi chạy alias go='source my_funcs;'trong terminal để thêm lệnh này godưới dạng bí danh trong ~/.bashrctệp và lần sau tôi chỉ sử dụng lệnh ngắn để cài đặt gói hoặc sử dụng bất kỳ chức năng nào:

go function_Name [parameters]

MÁT MẺ!

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.