Mój kod do stworzenia skryptu wykonywalnego
touch script.sh && echo "echo 'Hello World'" > script.sh && sudo chmod +x script.sh
command-line
scripts
Sham Fiorin
źródło
źródło
sudo
bardzo oszczędnie. Przyzwyczajenie się do rzucania nim może być niebezpieczne. W tym przypadku jesteś właścicielem skryptu, który utworzyłeś, dzięki czemu możesz robić, co chcesz, z uprawnieniami, bez sudo.Odpowiedzi:
Możesz pominąć całą
touch
komendę i nie musisz jej używaćsudo
. Aby jeszcze bardziej skrócić linię poleceń, możesz użyćbash
rozszerzenia historii, aby zapisać nazwę pliku po raz drugi i pominąć niepotrzebne spacje:Rozszerzenie historii zastępuje
!#:3
się czwartym słowem z bieżącego wiersza poleceń, którym w Twoim przypadku jest nazwa plikuscript.sh
. Oczywiście należy to dostosować w przypadku modyfikacji pierwszego polecenia, np .:Zauważ, że poprawny skrypt wymaga shebang :
Jeśli potrzebujesz częściej tego łańcucha poleceń, polecam zdefiniowanie funkcji , w ten sposób wystarczy wpisać nazwę funkcji. Podobnie adaptowalnym - choć dłuższym - sposobem jest użycie zmiennej przechowującej nazwę pliku:
Jeśli twoja nazwa pliku zawiera znaki specjalne, nie zapomnij podać ich poprawnie .
źródło
install
Komenda (część GNU Coreutils wraz zcp
,mv
,rm
, itd.) Można kopiować jednocześnie ustawienie jego własności i uprawnień oraz tworzenia katalogów nadrzędnych jako niezbędny plik. Domyślnie nowy plik będzie wykonywalny. Nie rozumie „-
”, ale/dev/stdin
zamiast tego można go użyć:W powyższym użyto ciągu „ tutaj ”, aby podać tekst na stdin, który jest nieco krótszy niż wstawienie go. Argumenty,
echo
które nie wymagają cytowania, chyba że zawierają znaki o specjalnym znaczeniu.źródło
install <(echo echo Hello World) script.sh
Wolę używać
cat
do takich zadań:źródło
Możesz także pominąć cały chmod i zamiast tego użyć echa umask przed echem. Powinieneś zaoszczędzić kilka bajtów. Shebang jest opcjonalny, o ile korzystasz z poleceń zrozumiałych dla każdej powłoki (głównie bourne i C).
źródło
umask
Domyślnie nie można używać do ustawiania bitu wykonywalnego ...