{"slug": "sd", "name": "sd", "category": "terminal", "category_name": "Terminal and shell", "description": "", "recommenders": 3, "commenters": 3, "warners": 0, "score": 2.597, "rising": -0.98, "first": "2026-02-07", "latest": "2026-04-16", "why": "Can definitely recommend if you're looking for something a bit more fancy.", "why_is_quote": true, "has_verdict": false, "sentiment": {"recommend": 3, "neutral": 0, "compare": 0, "warn": 0}, "spark": [0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0], "listed": true, "loved": [], "caveat": "", "short_quote": "Can definitely recommend if you're looking for something a bit more fancy.", "kind": "", "icon": false, "domain": null, "github_repo": "github.com/chmln/sd", "official_url": "https://github.com/chmln/sd", "pricing": "", "aliases": ["sd"], "verdict": null, "praise": [{"label": "", "summary": "", "quotes": [{"id": 760032800, "item_id": 47502050, "url": "https://news.ycombinator.com/item?id=47502050", "by": "scns", "date": "2026-03-24", "version": null, "stance": "recommend", "quote": "sd exists", "excerpt": "sd exists, dunno but awk. https://github.com/chmln/sd", "context": "", "use_case": "find and replace CLI", "switched_from": "", "story": "Ripgrep is faster than {grep, ag, Git grep, ucg, pt, sift}"}, {"id": 756173360, "item_id": 47260835, "url": "https://news.ycombinator.com/item?id=47260835", "by": "jghub", "date": "2026-03-05", "version": null, "stance": "recommend", "quote": "I believe the difference in behaviour is notable and makes a difference", "excerpt": "The difference in usability is most apparent during context switching and burst activity. The Problem with Heuristics: Most tools use simple counters and multipliers. If you spend 10 minutes performing a repetitive task in a temporary directory (e.g., a \"one-off\" burst of cd actions into a build folder), a heuristic model can \"overlearn\" that path. This often clobbers your long-term habits, making your primary projec", "context": "", "use_case": "directory jumping", "switched_from": "", "story": null}, {"id": 750767200, "item_id": 46922950, "url": "https://news.ycombinator.com/item?id=46922950", "by": "caeruleus", "date": "2026-02-07", "version": null, "stance": "recommend", "quote": "Can definitely recommend if you're looking for something a bit more fancy.", "excerpt": "Prefixing commands solves the namespace problem and discoverability (at least partly). I use a slightly more sophisticated method, which helps me remember which custom utilities are available and how to use them: sd [1], a light wrapper written for zsh that, in addition to namespaces, provides autocompletion, custom help texts + some other QoL enhancements. Can definitely recommend if you're looking for something a b", "context": "zsh user", "use_case": "organizing custom shell utilities", "switched_from": "", "story": "Start all of your commands with a comma"}]}], "caveats": [], "who": [{"by": "caeruleus", "context": "zsh user", "url": "https://news.ycombinator.com/item?id=46922950", "date": "2026-02-07"}], "tags": [], "use_cases": ["find and replace cli", "directory jumping", "organizing custom shell utilities"], "compared": [], "makers": [{"id": 756294112, "item_id": 47268382, "url": "https://news.ycombinator.com/item?id=47268382", "by": "jghub", "date": "2026-03-05", "version": null, "stance": "recommend", "quote": "sd acts as a cache for these nesting depths so I don't have to recall them.", "excerpt": "To clarify the matching: sd uses AWK-based regex matching against the full logged pathname ($0 ~ pattern). It does not use \"fuzzy\" sub-sequence matching (pooling 't', 'a', and 's' from different path segments). For .../client-a/src, you wouldn't use 'sd tas', but rather 'sd t-a' or 'sd a/src'.| 'sd \"cl.*src\"' would also be a valid jump. Regarding CTRL-R: * Filtering Noise: CTRL-R searches raw, chronological history. ", "context": "", "use_case": "jump to frequently used directories", "switched_from": "", "story": null}], "threads": [{"url": "https://news.ycombinator.com/item?id=47245485", "title": "item 47245485", "mentions": 2}, {"url": "https://news.ycombinator.com/item?id=47786164", "title": "I made a terminal pager", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=47499245", "title": "Ripgrep is faster than {grep, ag, Git grep, ucg, pt, sift}", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=46890814", "title": "Start all of your commands with a comma", "mentions": 1}], "sentiment_by_month": {"2025-11": {}, "2025-12": {}, "2026-01": {}, "2026-02": {"recommend": 1}, "2026-03": {"recommend": 1}, "2026-04": {"recommend": 1}, "2026-05": {}, "2026-06": {}, "2026-07": {}, "2026-08": {}, "2026-09": {}, "2026-10": {}}, "versions": [], "version_unnamed": 0, "family_ref": null, "runs_on": null, "lines": [], "quotes": [{"id": 764768642, "item_id": 47798040, "url": "https://news.ycombinator.com/item?id=47798040", "by": "ilyagr", "date": "2026-04-16", "version": null, "stance": "recommend", "quote": "", "excerpt": "https://github.com/noborus/ov is another pager, in addition to `moor` that somebody else shared.", "context": "", "use_case": "", "switched_from": "", "story": "I made a terminal pager"}, {"id": 760032800, "item_id": 47502050, "url": "https://news.ycombinator.com/item?id=47502050", "by": "scns", "date": "2026-03-24", "version": null, "stance": "recommend", "quote": "sd exists", "excerpt": "sd exists, dunno but awk. https://github.com/chmln/sd", "context": "", "use_case": "find and replace CLI", "switched_from": "", "story": "Ripgrep is faster than {grep, ag, Git grep, ucg, pt, sift}"}, {"id": 756173360, "item_id": 47260835, "url": "https://news.ycombinator.com/item?id=47260835", "by": "jghub", "date": "2026-03-05", "version": null, "stance": "recommend", "quote": "I believe the difference in behaviour is notable and makes a difference", "excerpt": "The difference in usability is most apparent during context switching and burst activity. The Problem with Heuristics: Most tools use simple counters and multipliers. If you spend 10 minutes performing a repetitive task in a temporary directory (e.g., a \"one-off\" burst of cd actions into a build folder), a heuristic model can \"overlearn\" that path. This often clobbers your long-term habits, making your primary projec", "context": "", "use_case": "directory jumping", "switched_from": "", "story": null}, {"id": 750767200, "item_id": 46922950, "url": "https://news.ycombinator.com/item?id=46922950", "by": "caeruleus", "date": "2026-02-07", "version": null, "stance": "recommend", "quote": "Can definitely recommend if you're looking for something a bit more fancy.", "excerpt": "Prefixing commands solves the namespace problem and discoverability (at least partly). I use a slightly more sophisticated method, which helps me remember which custom utilities are available and how to use them: sd [1], a light wrapper written for zsh that, in addition to namespaces, provides autocompletion, custom help texts + some other QoL enhancements. Can definitely recommend if you're looking for something a b", "context": "zsh user", "use_case": "organizing custom shell utilities", "switched_from": "", "story": "Start all of your commands with a comma"}]}