Acasă
» MAC OS X
»
Cum se execută comenzi de terminal dintr-un script pe macOS
Cum se execută comenzi de terminal dintr-un script pe macOS
Pentru a executa comenzi Terminal dintr-un script pe macOS, introduceți-le într-un script shell în text simplu, faceți-l executabil, apoi rulați-l din Finder sau Terminal. Folosiți o .commandextensie pentru a-l deschide făcând dublu clic. Un script nu ocolește controalele de confidențialitate macOS și nu acordă privilegii de administrator.
Un script shell scurt începe cu un shebang care selectează zsh.
1. Scrieți comenzile într-un fișier text simplu
Un script shell este un fișier text care conține comenzi. Începeți-l cu un shebang , prima linie care îi spune macOS ce shell ar trebui să interpreteze fișierul. Shell-ul implicit în prezent pentru ferestrele noi de Terminal este zsh, deși un administrator poate seta o valoare implicită diferită, așa cum explică Apple în ghidul său Terminal . Acest exemplu folosește explicit zsh:
#!/bin/zsh
# Print a message when the script runs
echo "Script is running"
Puneți comenzile pe linii separate sub shebang. Shebang-ul alege interpretorul, deci folosiți sintaxa pe care o suportă; un script Bash, de exemplu, poate începe cu #!/bin/bash. Ghidul Apple pentru scripturi shell explică elementele de bază.
Puteți utiliza TextEdit, dar asigurați-vă că fișierul este text simplu: documentele TextEdit noi pot fi text îmbogățit. Alegeți Format > Transformare în text simplu sau setați formatul de document nou al TextEdit la Text simplu în setările sale. Formatarea text îmbogățit nu este cod shell. Apple documentează aceste opțiuni în ghidul său TextEdit . Funcționează și un editor de cod sau un editor de linie de comandă, cum ar fi nano.
Salvați scriptul cu extensia .command într-o locație pe care o puteți găsi.
2. Salvați-l cu o .commandextensie
Salvați fișierul text simplu cu un nume descriptiv, cum ar fi MyScript.command. Extensia ajută Finder să deschidă scriptul în Terminal când faceți dublu clic pe el. Documentația pentru dezvoltatori arhivată de Apple descrie acest flux de lucru cu dublu clic pentru scripturile shell. Verificați numele final în Finder: dacă se termină în .command.txt, redenumiți-l astfel încât extensia finală să fie doar .command. Păstrați exemplul într-o locație precum Desktopul în timp ce îl configurați.
Dacă macOS întreabă ce extensie să utilizeze, păstrați .commandși confirmați că Finder nu a adăugat .txt.
3. Faceți scriptul executabil
Deschideți Terminalul și acordați contului dvs. permisiunea de a executa fișierul. Pentru exemplul salvat pe Desktop, introduceți:
chmod u+x "$HOME/Desktop/MyScript.command"
Apăsați Enter. u+xAdaugă permisiunea de execuție pentru proprietar; ghilimelele protejează căile cu spații. Înlocuiți calea exemplu dacă este necesar. Trageți fișierul în Terminal sau utilizați meniul Option-clic din Finder pentru a copia numele căii sale. Apple prezintă aceeași metodă în instrucțiunile pentru fișierele executabile .
Comanda chmod adaugă permisiunea de execuție pentru proprietarul fișierului.
4. Rulați scriptul
Faceți dublu clic MyScript.commandîn Finder pentru a-l rula în Terminal. Rezultatul și erorile apar acolo. Sau introduceți calea completă:
"$HOME/Desktop/MyScript.command"
Sau schimbați mai întâi folderul, apoi adăugați prefixul numelui fișierului cu ./:
cd "$HOME/Desktop"
./MyScript.command
Acesta ./îi spune shell-ului să ruleze un fișier din folderul curent. Ghidul de comenzi Terminal de la Apple explică cum se rulează un executabil după numele căii.
Rulați fișierul după calea sa și verificați rezultatul în Terminal.
Depanarea erorilor frecvente
„Permisiune refuzată”: Verificați dacă ați executat comanda chmod u+xpe fișierul corect. Dacă este necesar, repetați comanda folosind calea exactă a fișierului. Faptul că un fișier este executabil nu autorizează fiecare comandă din interiorul acestuia.
„Nu există un astfel de fișier sau director”: Confirmați locația și ortografia, inclusiv extensia. Un fișier salvat accidental ca MyScript.command.txtnu se va potrivi cu comanda de mai sus. Tragerea fișierului în Terminal poate ajuta la inserarea căii sale.
O comandă funcționează atunci când este tastată, dar nu în script: Scriptul poate utiliza o altă shell sau se poate baza pe aliasuri, variabile de mediu sau un director de lucru din sesiunea interactivă Terminal. Folosește shebang-ul corect, evită să te bazezi pe aliasuri și specifică explicit căile fișierelor. Dacă comenzile necesită un anumit folder, adaugă o cdlinie corespunzătoare lângă începutul scriptului.
Înțelegeți permisiunile înainte de partajare
Bitul de execuție este separat de permisiunile de confidențialitate. Un script rulează în mod normal ca și contul dvs.; utilizați-l sudodoar pentru comenzi care necesită privilegii de administrator.
Este posibil ca macOS să solicite acces la foldere protejate sau la alte aplicații. Examinați fiecare solicitare și permiteți doar ceea ce este necesar. Verificați meniul Apple > Setări sistem > Confidențialitate și securitate pentru Fișiere și foldere și setările de confidențialitate aferente . Aprobările depind de accesul solicitat și de aplicația care face solicitarea; acestea nu sunt permisiuni generale per comandă și nu sunt incluse într-un script partajat.
Înainte de a rula sau partaja un script, citește fiecare linie și asigură-te că înțelegi ce modifică. Un .commandfișier este util deoarece poate rula atunci când este deschis, așa că folosește doar fișiere din surse în care ai încredere.