Vraag Sluit de terminal nadat de dd-opdracht is voltooid


eerst sorry voor slecht Engels. Ten tweede maak ik een hulpmiddel voor klonen. Ik gebruik het commando

sudo mate-terminal --geometry=50x10 -x sh -c "sudo dd if=/dev/sda of=/dev/sdb status=progress; bash"

Ik gebruik deze opdracht zodat wanneer de gebruiker op de kloonknuppelkoppeling klikt met de bovenstaande opdracht, de gebruiker de voortgang van de kloning kan zien, die een soort log van resterende tijd en overdracht per seconde op een nieuwe terminal zoals in deze weergeeft beeld.

Het probleem is nu dat ik een touchscreen-apparaat gebruik om deze gereedschappen te maken en nadat het klonen voltooid is, zal de terminal niet automatisch afsluiten. De gebruiker moet op de "x" -knop klikken om de terminal te sluiten. Dit zou een probleem zijn omdat ik een 3,5 "touchscreen-display gebruik en het kan behoorlijk moeilijk zijn om op de" x "-knop op een klein touchscreen te klikken. kloonproces is voltooid, wordt dit op de terminal weergegeven

Ik heb het al geprobeerd

exec ./clone.sh

en

./clone.sh && exit

en

./clone; exit

Maar allemaal falen.

Ter informatie, de opdracht is gekoppeld aan een knop, dus mijn opdracht is als volgt

(action)./clone.sh && exit(/action)

Kan iemand mij helpen ?


2
2017-10-06 07:38


oorsprong


voeg 'exit' toe aan het einde van de hoofdroutine code clone.sh en voer uit: ./clone.sh && exit. werkt het nu? - Neni
@Neni bedoelt u het toevoegen van exit in het script clone.sh zelf? Als dat zo is, heb ik het gewoon geprobeerd maar geen geluk - Najmi
En bedankt @Zanna voor het bewerken van de vraag, zodat deze gemakkelijker te lezen is :) - Najmi
Heel graag gedaan. Ik heb net de tweede foto gevonden. Ik vraag me af of je twee keer moet stoppen omdat je een nieuwe shell hebt gemaakt ... en ook deze vraag hebt gezien askubuntu.com/questions/611648/... ? - Zanna
@Zanna er is eigenlijk maar één shell die het voortgangslog is omdat de tools in GUI zijn gemaakt op basis van gtkdialog-0.8.3. Ja, ik ben die vraag tegengekomen. Ik heb alle antwoorden geprobeerd, maar nog steeds geen geluk. - Najmi


antwoorden:


De reden dat de terminal open blijft, is dat je het vertelt om de dd commando en start dan een nieuwe bash-instantie. Als u de bash vanaf het einde van het commando zal de spawned terminal verdwijnen zoals je verwacht.

Er is ook geen reden om het te gebruiken dd met sudo als je de terminal al gebruikt sudo. Er hoeft slechts een van de twee te worden gebruikt sudo, welke is aan jou. Je hebt ook de sh -c aangezien u slechts één enkele opdracht wilt uitvoeren. Gebruik gewoon de -x direct.

Dus, alles bij elkaar genomen, wat u zoekt is:

sudo mate-terminal --geometry=50x10 -x dd if=/dev/sda of=/dev/sdb status=progress

BELANGRIJK: Voor iedereen die deze vraag en antwoord leest, is deze opdracht gevaarlijk, dus voer deze niet uit op uw computer. Het zal de inhoud van uw overschrijven /dev/sdb als je er een hebt. Het is wat het OP wil doen, maar je moet het niet uitvoeren tenzij je weet wat je doet.


3
2017-10-06 12:04



Oh mijn god, het werkte. Bedankt, dank je wel @terdon. Ik ben eigenlijk nog steeds in het leerproces in dit ubuntu-universum dus ik dank je goed mijnheer :) - Najmi
Oh en complimenten voor de disclaimer. Het is inderdaad een gevaarlijk bevel - Najmi