Vraag Hoe voer ik .sh-bestanden uit?


Wanneer ik een .sh-bestand open, wordt het in gedit geopend in plaats van in de terminal. Ik kan geen enkele vergelijkbare optie vinden Klik met de rechtermuisknop → Openen met → Andere toepassing ... → Terminal.

Hoe open ik dit bestand in de terminal?


246
2018-05-01 02:39


oorsprong


Is het doel van dit script om env-variabelen in te stellen voor verder gebruik? - Rob
Gebruik geen extensies op scripts. Op een bepaald moment in de toekomst zul je misschien merken dat een andere taal meer geschikt is om de taak uit te voeren die je huidige script aan het doen is. En dan heb je een probleem. Bewaar je de oude naam, met een volledig misleidende extensie, of hernoem je het, misschien moet je een heleboel plaatsen bewerken waar je script wordt gebruikt? - geirha
U hebt de bestandsextensie niet nodig. Het is leuk om te hebben, maar is niet nodig. Het besturingssysteem kijkt niet naar de bestandsextensie. Het kijkt naar de gegevens - ActionParsnip
Als je foo.sh in robijn herschrijft, kun je altijd het .sh-bestand gebruiken om te starten ruby foo.rb - glenn jackman
In Dolphin kun je op F4 drukken en een console wordt geopend - Motte001


antwoorden:


Geef execute toestemming aan je script:

chmod +x /path/to/yourscript.sh

En om je script te draaien:

/path/to/yourscript.sh

Sinds . verwijst naar de huidige map: if yourscript.sh staat in de huidige map, je kunt dit vereenvoudigen om:

./yourscript.sh

377
2018-05-01 03:18



+1 geeft alleen antwoord om te tonen dat alleen uitvoerrechten worden toegevoegd op een terminal. - Hailwood
Als je dat doet bash /path/to/yourscript.sh dan heb je het niet nodig chmod +x - Aleksandr Levchuk
Eigenlijk kan je gebruiken . /path/to/yourscript.sh als het script enkele omgevingsvariabelen moet instellen. - Rob
Niemand noemt de traditionele: ./path/to/yourscript.sh (zonder de spatie erna .)? Ik vind dat de eenvoudigste en gemakkelijkst te gebruiken ... Maar hoe dan ook, hier is mijn alternatief dat bijna hetzelfde zou moeten doen als ./ zou, hoewel ik niet zie waarom je niet zou gebruiken ./: (FILENAME=~/rem4space.sh;SLL=$(cat $FILENAME|head -1|sed 's:^#!\(.*\):\1:g');[ ! -z $SLL ] && exec $SLL $FILENAME;sh $FILENAME) ... Bewerk FILENAME naar je zin. Merk ook op dat sh zal worden gebruikt als er geen alternatief is. - MiJyn


U moet shell-scripts markeren als uitvoerbaar om ze vanuit bestandsbeheer uit te voeren:

  1. Klik met de rechtermuisknop op uw .sh bestand en selecteer eigenschappen:

    enter image description here

  2. In de machtigingen tab, vink aan Sta het uitvoeren van bestand toe als programma:

    enter image description here

  3. Sluit de eigenschappen venster en dubbelklik op het bestand. Er verschijnt een dialoogvenster met de optie om het script in een terminal uit te voeren:

    enter image description here


72
2018-05-01 03:02



Goed met screenshots - gd1
Dit werkt niet in Ubuntu 13.04. Blijft hoe dan ook openen in gedit, vraagt ​​me nooit om uit te voeren. Bewerken: Nvm, imjustmatthew beantwoordt dit. - mpen
Voordat we dit kunnen gebruiken, moeten we het bestand toestemming geven om uit te voeren met behulp van chmod. chmod + x bestandsnaam.sh of chmod 755 bestandsnaam.sh - Arvind Rawat
Ik heb geen popup! IDE wordt meteen geopend, geen popup - Green
@ DanielMöller, hier is het antwoord op je vraag. askubuntu.com/questions/38661/how-do-i-run-sh-files/... - Akhilesh Dhar Dubey


Voorwaarde

