{"id":13514035,"url":"https://github.com/barthr/redo","last_synced_at":"2026-01-12T01:53:53.006Z","repository":{"id":37309608,"uuid":"459226030","full_name":"barthr/redo","owner":"barthr","description":"Redo is the ultimate tool to create reusable functions from your history in an interactive way","archived":false,"fork":false,"pushed_at":"2023-04-12T20:27:16.000Z","size":228,"stargazers_count":876,"open_issues_count":0,"forks_count":12,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-03-24T00:35:07.814Z","etag":null,"topics":["cli","go","golang","productivity","shell","terminal","tui"],"latest_commit_sha":null,"homepage":"","language":"Go","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/barthr.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}},"created_at":"2022-02-14T15:56:31.000Z","updated_at":"2025-03-14T16:19:08.000Z","dependencies_parsed_at":"2024-01-13T19:24:20.166Z","dependency_job_id":"7a26efcd-6700-4d13-a019-2492b3d9f618","html_url":"https://github.com/barthr/redo","commit_stats":{"total_commits":44,"total_committers":2,"mean_commits":22.0,"dds":"0.022727272727272707","last_synced_commit":"611ca1ab66fa82a0ae611e4efb2045af382c4c0c"},"previous_names":[],"tags_count":11,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/barthr%2Fredo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/barthr%2Fredo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/barthr%2Fredo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/barthr%2Fredo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/barthr","download_url":"https://codeload.github.com/barthr/redo/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246407401,"owners_count":20772126,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["cli","go","golang","productivity","shell","terminal","tui"],"created_at":"2024-08-01T05:00:44.243Z","updated_at":"2026-01-12T01:53:53.000Z","avatar_url":"https://github.com/barthr.png","language":"Go","funding_links":[],"categories":["Go"],"sub_categories":[],"readme":"# Redo\n\n![Release](https://github.com/barthr/redo/actions/workflows/release.yml/badge.svg)\n![CI](https://github.com/barthr/redo/actions/workflows/golangci-lint.yml/badge.svg)\n![Test](https://github.com/barthr/redo/actions/workflows/test.yml/badge.svg)\n\nRedo is a command line application to easily create reusable functions in your own shell. Think of redo like an\ninteractive way combine multiple commands from your shell history in a single command. This can be handy for quickly\nre-doing multiple commands for example deleting and starting a new docker container.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://github.com/barthr/redo/blob/master/docs/demo.gif\" width=\"90%\" height=\"90%\" /\u003e\n\u003c/p\u003e\n\n* [Features](#features)\n* [Installation](#installation)\n    * [Prebuilt binaries](#prebuilt-binaries)\n    * [Install from source](#install-from-source)\n* [Quickstart](#quickstart)\n* [Configuration](#configuration)\n* [Shortcuts](#shortcuts)\n* [Roadmap](#roadmap)\n* [Acknowledgements](#acknowledgements)\n* [License](#license)\n\n## Features\n\n- Easily create reusable functions from shell history\n- Shell agnostic, can be used with ZSH, Bash etc.\n- Aliases are stored in a single file which can be put in version control\n\n## Installation\n\n### Prebuilt binaries\n\nUsing the provided installation script\n\n```bash\nbash \u003c(curl -s https://raw.githubusercontent.com/barthr/redo/master/install.sh)\n```\n\nDownload one of the prebuilt binaries from: https://github.com/barthr/redo/releases and run the following command\n\n```bash\n\ntar -xf \u003cdownloaded_archive\u003e redo \u0026\u0026 sudo mv redo /usr/local/bin\n```\n\n### Install from source\n\n```bash\ngo install github.com/barthr/redo@latest\n```\n\n*After downloading add the following line to your* `~/.bashrc` or `~/.zshrc`\n\n```bash\nsource \"$(redo alias-file)\"\n```\n\nThis will make sure that the aliases from redo are loaded on every shell session.\n\n## Quickstart\n\nredo contains a couple of commands, which can be used to create reusable functions.\n\n1. `redo` - Opens up the interactive window to create a new function\n2. `redo alias-file` - Prints the path to the functions file\n3. `redo edit` - Opens the functions file in your configured editor\n4. `redo help` - Prints a help message which includes information about all the commands\n\n## Configuration\n\nRedo can mostly run without requiring any specific configuration, however it is possible to customize this configuration\nby setting the following environment variables:\n\n`REDO_ALIAS_PATH`: The path where the alias file of redo is stored (defaults to aliases file in user config dir)\n\n`REDO_CONFIG_PATH`: The config path for redo (defaults to user config dir)\n\n`REDO_HISTORY_PATH`: The location of the history file which redo uses to source commands (*defaults to HISTFILE **if it\nis\nexported**)\n\n`REDO_EDITOR`: The editor you want to use when running commands like `redo edit` (defaults to EDITOR **if it is exported\n**)\n\n## Shortcuts\n\nRedo can be bind to a shortcut, so you can easily summon it without calling it directly.\n\n**zsh CTRL+e summons redo**:\nPut the following line in your zshrc file\n\n```zsh\nbindkey -s '^e' 'redo^M'\n```\n\n**bash CTRL+e summons redo**:\nPut the following line in your bashrc file or bash_profile\n\n```bash\nbind '\"\\C-e\":\"redo\\n\"'\n```\n\n## Roadmap\n\n- ~Reordering of selected tasks~\n- Easy listing/deletion of functions\n- Inline editing of shell functions\n- Prebuilt binaries published as .deb .rpm .yum etc.\n\n## Acknowledgements\n\n- [Bubbletea TUI framework](https://github.com/charmbracelet/bubbletea)\n- [Sh](https://github.com/mvdan/sh)\n\n## License\n\n[MIT](https://choosealicense.com/licenses/mit/)\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbarthr%2Fredo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbarthr%2Fredo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbarthr%2Fredo/lists"}