{"id":28656055,"url":"https://github.com/dhth/tash","last_synced_at":"2026-03-13T04:33:46.680Z","repository":{"id":276337204,"uuid":"928974214","full_name":"dhth/tash","owner":"dhth","description":"s[tash] content that you can access later","archived":false,"fork":false,"pushed_at":"2026-03-01T23:39:44.000Z","size":138,"stargazers_count":4,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-03-02T01:57:00.473Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://tools.dhruvs.space/tash","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dhth.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-02-07T15:24:16.000Z","updated_at":"2026-03-01T23:39:47.000Z","dependencies_parsed_at":null,"dependency_job_id":"e6cb8c41-7c34-43db-82eb-612a04eda0ed","html_url":"https://github.com/dhth/tash","commit_stats":null,"previous_names":["dhth/tash"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/dhth/tash","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dhth%2Ftash","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dhth%2Ftash/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dhth%2Ftash/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dhth%2Ftash/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dhth","download_url":"https://codeload.github.com/dhth/tash/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dhth%2Ftash/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30458001,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-13T03:55:51.346Z","status":"ssl_error","status_checked_at":"2026-03-13T03:55:33.055Z","response_time":60,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-06-13T08:10:11.976Z","updated_at":"2026-03-13T04:33:46.658Z","avatar_url":"https://github.com/dhth.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003ch1 align=\"center\"\u003etash\u003c/h1\u003e\n  \u003cp align=\"center\"\u003e\n    \u003ca href=\"https://github.com/dhth/tash/actions/workflows/main.yml\"\u003e\u003cimg alt=\"GitHub release\" src=\"https://img.shields.io/github/actions/workflow/status/dhth/tash/main.yml?style=flat-square\"\u003e\u003c/a\u003e\n    \u003ca href=\"https://crates.io/crates/tash\"\u003e\u003cimg alt=\"GitHub release\" src=\"https://img.shields.io/crates/v/tash?style=flat-square\"\u003e\u003c/a\u003e\n    \u003ca href=\"https://github.com/dhth/tash/releases/latest\"\u003e\u003cimg alt=\"Latest release\" src=\"https://img.shields.io/github/release/dhth/tash.svg?style=flat-square\"\u003e\u003c/a\u003e\n    \u003ca href=\"https://github.com/dhth/tash/releases\"\u003e\u003cimg alt=\"Commits since latest release\" src=\"https://img.shields.io/github/commits-since/dhth/tash/latest?style=flat-square\"\u003e\u003c/a\u003e\n  \u003c/p\u003e\n\u003c/p\u003e\n\n`s[tash]` content that you can access later.\n\n🤔 Motivation\n---\n\nEvery now and then, I find myself accessing some piece of string content (a\n`curl` request, a shell command, or literally anything else) several times over\na period of time. While modern clipboard managers help in recalling previously\ncopied data, they require some searching. I needed a command line tool that\nwould make saving and querying string content quick and easy. So, I wrote\n`tash`.\n\n💾 Installation\n---\n\n**homebrew**:\n\n```sh\nbrew install dhth/tap/tash\n```\n\n**cargo**:\n\n```sh\ncargo install tash\n```\n\nOr get the binaries directly from a Github [release][1]. Read more about\nverifying the authenticity of released artifacts\n[here](#-verifying-release-artifacts).\n\n⚡️ Usage\n---\n\n### Help\n\n```text\nUsage: tash \u003cCOMMAND\u003e\n\nCommands:\n  delete  Delete one or more content items\n  empty   Empty entire stash\n  ls      List stashed content keys\n  get     Get content from stash\n  push    Stash content\n  help    Print this message or the help of the given subcommand(s)\n```\n\n### Basic Usage\n\n```bash\n# push content to tash from stdin\necho -n \"some content\" | tash push key\n\ncat \u003c\u003c EOF | tash push key\nMulti line\ncontent goes\nhere.\nEOF\n\n# push content to tash from a file\ntash push key -f path/to/file.txt\n\n# push content from a flag\ntash push key -d \"content goes here\"\n\n# push content while preventing overwrites\ntash push key -d \"content goes here\" -p\n\n# push content to tash from system clipboard\ntash push key -c\n\n# get content from tash\ntash get key\n\n# get content from tash and copy to system clipboard\ntash get key -c\n\n# get content from tash and only copy to system clipboard\ntash get key -c --no-output\n\n# get content from tash and remove it from its store\ntash get key --pop\n\n# list content saved to tash\ntash ls\n\n# delete content items\ntash delete key1 key2 key3\n\n# empty tash's store\ntash empty\n```\n\n### Fetch content using fzf\n\nThe process of fetching content can be made easier by making use of a fuzzy\nfinder like [fzf](https://github.com/junegunn/fzf).\n\n```bash\n#!/usr/bin/env bash\n\nselected_key=$(\n    tash ls |\n        fzf \\\n            --reverse \\\n            --preview 'tash get {}' \\\n            --preview-window=right:70% \\\n            --preview-border=vertical \\\n            --border=none\n)\n\nif [ -z \"$selected_key\" ]; then\n    exit 0\nfi\n\ntash get \"${selected_key}\" -nc\n```\n\n### Delete multiple entries using fzf\n\nSame for deletion for content.\n\n```bash\n#!/usr/bin/env bash\n\nselected_keys=$(\n    tash ls |\n        fzf \\\n            --multi \\\n            --reverse \\\n            --preview 'tash get {}' \\\n            --preview-window=right:70% \\\n            --preview-border=vertical \\\n            --border=none |\n        xargs\n)\n\nif [ -z \"$selected_keys\" ]; then\n    exit 0\nfi\n\ntash delete ${selected_keys}\n```\n\n🔐 Verifying release artifacts\n---\n\nIn case you get the `tash` binary directly from a [release][1], you may want\nto verify its authenticity. Checksums are applied to all released artifacts, and\nthe resulting checksum file is attested using [Github Attestations][2].\n\nSteps to verify (replace `A.B.C` in the commands below with the version you\nwant):\n\n1. Download the sha256 checksum file for your platform from the release:\n\n   ```shell\n   curl -sSLO https://github.com/dhth/tash/releases/download/vA.B.C/tash-x86_64-unknown-linux-gnu.tar.xz.sha256\n   ```\n\n2. Verify the integrity of the checksum file using [gh][3].\n\n   ```shell\n   gh attestation verify tash-x86_64-unknown-linux-gnu.tar.xz.sha256 --repo dhth/tash\n   ```\n\n3. Download the compressed archive you want, and validate its checksum:\n\n   ```shell\n   curl -sSLO https://github.com/dhth/tash/releases/download/vA.B.C/tash-x86_64-unknown-linux-gnu.tar.xz\n   sha256sum --ignore-missing -c tash-x86_64-unknown-linux-gnu.tar.xz.sha256\n   ```\n\n3. If checksum validation goes through, uncompress the archive:\n\n   ```shell\n   tar -xzf tash-x86_64-unknown-linux-gnu.tar.xz\n   cd tash-x86_64-unknown-linux-gnu\n   ./tash -h\n   # profit!\n   ```\n\n[1]: https://github.com/dhth/tash/releases\n[2]: https://github.blog/news-insights/product-news/introducing-artifact-attestations-now-in-public-beta/\n[3]: https://github.com/cli/cli\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdhth%2Ftash","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdhth%2Ftash","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdhth%2Ftash/lists"}