<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Andrei Curelaru</title>
    <description>The latest articles on DEV Community by Andrei Curelaru (@andikod).</description>
    <link>https://dev.to/andikod</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F61662%2Fa3b305eb-b7be-4867-a242-99e652592982.png</url>
      <title>DEV Community: Andrei Curelaru</title>
      <link>https://dev.to/andikod</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/andikod"/>
    <language>en</language>
    <item>
      <title>WebDev-Friendly Approach to Bash scripting, with Sh:erpa</title>
      <dc:creator>Andrei Curelaru</dc:creator>
      <pubDate>Thu, 06 Feb 2025 15:29:49 +0000</pubDate>
      <link>https://dev.to/andikod/webdev-friendly-approach-to-bash-scripting-with-sherpa-30hg</link>
      <guid>https://dev.to/andikod/webdev-friendly-approach-to-bash-scripting-with-sherpa-30hg</guid>
      <description>&lt;p&gt;&lt;strong&gt;Sh:erpa&lt;/strong&gt; brings Cargo, OhMy' and WebDev worflow to Bash scripting, using the Terminal as a browser!&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Because WebDevs should be able to do more than &lt;code&gt;npm run dev&lt;/code&gt; in a terminal, and Bash lovers don't have to be reduced to &lt;code&gt;automations&lt;/code&gt; writers, obviously because I like both sides.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Docs: &lt;a href="https://sherpa-cli.netlify.app" rel="noopener noreferrer"&gt;sherpa-cli.netlify.app&lt;/a&gt; - Discord: &lt;a href="https://discord.gg/66bQJ6cuXG" rel="noopener noreferrer"&gt;Community Discord Server&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;JavaScript, PHP, Rust and other languages can indeed generate CLI tools with shell-like approaches, nevertheless Bash actually IS a shell, handling everything as expected. What the other languages often have is better tooling around, making for a nicer developer experience.&lt;/p&gt;

&lt;p&gt;Sh:erpa's goal is to be that tool, simplifying the creation of scripts &amp;amp; libraries and helping non-devs actually installing and using them. It's just a beginning, the imagination is the limit.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Note: First time i'm talking about, so really need feedback &amp;lt;3&lt;/em&gt;   &lt;/p&gt;

&lt;h2&gt;
  
  
  Quick install
&lt;/h2&gt;

&lt;p&gt;Be sure to have Bash, curl, gawk instaled, then run the installer:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;bash &lt;span class="nt"&gt;-c&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;curl &lt;span class="nt"&gt;-sLo-&lt;/span&gt; https://sherpa-cli.netlify.app/install.sh&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It will do the following:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A. Install the CLI tools if not already installed.&lt;/li&gt;
&lt;li&gt;B. Clone the Sh:erpa repo as ~/.sherpa&lt;/li&gt;
&lt;li&gt;C. Add to the $PATH ~/.sherpa/bin&lt;/li&gt;
&lt;li&gt;D. Initiate the SherpaCustomDir as ~/sherpa&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Use a Linux Distribution, still a Linux Distro but from WSL2 or MacOS. For good measure once installed, you can run &lt;code&gt;sherpa self-update&lt;/code&gt; to re-generate the executable.&lt;/p&gt;

&lt;p&gt;See &lt;a href="https://sherpa-cli.netlify.app" rel="noopener noreferrer"&gt;the docs&lt;/a&gt; for more details.&lt;/p&gt;

&lt;h2&gt;
  
  
  The BashBox (think Crate) Anatomy
&lt;/h2&gt;

&lt;p&gt;When running: &lt;code&gt;sherpa new myScript&lt;/code&gt; the following is generated:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# /home/user/sherpa/boxes/myScript&lt;/span&gt;
&lt;span class="nb"&gt;.&lt;/span&gt;
├── data
│   └── file.yaml
├── docs
│   └── myScript.md
├── README.md
├── Sherpa.yaml
├── src
│   ├── bin.sh
│   ├── _globals.sh
│   ├── _header.sh
│   ├── _lib.sh
│   ├── _options.sh
│   └── __paths.txt
├── target
│   └── &lt;span class="nb"&gt;local&lt;/span&gt;
│       └── myScript
└── tests
    └── example_test.sh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Looks familiar? A simple &lt;code&gt;src/bin.sh&lt;/code&gt; file could look like that:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;use &lt;span class="s2"&gt;"std/fmt"&lt;/span&gt;

