Režim IDE / Emacs pro Shell skriptování v Bash / Sh, etc




I používat Emacs pro shell skriptů. Vím, že jsem někde četl, že je nějaký způsob, aby bylo jednodušší (doplňování kódu, automatické dokončování, odpovídající držák, syntax highligting, zkontrolujte syntaxi) psát Shell skripty na Emacs ale nebyli schopni najít. Stručně řečeno, bych chtěl obrátit Emacs do Bash IDE.


A také, existuje nějaký jiný nástroj / IDE, aby skriptování snazší na GNU / Linux Shell?
No, je tu vestavěný režim shell, který dělá zvýrazňování syntaxe, pokud to není již zapnutý, `M-x shell-script-mode`bude to pro vás.


Pokud jde o nástroj, aby skriptování jednodušší. Je tu [bash shell debugger](http://bashdb.sourceforge.net/) , takže pokud si program v bash, který by pomohl dost.


Samozřejmě je tu [eshell](http://www.emacswiki.org/emacs/CategoryEshell) , shell napsaný v Emacs Lisp, takže můžete získat všechny zvýraznění syntaxe byste očekávali od Lisp, automatické dokončování a Emacs LISP debugger.
<p>dalším způsobem je volání tlumočníka a předání cesty ke skriptu:</p><pre><code>/bin/sh /path/to/script </code></pre><p>tečka a zdroj jsou ekvivalentní. (úprava: ne, nejsou: jak keithb zdůrazňuje v komentáři k jiné odpovědi, „.“ funguje pouze v shellech souvisejících s bashem, kde „zdroj“ pracuje v shellech souvisejících s bashem i csh.) spustí skript v - místo (jako byste zkopírovali a vložili skript přímo sem). to znamená, že všechny funkce a nelokální proměnné ve skriptu zůstanou. to také znamená, že pokud skript provede cd do adresáře, budete tam stále, když bude hotovo.</p><p>ostatní způsoby spouštění skriptu jej spustí ve vlastní podsíti. proměnné ve skriptu nejsou po dokončení stále naživu. pokud skript změnil adresáře, pak to neovlivní volající prostředí.</p><p>/ cesta/do/skript a/bin/sh skript se mírně liší. skript má obvykle na začátku „shebang“, který vypadá takto:</p><pre><code>#! /bin/bash </code></pre><p>toto je cesta k interpretovi skriptu. pokud specifikuje jiného tlumočníka než vy, když jej provedete, může se chovat odlišně (nebo nemusí fungovat vůbec).</p><p>například skripty perl a ruby skripty začínají (respektive):</p><pre><code>#! /bin/perl </code></pre><p>a</p><pre><code>#! /bin/ruby </code></pre><p>pokud spustíte jeden z těchto skriptů spuštěním <code>/bin/sh script</code>, pak nebudou vůbec fungovat.</p><p>ubuntu ve skutečnosti nepoužívá bash shell, ale velmi podobný, který se nazývá pomlčka. skripty, které vyžadují bash, mohou při volání <code>/bin/sh script</code> protože jste právě zavolali bash skript pomocí pomlčkového tlumočníka.</p><p>další malý rozdíl mezi přímým vyvoláním skriptu a předáním cesty skriptu interpretovi je, že skript musí být označen jako spustitelný, aby jej mohl přímo spustit, ale ne jej spustit předáním cesty interpretovi.</p><p>další drobná variace: můžete předponou libovolného z těchto způsobů spustit skript s evalem, takže můžete mít</p><pre><code>eval sh script eval script eval . script </code></pre><p>a tak dále. ve skutečnosti to nic nezmění, ale myslel jsem, že to zahrnuji pro důkladnost.</p> <p>ve skriptech shell není důležité žádné odsazení.</p><p>mírně méně flippant odpověď:</p><ul> <li>vyberte si ve svém týmu standard, se kterým můžete pracovat, zjednodušit věci.</li> <li>použijte něco, co editor usnadňuje, takže nemusíte bojovat, abyste se drželi standardu.</li> </ul> <p><strong> pro bash: </strong> (standardní shell v ubuntu)</p><p>chcete-li vytisknout všechny proměnné prostředí, zadejte do terminálu následující příkaz:</p><pre><code>printenv </code></pre><p>další informace o tomto příkazu naleznete na stránce <a href="http://manpages.ubuntu.com/manpages/intrepid/man1/printenv.1.html"><code>printenv</code> man</a> .</p><hr><p>chcete-li zobrazit seznam obsahující "proměnné prostředí", můžete zadat následující příkaz:</p><pre><code>( set -o posix ; set ) | less </code></pre><p>toto vám ukáže <em> nejen </em> proměnné prostředí, ale také proměnné prostředí.</p><p>pro více informací o tomto tématu čtěte:</p><ul> <li> <a href="https://stackoverflow.com/q/1305237/1505348">jak vypsat proměnné deklarované ve skriptu v bashu?</a> od <a href="http://stackoverflow.com"> tak </a> a</li> <li> <a href="https://unix.stackexchange.com/q/3510/53809">jak tisknout všechny proměnné prostředí definované (ale ne nutně exportované) v bash</a> z <a href="http://unix.stackexchange.com">nixse</a> </li> <li> <a href="https://askubuntu.com/questions/26318/environment-variable-vs-shell-variable-whats-the-difference">proměnná prostředí vs. proměnná shell, jaký je rozdíl?</a> </li> </ul><hr><p><strong> pro zsh: </strong> (pokročilé prostředí)</p><p>použijte následující příkaz:</p><pre><code>( setopt posixbuiltin; set; ) | less </code></pre><p>další informace o možnostech zsh naleznete na stránce <a href="http://manpages.ubuntu.com/manpages/cosmic/en/man1/zshoptions.1.html"><code>zshoptions</code>man page</a> .</p> <p>použijte příkaz <a href="http://pkgs.org/centos-6/epel-i386/sshpass-1.05-1.el6.i686.rpm.html"><code>sshpass</code></a> k odeslání souboru </p><blockquote> <p>vytvoření prostředí -&gt; spuštění skriptu shell na vzdáleném počítači pomocí ssh -&gt; post build script</p> </blockquote><p>ukázkový příkaz:</p><pre><code>sshpass -p "password" scp path/of/file &lt;new\_server\_ip&gt;:/path/of/file </code></pre><p>toto vynechá heslo prompt for <code>scp</code> a poskytne heslo <code>scp</code>.</p> <p>napište si skript shell s názvem „n“. dej to do toho:</p><pre><code>#!/bin/sh notefile=/home/me/notefile date &gt;&gt; $notefile emacs $notefile -f end-of-buffer </code></pre><p>doporučuji to místo <code>cat &gt;&gt; notefile</code> protože:</p><ol> <li>jednoho dne budete v takovém spěchu, že místo toho budete fumblefinger &gt;&gt; a napište&gt; a odfoukněte soubor.</li> <li>emacs začíná v <em>pět setin sekundy</em> na mém mac mini. trvá desetinu sekundy, než se spustí desetiletý systém založený na celeronu, který jsem seděl. pokud nemůžete tak dlouho čekat, až začnete psát, už jste stroj a nemusíte si dělat poznámky. :)</li> </ol><p>pokud trváte na vyhýbání se textovému editoru, použijte funkci shell:</p><pre><code>n () { date &gt;&gt; /home/me/notefile; cat &gt;&gt; /home/me/notefile; } </code></pre><p>který by měl fungovat ve všech skořepinách a prohlašovat kompatibilitu bourne shell.</p> Sambu.Návodů je hromada, pro Debian budou i česky, to sem nemá smysl opisovat:[http://mis.e-mis.cz/index.php/Sd%C3%ADlen%C3%...](http://mis.e-mis.cz/index.php/Sd%C3%ADlen%C3%AD_soubor%C5%AF_pomoc%C3%AD_Samby) <h1>gnome shell 3.30.1 na ubuntu 18.10</h1><p>příkaz k nahrazení gnome-shell by byl <code>killall -3 gnome-shell</code>.</p><p>od gnome shell 3.30.1 na ubuntu 18.10 již řešení níže nefunguje a nakopne uživatele na přihlašovací obrazovku a ztratí veškerou práci.</p><h1>před prostředí gnome 3.30.1</h1><p>příkaz k nahrazení gnome-shell by byl <code>gnome-shell --replace &amp;</code>. (ampersand je přidán, aby po spuštění příkazu vrátil shell prompt; namísto stisknutí ctrl + c nebo zavření terminálu by se pracovní plocha stala nepoužitelnou a vyžadovala by úplný restart.)</p><p>z manuálové stránky uživatele <code>gnome-shell</code>:</p><pre><code>--replace replace the running window manager </code></pre> V současné době jsou v kurzu SQL dartabáze. Takže pokud se chceš uplatnit, tak MS-SQL, Interbase, ORACLE, popř. nějaké ty internetové jako např. MySQL, PostgreeSQL apod. Každá databáze má vlastní programovací jazyk pro uložené procedury, vlastní datové typy apod.Program, ve kterém budeš vyvíjet soft je opět něco jiného. Ten většinou je univerzální a umí přistupovat k jakékoliv databázi.V současné době, pokud bych začínal, tak bych se orientoval směrem .NET a C#. <p>stačí použít <a href="https://linux.die.net/man/1/chsh"><code>chsh</code></a> :</p><pre><code>chsh -s $(which zsh) </code></pre><p><strong> bez </strong> <code>sudo</code> by mělo fungovat. pokud použijete <code>sudo</code>, nezmění shell nikoliv pro vašeho pracovního uživatele, ale pro <em> root</em></p><p>nakonec <strong> se odhlaste z počítače a přihlaste se zpět </strong>.</p><p>odstraňování problémů:</p><ul> <li>máte nainstalován zsh (ii)? <code>dpkg -l zsh</code></li> <li>je vaše shell nastavena na zsh? poslední pole <a href="https://linux.die.net/man/5/passwd"><code>grep $user /etc/passwd</code></a> </li> <li>je zsh <a href="https://linux.die.net/man/5/shells">platné přihlašovací prostředí</a> ? <code>grep zsh /etc/shells</code></li> </ul> Pokud mas XP (mozna bys mohl laskave napsat jaky OS) tak zkus NETSH.EXEMP