Voordat je het .sh-bestand kunt uitvoeren, moet je het uitvoerbaar maken:

  1. Klik met de rechtermuisknop op het bestand
  2. kiezen eigenschappen
  3. kiezen machtigingen
  4. kiezen Laat het bestand als een programma uitvoeren

Waarschuwing

Zorg ervoor dat u de bron vertrouwt waar u het bestand vandaan hebt gehaald. Het kan een zijn virus.

De zeer eenvoudige manier

  1. Dubbelklik op het bestand
  2. Klik op uitvoeren in terminal

Dit heeft een probleem. De terminal zal onmiddellijk sluiten en u zult de uitvoer niet kunnen zien.

De eenvoudige manier

  1. Open Toepassingen -> Accessoires -> Terminal
  2. Sleep het .sh-bestand naar de terminal en druk op Enter

De manier waarop professionals het doen

  1. Open Toepassingen -> Accessoires -> Terminal
  2. Zoek naar het .sh-bestand

    • Gebruik de ls en cd commando's
    • ls toont de bestanden en mappen in de huidige map. Probeer het eens: typ "ls" en druk op Enter.
    • Zodra u de map ziet waar u naartoe wilt gaan, voert u uit cd, gevolgd door een spatie, gevolgd door een mapnaam
    • Als u naar een map gaat die u niet wilde, voer dan uit cd .. om één niveau te gaan omhoog
  3. Voer het .sh-bestand uit

    • Zodra je het bijvoorbeeld kunt zien script1.sh met ls voer dit uit:

      ./script.sh

Waarom doet u het op de gecompliceerde manier?

De terminal heeft een rijke verzameling krachtige hulpmiddelen die toegankelijk zijn door de opdrachten te typen. Professionals lokaliseren het .sh-bestand door te typen ls en cd. Als je eenmaal de juiste bent huidige map je kunt het script als volgt uitvoeren:

./script1.sh

of je kunt de uitvoer uitvoeren en omleiden naar een bestand:

./script1.sh > out.txt

of u kunt de uitvoer filteren voor trefwoorden (bijvoorbeeld 'appels') en vervolgens omleiden naar een bestand:

./script1.sh | grep apples > ./only-apples

Er zijn duizenden dingen die je kunt om dat bestand te doen door een paar commando's te typen.

Nog een, u kunt een bestand downloaden van het internet met één eenvoudige opdracht:

wget www.google.com/images/logos/ps_logo2.png

En open het bestand dan als volgt:

shotwell ps_logo2.png

22
2018-05-01 02:52



Ik weet het niet zeker De manier waarop professionals het doen klopt, het is meer een geval van de simpele weg de geavanceerd (voor voor controle van uitvoer) manier - Hailwood


Open een terminal en navigeer naar de map waar de .sh bestand bevindt zich. Typ vervolgens:

sh <name of file>.sh

18
2017-12-20 07:43





Op Ubuntu 13.04 worden uitvoerbare bestanden geopend in Nautilus nu standaard in gedit geopend in plaats van de gebruiker te vragen ze uit te voeren. Om het klassieke gedrag in te schakelen, moet je de voorkeuren aanpassen:

Nautilus → Wijzig menu → Voorkeuren → tabblad Gedrag → Klik in de buurt van Vragen elke keer op het keuzerondje.


15
2018-06-10 21:41



De persoon die de vraag stelde, heeft het over Ubuntu 10.10 - edwin
Dank je!!! Ik weet niet waarom ze dit zouden veranderen, niet konden achterhalen hoe iets moest worden uitgevoerd. - mpen
Dit is het juiste antwoord voor de nieuwste ubuntus. - gaRex
Hoe geraak je in 15.10 uur bij Nautilus? - Yaakov Ainspan


Ga naar de map waar de .sh bestand is door te gebruiken cd. In dit voorbeeld heb ik mijn opgeslagen sh bestand als ~/Desktop/shell_practice/test.sh

eerst doen pwd om erachter te komen waar je bent, en of het terugkeert /home/username (waar username is uw echte gebruikersnaam), kunt u uitvoeren

cd Desktop/shell/practice

Als je ergens anders lijkt te zijn, kun je het absolute pad gebruiken

cd ~/Desktop/shell/practice

of

cd $HOME/Desktop/shell/practice

of zelfs