main&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
  &lt;span class="c"&gt;# Data&lt;/span&gt;
  &lt;span class="nv"&gt;dude&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;dataGet &lt;span class="s2"&gt;"hiker"&lt;/span&gt; &lt;span class="s2"&gt;"name"&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;

  &lt;span class="c"&gt;# Template&lt;/span&gt;
  h1 &lt;span class="s2"&gt;"Greetings adventurer :)"&lt;/span&gt;
  hr &lt;span class="s2"&gt;"+"&lt;/span&gt; &lt;span class="s2"&gt;"-"&lt;/span&gt; &lt;span class="c"&gt;# ------+------&lt;/span&gt;
  br
  p  &lt;span class="s2"&gt;"Welcome &lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;txtBlue&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="s2"&gt; &lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;dude&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="s2"&gt; &lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;x&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;!"&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;

&lt;span class="c"&gt;# Main Route. Script called with no arguments&lt;/span&gt;
&lt;span class="o"&gt;[[&lt;/span&gt; &lt;span class="s2"&gt;"$#"&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; 0 &lt;span class="o"&gt;]]&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; main&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nb"&gt;exit &lt;/span&gt;0
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Sh:erpa will merge the partials plus those sourced with &lt;code&gt;use "dir/file"&lt;/code&gt;, generate docs, remove comments and blanks, then build the script and make it available for direct invocations and eventually re-build on files save.&lt;/p&gt;

&lt;p&gt;The tool can be picked-up by WebDevs discovering Bash or experienced shell scripters taking advantage of the build, watch and organisation or distribution, while writing things their own way.&lt;/p&gt;

&lt;p&gt;The docs website will get soon a &lt;strong&gt;Ressources&lt;/strong&gt; section, with cheat-sheets, examples and other helpful things to kick off projects. &lt;/p&gt;

&lt;h3&gt;
  
  
  Local Libraries
&lt;/h3&gt;

&lt;p&gt;To create your own local library, use something as &lt;code&gt;sherpa new bob lib&lt;/code&gt;. This would scafold a library version of a BashBox in &lt;code&gt;/home/user/sherpa/lib&lt;/code&gt; with that structure:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# home/user/sherpa/lib/bob&lt;/span&gt;
&lt;span class="nb"&gt;.&lt;/span&gt;
├── data
│   └── example.yaml
├── lib.sh
├── README.md
├── Sherpa.yaml
└── tests
    └── example_test.sh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Any .sh file in &lt;code&gt;bob/&lt;/code&gt; can be imported in any BashBox with &lt;code&gt;use "bob/fileName"&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Install community-made packages
&lt;/h3&gt;

&lt;p&gt;So far, we can install remote BashBoxes or Libs from Git repositories with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;BashBox: &lt;code&gt;sherpa install -n "&amp;lt;someName&amp;gt;" -u "&amp;lt;repoUrl&amp;gt;"&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;BashLib: &lt;code&gt;sherpa install -n "&amp;lt;someName&amp;gt;" -u "&amp;lt;repoUrl&amp;gt;" -t "lib"&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;More details in the Documentation, and some available repos to play with soon listed, so stay tuned or comme say hi.&lt;/p&gt;

&lt;h2&gt;
  
  
  Features
&lt;/h2&gt;

