Jak mogę utworzyć niestandardowe polecenie terminala (w celu uruchomienia skryptu)?

36

Jestem programistą. Kiedy chcę zacząć działać, zawsze wykonuję jakieś polecenie na terminalu. Na przykład:

sudo service apache2 start
sudo service mysql start
sublime

Aby przyspieszyć ten proces, tworzę .shplik zawierający te polecenia.

Teraz, kiedy chcę zacząć działać, właśnie uruchamiam ten plik .sh i uruchamiam wszystkie usługi (mysql, apache2 itp.).

Czy można w tym celu utworzyć niestandardowe polecenie? Na przykład, jeśli piszę sudo start-workingdo terminala, wykona te polecenia

Eray
źródło

Odpowiedzi:

58

Częstym sposobem, w jaki ludzie sobie z tym radzą, jest utworzenie binkatalogu w katalogu domowym:mkdir ~/bin

Następnie możesz tam umieścić własne skrypty: mv start-working ~/bin

Upewnij się, że skrypt jest wykonywalny: chmod +x ~/bin/start-working

Dodaj to na dole ~/.bashrcpliku (jeśli używasz bash, którym prawdopodobnie jesteś):export PATH=$PATH:~/bin

Teraz zaloguj się ponownie i wyloguj z terminala. Powinieneś być w stanie po prostu pisać start-working, a skrypt się uruchomi.

Teraz, gdy twoja ścieżka jest już skonfigurowana, wszelkie nowe skrypty, które do niej upuścisz ~/bin, możesz po prostu wpisać w nazwie.

Joseph Oppegaard
źródło
13
+1, a zamiast wylogować się i zalogować, możesz po prostu uruchomić polecenia source ~/.bashrclub . ~/.bashrc, aby zastosować zmiany.
Meysam
Joe Oppegaard, uważam tę naprawdę przydatną informację, ponieważ mam ukończone skrypty, które mam i chciałbym uruchomić je jako polecenie, a nie skrypt. Czy istnieje sposób na włączenie wszystkich podkatalogów, które tworzysz w ~ / bin, abyś nie musiał dołączać wielu linii eksportu do .bashrc? Próbowałem, export PATH=$PATH:~/bin/*ale nie zwróciło to pożądanych rezultatów.
Kevin Wyman
2
Domyślnie ~/.profilejuż dodaje ~/bindo PATH, więc dodanie go ~/.bashrcdodatkowo bezcelowo doda go dwa lub więcej.
geirha
Działa beze mnie dodawanie czegokolwiek do .bashrc, więc możesz być w stanie to pominąć, jak mówi geriha
Aaron Flores
z mojego doświadczenia
wynika
15

Szukałem niestandardowych poleceń i znalazłem to pytanie między innymi. Myślę, że to, czego szukałem, to aliasy, więc dam ci sposób, aby to zrobić za pomocą aliasu.

W twoim katalogu domowym:

nano .bash_aliases

I tam możesz zapisać swoje polecenia w jednym wierszu:

alias start-working='sudo service apache2 start; sudo service mysql start; sublime'

Po zapisaniu pliku ponownie skonfiguruj bashrc

. ~/.bashrc

I sprawdź, czy nowy alias jest załadowany

alias

To wszystko, możesz teraz zacząć działać, uruchamiając

start-working
roho
źródło