cd /home/$USER/Desktop/shell/practice

dit zijn allemaal manieren om dezelfde plaats te beschrijven. Zodra je de locatie van je script hebt bereikt, typ je

ls

Als u het kunt zien sh bestand in de uitvoer, die u kunt gebruiken chmod om het uitvoerbaar te maken. Onthoud in mijn geval dat de bestandsnaam dat is test.sh, dus ik zou rennen

chmod u+x test.sh

Nu we ons in dezelfde map bevinden als het script, moeten we aan de shell opgeven dat we het bestand willen uitvoeren door de locatie ervan te geven ./ (de huidige map gevolgd door een padscheidingsteken, om deze van de bestandsnaam te onderscheiden). Om mijn bestand uit te voeren zou ik typen:

./test.sh

Als uw script correct is geschreven, zal het zonder fouten worden uitgevoerd ...

Hier is een levend voorbeeld: Here is live example


5
2017-12-03 11:14



Dit werkte voor mij om Netbeans op ubuntu te installeren - RuD3B0y
Wb, @ RuD3B0y, ik probeerde de antwoorden het beste te houden voor noobs, geen hightech-inhoud, als je wat bewerkingen hebt, ben je welkom. - TheExorcist


2 hoofdstappen.

  1. gebruik in de terminal gedit om een ​​script met de extensie ".sh" naar het bureaublad te schrijven en op te slaan. (maar elke teksteditor kan worden gebruikt)

  2. open Nautilus en klik met de rechtermuisknop op het bestand script.sh.

    • onder eigenschappen, aanvinkvakje "allow executing file .."

    • in het Nautilus-menu, klik op bestand, vervolgens op voorkeuren en vervolgens op gedrag

    • controleer de "uitvoerbare tekstbestanden uitvoeren wanneer ze worden geopend".

Nu, wanneer u dubbelklikt op het bestand op het bureaublad, zou het moeten worden uitgevoerd. geen behoefte aan . of ./


3
2017-10-24 14:24





In Ubuntu 16.04 is dit hoe je het in Terminal opent:

Ga naar de File Manager > Edit > Preferences > Behavior voor Executable Text Files en selecteer Ask each time.

Het probleem is dat het standaard is ingesteld op View Executable Files when they are opened.


2
2017-12-11 19:58





  1. Klik met de rechtermuisknop op de .sh bestand en maak het uitvoerbaar.

  2. Open een terminal (Ctrl+alt+T).

  3. Sleept de .sh bestand in het terminalvenster en kijk vol ontzag.


2
2018-06-10 14:09



Welkom bij Ask Ubuntu! Ik raad het aan Bewerk dit antwoord om het uit te breiden met specifieke details over hoe je de eerste stap moet doen. (Zie ook Hoe schrijf ik een goed antwoord? voor algemeen advies over welke soorten antwoorden het meest waardevol worden geacht op AskUbuntu.) - David Foerster


Er zijn een paar manieren om dit te doen.

Optie 1

  1. Ga in de terminal naar de map die het Bash-bestand gebruikt cd (verander map).

    Ex. cd Downloads

  2. Rennen bash <filename>.sh

    Dit werkt ook met .run-bestanden. Er is een voorbeeld van dit gebruik op deze webpagina over het updaten van Rhythmbox.

Optie 2

  1. Navigeer in de terminal naar de map waarin het bash-bestand zich bevindt.

  2. Rennen chmod +x <filename>.sh

  3. Open het bestand in Nautilus.


2
2018-01-06 21:33





Als u uw shell-script of ander uitvoerbaar bestand plaatst dat u in / usr / local / bin maakt, wordt het gevonden en uitgevoerd zonder een mappad op de opdrachtregel te hoeven geven of ./ aan de naam toe te voegen. Ik heb bijvoorbeeld het volgende eenvoudige 3-regel bash-script gemaakt om schijf-UUID's weer te geven:

#!/bin/bash
echo "* UUIDs must match in /etc/fstab and /boot/grub/menu.lst"
sudo blkid

Ik noemde het bestand uuid en plaatste het in / usr / local / bin. Het enige wat ik nodig heb op de opdrachtregel is:

uuid

1
2018-05-01 07:14