&lt;p&gt;Check &lt;strong&gt;&lt;a href="https://sherpa-cli.netlify.app" rel="noopener noreferrer"&gt;the Sh:erpa Website&lt;/a&gt;&lt;/strong&gt; or come talk in the &lt;strong&gt;&lt;a href="https://discord.gg/66bQJ6cuXG" rel="noopener noreferrer"&gt;Discord&lt;/a&gt;&lt;/strong&gt;, but some included features are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Modular + build-step workflow&lt;/li&gt;
&lt;li&gt;Pug-like semantic formating&lt;/li&gt;
&lt;li&gt;Non verbose styling options&lt;/li&gt;
&lt;li&gt;CRUD operations on .yaml files&lt;/li&gt;
&lt;li&gt;Fetch API data and use JSON in Bash&lt;/li&gt;
&lt;li&gt;CDN-like imports for remote Libs&lt;/li&gt;
&lt;li&gt;Integrated UnitTests suite&lt;/li&gt;
&lt;li&gt;Docs generation from comments&lt;/li&gt;
&lt;li&gt;Install/Up/Remove remote BashBox or Lib&lt;/li&gt;
&lt;li&gt;Source local libs with &lt;code&gt;use "dir/file"&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Helpers for env variables or package data&lt;/li&gt;
&lt;li&gt;Helper for &lt;code&gt;Are you sure? (y/n)&lt;/code&gt; confirm&lt;/li&gt;
&lt;li&gt;...to name some of them.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Commands
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;🔗&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Command&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Description&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://sherpa-cli.netlify.app/commands/sherpa" rel="noopener noreferrer"&gt;🔗&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;sherpa&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Dashboard. List of local/remote scripts &amp;amp; libs&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://sherpa-cli.netlify.app/commands/package/new" rel="noopener noreferrer"&gt;🔗&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;sherpa new &amp;lt;myPackage&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Create a BashBox directory and script&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://sherpa-cli.netlify.app/commands/package/new" rel="noopener noreferrer"&gt;🔗&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;sherpa new &amp;lt;myPackage&amp;gt; lib&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Create a BashLib directory and library file&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://sherpa-cli.netlify.app/commands/package/rm" rel="noopener noreferrer"&gt;🔗&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;sherpa rmBox &amp;lt;boxName&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Delete a local BashBox and clean registers&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://sherpa-cli.netlify.app/commands/package/rm" rel="noopener noreferrer"&gt;🔗&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;sherpa rmLib &amp;lt;libName&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Delete a local BashLib and clean registers&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://sherpa-cli.netlify.app/commands/package/install" rel="noopener noreferrer"&gt;🔗&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;sherpa install ...&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;See docs. Installing a remote BashBox or Lib&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://sherpa-cli.netlify.app/commands/package/uninstall" rel="noopener noreferrer"&gt;🔗&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;sherpa uninstall ...&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;See docs. Uninstalling a remote BashBox or Lib&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://sherpa-cli.netlify.app/commands/package/update" rel="noopener noreferrer"&gt;🔗&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;sherpa update &amp;lt;boxName&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Update an installed BashBox&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://sherpa-cli.netlify.app/commands/package/update" rel="noopener noreferrer"&gt;🔗&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;sherpa upLib &amp;lt;libName&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Update an installed BashLib&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://sherpa-cli.netlify.app/commands/package/update" rel="noopener noreferrer"&gt;🔗&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;sherpa self-update&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Update sh:erpa itself to the lastes version&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://sherpa-cli.netlify.app/commands/package/init" rel="noopener noreferrer"&gt;🔗&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;sherpa init&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Just like 'new' but from an existing directory&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://sherpa-cli.netlify.app/commands/build/build" rel="noopener noreferrer"&gt;🔗&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;sherpa b, build&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Build the myScript.sh and optimise things&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://sherpa-cli.netlify.app/commands/build/watch" rel="noopener noreferrer"&gt;🔗&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;sherpa w, watch&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Watching for changes and build on file-save&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://sherpa-cli.netlify.app/commands/build/run" rel="noopener noreferrer"&gt;🔗&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;sherpa r, run&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Build the script and execute it&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://sherpa-cli.netlify.app/commands/package/test" rel="noopener noreferrer"&gt;🔗&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;sherpa t, test&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Run tests from the tests/ dir, with BashUnit&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://sherpa-cli.netlify.app/commands/package/test" rel="noopener noreferrer"&gt;🔗&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;sherpa self-test&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Run Sh:erpa's tests from ~/.sherpa/tests&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://sherpa-cli.netlify.app/commands/build/doc" rel="noopener noreferrer"&gt;🔗&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;sherpa d, doc&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Build .md docs from files in src/, with shDoc&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://sherpa-cli.netlify.app/commands/build/compile" rel="noopener noreferrer"&gt;🔗&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;sherpa compile&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Compile myScript.sh to a binary, using SHC&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://sherpa-cli.netlify.app/commands/general/edit" rel="noopener noreferrer"&gt;🔗&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;sherpa e, edit bin&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Open the src/bin.sh file&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://sherpa-cli.netlify.app/commands/general/edit" rel="noopener noreferrer"&gt;🔗&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;sherpa e, edit opt&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Open the src/_options.sh file&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://sherpa-cli.netlify.app/commands/general/edit" rel="noopener noreferrer"&gt;🔗&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;sherpa e, edit yaml&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Open the Sherpa.yaml file&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://sherpa-cli.netlify.app/commands/general/edit" rel="noopener noreferrer"&gt;🔗&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;sherpa e, edit basecamp&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Open the ~/.sherpa/basecamp.sh file&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://sherpa-cli.netlify.app/commands/general/aliases" rel="noopener noreferrer"&gt;🔗&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;sherpa aliases&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;List/edit the aliases created with Aliasman&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://sherpa-cli.netlify.app/commands/general/links" rel="noopener noreferrer"&gt;🔗&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;sherpa links&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;List the Symlinks in ~/.sherpa/bin. (Old command)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Since relative paths are used, some commands need to be used from a package root directoy: build, watch, run, test, doc, compile, edit.&lt;/p&gt;

