Szukam sposobu, aby następujący alias działał dla dowolnej nazwy pliku.
alias dim='cd /home/jason/Documents; vim *the desired file*; cd'
Zastanawiam się, czy istnieje sposób, aby zmienić ten alias, aby był w stanie wpisać dowolną nazwę pliku jako taką:
dim *the desired file*
I wciąż otrzymujesz ten sam wynik. Zasadniczo czy istnieje sposób na wywołanie dowolnego wpisanego po nazwie aliasu samego aliasu? Coś jak:
alias dim='cd /home/jason/Documents; vim <what is typed after alias>; cd'
Odpowiedzi:
Nie, nie możesz tego zrobić za pomocą aliasów powłoki. Musisz użyć funkcji.
Oto prosta funkcja do wykonania zadania:
Funkcja
dim
przyjmie nazwę pliku jako argument. Możesz umieścić ten fragment kodu na końcu~/.bashrc
pliku, a następnie uruchomić go jako:Zastąp
file.txt
dowolną nazwą pliku, którą chcesz.Aby uruchomić go z bieżącej sesji powłoki,
source
ten~/.bashrc
plik pierwszy:źródło
$1
wskazuje pierwszy parametr pozycyjny lub argument funkcji. Pomyśl o tym jako o sposobie wprowadzania danych wejściowych do funkcji lub skryptu .. podobnie jak we wszystkich językach programowaniabash
również to używa .... znaleźć wiele zasobów na ten temat w Google ..Nie z aliasami, zamiast tego używaj funkcji.
Ze strony podręcznika użytkownika Bash :
Więc twoją funkcją może być:
źródło
cd
aby przenieść cię do twojego katalogu domowego;cd ..
idzie o jeden poziom wyżej.cd -
przeniesie Cię do poprzedniego katalogu, z któregocd
edytujesz.$*
to$1 $2 $3...
po prostu przekazanie vimowi całej listy, a nie pierwszego wpisanego argumentu. I jak powiedział Chriki,cd -
wróci do poprzedniego katalogu (tego, w którym byłeś, kiedy wywołałeś funkcję).