Puncte:4

Script pentru a rula o comandă într-un terminal și apoi deschide o nouă filă de terminal și rulează o altă comandă

drapel co

Rulez Ubuntu 21.04 și vreau să creez un script, care ar face următoarele:

  1. Alerga:

    cd && cd cale/to/repo && git pull && npm i && cod . && npm run dev
    
  2. Apoi deschideți o nouă filă Terminal GNOME folosind:

    gnome-terminal --tab
    
  3. Apoi treceți la această filă și rulați:

    cd && cd cale/la/repo && git reset --hard && git pull -f && npm i && npm run dev
    

Deci, practic, vreau un terminal cu 2 file care rulează 2 servere de dezvoltare.

am incercat cu xdotool și xte, dar nu a funcționat niciodată (tastele nici măcar nu sunt apăsate).

Este chiar posibil să fac ceea ce vreau?

După cum se sugerează mai jos, am încercat, mi-a dat nu a reușit să ruleze cd așa că am căutat pe google și am venit cu următoarele:

gnome-terminal --tab -- /bin/bash -e -c "cd path/to/repo && ls && git pull && npm i && cod . && npm run dev" --tab -- /bin/bash -e -c "cd path/to/repo && git reset --hard && git pull -f && npm i && npm run dev"

Dar problema este că npm run dev nu ar trebui să se oprească vreodată, așa că a doua filă terminală nu este deschisă niciodată. Și trebuie să le conduc împreună...

vanadium avatar
drapel cn
Ce ai incercat pana acum? Rularea a două secvențe de comenzi din linia de comandă a `gnome-terminal` ar putea să nu mai fie posibilă, deoarece orice comandă trebuie să vină la sfârșit în zilele noastre după `--`. Este posibil să aveți nevoie de un alt emulator de terminal pentru a putea configura automat două sesiuni cu file.
terdon avatar
drapel cn
Notă minoră: nu aveți nevoie de „cd && cd path/to/repo”. Fie `path/to/repo` este o cale completă, așa că trebuie doar să faceți `cd path/to/repo` sau, dacă este relativ la `$HOME`, puteți face `cd ~/path/to/repo `.
drapel co
da, știu despre `cd && cd path/to/repo`, momentan copiez și lipesc comanda, așa că este un fel de felul meu de a `git pull && npm i && npm run dev`, indiferent de directorul curent.
Puncte:4
drapel cn

Cu toate că gnome-terminal indică faptul că -e opțiunea este depreciată, încă funcționează în 3.40.3.

# Opțiunea â-eâ este depreciată și ar putea fi eliminată într-o versiune ulterioară a gnome-terminal.
# Folosiți â-- â pentru a termina opțiunile și puneți linia de comandă pentru a se executa după ea.

Dezvoltatorii par să uite că aceasta este singura modalitate de a face ceea ce doriți, adică, configurați automat diferite medii de lucru în file. Sintaxa „nouă”, care adaugă comenzi pentru a rula la sfârșitul opțiunilor după -- nu permite asta. Odata ce -e opțiunea este eliminată, va trebui să vă mutați la un alt emulator de terminal pentru așa ceva.

Deci, acesta, de exemplu, încă funcționează până acum:

gnome-terminal --tab -e „htop” --tab -e „top”

Înlocuiți comenzile htop și top prin scripturile dvs. personalizate.

drapel co
Pare pe cale să funcționeze, dar declanșează o eroare: ```# Eroare: Eșuat la executarea procesului copil âcdâ: Eșec la execuție: Nu există un astfel de fișier sau director # Eroare: a eșuat la executarea procesului copil âcdâ: a eșuat la execve: nu există un astfel de fișier sau director``` dar funcționează cu `gnome-terminal --tab -e "ping goo.gl"` de ce nu poate rula `cd` acolo?...
Puncte:0
drapel co

deci conținutul scriptului sh este:

gnome-terminal --tab --title='frontend' -e "bash -c 'cd path/to/repo && git pull && npm i && code . && npm run dev'";
gnome-terminal --tab --title='backend' -e "bash -c 'cd path/to/repo && git reset --hard && git pull -f && npm i && npm run dev'"

Mulțumesc @vanadium pentru că ne-ai ajutat să afli direcția de căutare pe Google ;)

funcționează conform intenției. Dacă deschid un terminal și scriu sh myScript.sh va deschide 2 file suplimentare cu repozițiile backend și front-end rulând.

O mică problemă este că dacă execut fișierul sh făcând dublu clic pe el se vor deschide 2 ferestre de terminal (urât, vreau file).

Nu prea știu cum să rezolv asta.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.