&lt;h3&gt;
  
  
  Aliases
&lt;/h3&gt;

&lt;p&gt;Upon first install, some aliases are created via Aliasman. They can be visualised and eventually changed via &lt;code&gt;sherpa aliases&lt;/code&gt; command, wich is just a shortcut for &lt;code&gt;aliasman -e&lt;/code&gt; and opens the file storing them (with the default editor, like vim).&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;alias&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;replace&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;effect&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;s&lt;/td&gt;
&lt;td&gt;sherpa&lt;/td&gt;
&lt;td&gt;Shorter &lt;code&gt;s&lt;/code&gt; commands&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;sdd&lt;/td&gt;
&lt;td&gt;cd $HOME/.sherpa&lt;/td&gt;
&lt;td&gt;Jump into the Sherpa Dot Dir&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;scd&lt;/td&gt;
&lt;td&gt;cd $HOME/sherpa&lt;/td&gt;
&lt;td&gt;Jump into the Sherpa Custom Dir&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;boxes&lt;/td&gt;
&lt;td&gt;cd $HOME/sherpa/boxes&lt;/td&gt;
&lt;td&gt;Jump into the local Boxes Dir&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;After having created a BashBox with &lt;code&gt;s new &amp;lt;myScript&amp;gt;&lt;/code&gt;, you can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Jump into the directory: &lt;code&gt;boxes &amp;amp;&amp;amp; cd myScript&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Open the main file: &lt;code&gt;s e bin&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;or any other command you need from the Root.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Credits
&lt;/h3&gt;

&lt;p&gt;Special shoutout to every person who has contributed code and genius ideas to the computing world since the first second of the Unix timestamp, making todays coding possible. Plus...&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Rust Cargo: For the perfect package management workflow.&lt;/li&gt;
&lt;li&gt;OhMyBash/ZSH: For the core/custom architecture inspiration.&lt;/li&gt;
&lt;li&gt;Webinstall.dev: For making the install possible via the awesome webi tool.&lt;/li&gt;
&lt;li&gt;Integrated projects: BashUnit, shdoc, bashdoc, SHC, Pathman, Aliasman, WatchExec, ...&lt;/li&gt;
&lt;li&gt;The non-dev people around me, enduring my talks about CLI, WebDev &amp;amp; how interesting Sh:erpa can be. They all hope that the Discord will be active enough so I could spare them.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;That's all for now, more to come, it's a young project so far from perfect but working on...&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;—AndiKod—&lt;/p&gt;

&lt;p&gt;Header image credit: &lt;br&gt;
&lt;a href="https://unsplash.com/photos/gray-rock-under-gray-fog-PLzgu9O7xag" rel="noopener noreferrer"&gt;https://unsplash.com/photos/gray-rock-under-gray-fog-PLzgu9O7xag&lt;/a&gt;&lt;/p&gt;

</description>
      <category>bash</category>
      <category>webdev</category>
      <category>terminal</category>
      <category>beginners</category>
    </item>
  </channel>
</rss>
