Jak tworzyć niestandardowe polecenia w systemach Unix / Linux? [Zamknięte]

55

Czy ktoś może poprowadzić mnie do tworzenia niestandardowych poleceń w systemach Unix / Linux.

Qadir Hussain
źródło
2
Aby skorzystać z nich w przyszłości, sprawdź stronę faktów. Wyjaśnia rzeczy, które powinieneś zadać w swoich pytaniach. (takie jak publikowanie rzeczy, które zbadałeś i wypróbowałeś). Prawdopodobnie dlatego ktoś głosował w dół.
spuder

Odpowiedzi:

68

Utwórz skrypt bash w folderze / usr / bin, powinien on wyglądać mniej więcej tak

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

To naprawdę takie proste.

Wystarczy nazwać skrypt bash, który chcesz wpisać w terminalu, i spraw, aby był on niewykonalny: chmod +x filenamei możesz zacząć!

Eric
źródło
1
Czy możesz zmodyfikować to tak, aby zawierało przewodnik krok po kroku, w tym każdy niezbędny krok? Nadal nie jestem pewien, jak utworzyć własne polecenie.
Yoda
5
@AndersMB, musisz przeczytać książkę . Istnieje wiele dobrych, nawet dostępnych za darmo. Zacznij od „Linii poleceń Linuksa” .
Wildcard
Umm .. żartował. On był żartuje, prawda ?!
Somenath Sinha
1
wykonać z./filename
Squirrl
46
  1. Utwórz katalog powiedz „bin” w swoim katalogu domowym.
  2. Zaktualizuj zmienną ścieżki, aby zawierała ten katalog bin. Włóż to .profilelub .bash_profleplik, aby było trwałe.

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

  3. Utwórz skrypt powiedz „cześć” i przechowuj go w katalogu bin. Udziel uprawnienia do wykonania skryptu hello przez $ chmod +x hello.

    #!/bin/bash    
    echo My first program
  4. Załaduj ponownie .profilelub .bash_profle:

    $ . ~/.bash_profile

  5. Z dowolnego katalogu wystarczy wpisać:

    $ hello
    My first program
Guru
źródło
Wiem, że to jest bardzo stare, ale widziałem twoją sugestię utworzenia binfolderu w wielu odpowiedziach tutaj. Czy jest jakiś problem, jeśli .binzamiast niego bin? Jestem bardzo wybredna, jeśli chodzi o mój homewygląd i nie chcę dodatkowego folderu tylko dlatego.
MO
Próbowałem użyć tego bezskutecznie i przez pewien czas byłem bardzo sfrustrowany, myśląc, że coś jest nie tak z moją zshinstalacją, $PATHale ostatecznie okazało się, że chmod -x helloto nie działało, podobnie jak kapitał -X. Zamiast tego próbowałem chmod 755 hello, chociaż nie jestem pewien zagrożeń bezpieczeństwa związanych z tym poleceniem, w rzeczywistości pozwoliło mi to uruchomić hello. Czy ktoś ma na to wytłumaczenie? Zakładam, że jest to problem ze względu na wiek?
ConstantFun
1
@ ConstantFun Służy chmod +x hellodo dodawania uprawnień do skryptu. chmod -x hellorobi dokładnie odwrotnie - usuwa uprawnienia „uruchom”. (Zwróć uwagę na różnicę znaku plus / minus w odpowiedzi i w swoim komentarzu.)
Filip Happy
25

Łatwo, utwórz alias.

Powiedz, że chcesz napisać komendę cd w swoim katalogu pobierania. I chcesz to nazwać cdd.

alias cdd='cd ~/Downloads' 

Możesz utworzyć dowolne polecenie.

Oto dalsze informacje:
http://www.mediacollege.com/linux/command/alias.html

Spuder
źródło
6
Jednak nie utrzymuje się to podczas sesji. To polecenie działa, ale nie jest trwałe. Bardziej trwałym sposobem byłoby zmodyfikowanie pliku ~ / .bash_aliases i dodanie linii, którą tam zasugerowałeś.
Jeff Grimes,
2
Działa również poprzez dodanie go do pliku ~ / .bashrc
Delicia Brummitt
11

Większość, jeśli nie wszystkie, dystrybucje Linuksa mają mały skrypt w ~ / .bashrc, który wygląda prawie identycznie z tym:

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

Oznacza to jedynie, że możesz tworzyć własne polecenia (znane również jako „ aliases”, zwykle odnoszące się do istniejącego polecenia z niektórymi argumentami, których zawsze musisz użyć, lub listę poleceń, które należy wykonać w kolejności).

Twoja dystrybucja Linuksa najprawdopodobniej nie utworzy pliku .bash_aliases w twoim domu, chyba że już to zrobiłeś ręcznie. Aby utworzyć plik, wpisz następujące polecenie:
touch ~/.bash_aliases

Teraz ten plik będzie wykonywany automatycznie przy każdym uruchomieniu nowego terminala.

Teraz możesz utworzyć listę aliasów i dodać je do tego pliku do późniejszego wykorzystania. Na przykład polecenie rm(usuń) domyślnie NIE prosi o potwierdzenie żądania, gdy nakazuje mu się usunięcie pliku / katalogu. Jednak nie jest to argument, który mówi rm, aby zapytać o potwierdzenie żądania -i. Tak więc rm -i filePathwyświetli się komunikat z pytaniem, czy jesteś pewien, że chcesz usunąć określony plik. Teraz, jeśli przypadkowo usuniesz plik, najprawdopodobniej zapomnisz dołączyć -iopcję, i to właśnie wtedy aliasstaje się bardzo korzystne. Wpisując następujące polecenie

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

powie, Bashże za każdym razem, gdy poprosisz o usunięcie pliku, pojawi się komunikat potwierdzający. Oczywiście możesz zrobić znacznie więcej - to tylko podstawy.

Jeśli chcesz dowiedzieć się, jak korzystać z podstawowych komend (tzn cd, touch, rm, mkdir, pushd, popd, itd.) I / lub bardziej wyszukanych, ja polecam bardzo dobrą książkę możesz mieć na swojej półce jako odniesienie nazwie

praktyczny przewodnik po edytorach poleceń systemu Linux i programowaniu powłoki , autorstwa Marka G. Sobella . ISBN: 978-0133085044

Fadi Hanna AL-Kass
źródło
1
dlaczego ukośnik odwrotny?
phil294