{"id":18925624,"url":"https://github.com/jm1/shelp","last_synced_at":"2026-02-13T08:03:13.901Z","repository":{"id":69767747,"uuid":"379887947","full_name":"JM1/shelp","owner":"JM1","description":"shell help: Take and view notes of your (and my) shell activity","archived":false,"fork":false,"pushed_at":"2025-02-24T09:16:33.000Z","size":539,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-22T22:03:02.321Z","etag":null,"topics":["linux","notes","shell"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"cc-by-sa-4.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/JM1.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","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}},"created_at":"2021-06-24T10:32:22.000Z","updated_at":"2025-02-24T09:16:37.000Z","dependencies_parsed_at":"2024-01-09T12:26:47.110Z","dependency_job_id":"31e65e51-73cf-4e7a-b063-f3c3091a7563","html_url":"https://github.com/JM1/shelp","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/JM1/shelp","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JM1%2Fshelp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JM1%2Fshelp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JM1%2Fshelp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JM1%2Fshelp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/JM1","download_url":"https://codeload.github.com/JM1/shelp/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JM1%2Fshelp/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265921786,"owners_count":23849679,"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":["linux","notes","shell"],"created_at":"2024-11-08T11:12:38.618Z","updated_at":"2026-02-13T08:03:08.842Z","avatar_url":"https://github.com/JM1.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"[//]: # ( vim:set syntax=markdown fileformat=unix shiftwidth=4 softtabstop=4 expandtab textwidth=120: )\n[//]: # ( kate: syntax markdown; end-of-line unix; space-indent on; indent-width 4; word-wrap-column 120; )\n[//]: # ( kate: word-wrap on; remove-trailing-spaces modified; )\n\n# shell help: Take and view notes of your (and my) shell activity\n\nNo one likes writing documentation, not developers, nor operators. A simple approach is to pin down step by step all\ncommands you ran in a shell and add comments sporadically. It will help to remember what you did and hopefully why you\ndid so. It might also be useful as a blueprint for automation e.g. with Ansible. Your older self and your fellows will\nappreciate it.\n\nThis repository has instructions on how to install [Debian](debian_setup.sh),  [Gentoo Prefix](gentoo_prefix.sh) and\n[OpenShift](openshift.md), host [Nextcloud](nextcloud_setup.sh) and [Gitea](gitea.sh), configure [Apache2](\napache_setup.sh) and [Dovecot](dovecot.sh), create [SSL certificates](openssl_ca_guide.sh), use a [YubiKey](yubikey.sh)\nwith [OpenVPN](openvpn.sh), benchmark using/with [FIO](fio.sh), define [libvirt domains](libvirt.sh), configure [Open\nvSwitch bridges and OpenFlow tables](ovs.md), use [DPDK](dpdk.md) and much more. The guide below shows how to access\nthese notes from a cli and how to add your own.\n\n⚠️ **WARNING:** This repository resembles more of a personal sketchpad than a collection of complete guides. Most\ndocuments belong to one of two categories, either annotated lists of commands and their arguments, e.g. for\n[LVM](lvm.sh) or [StorCLI](storcli.sh), or step-by-step guides that walk you through all instructions e.g. to set up\n[Nextcloud](nextcloud_setup.sh) or [Gitea](gitea.sh). Most guides miss any explaination of why things are done but\noften list references that point to further documentation. Consider any content as work-in-progress, i.e. parts that I\nuse often are continuously refactored and updated while others might be outdated for years. ⚠️\n\n⚠️ **WARNING:** Most guides and notes in this repository presume Debian 8 (Jessie), Debian 8 (Stretch) or\nDebian 10 (Buster) as operating system and Bash as shell if not stated differently. ⚠️\n\n## Requirements and Installation\n\nGet or upgrade to Debian 10 (Buster). Open Bash and enter\n\n```sh\n# Install required packages\nsudo apt install fzf git tre-agrep\n\n# Clone repository\nmkdir -p ~/.local/share/\ngit -C ~/.local/share/ clone https://github.com/JM1/shelp.git\n\n# Configure Bash\ncat \u003c\u003c 'EOF' \u003e\u003e ~/.bashrc\n# Enable fzf key bindings like Ctrl+R\n. /usr/share/doc/fzf/examples/key-bindings.bash\n\n# Enable shelp key binding (Ctrl+H)\n_shelp_fzf() {\n    FZF_DEFAULT_COMMAND=\"grep -l '*' *\" fzf \\\n        --bind \"change:reload:tre-agrep -1 -i -l {q} * || true\" \\\n        --bind \"pgup:preview-page-up,pgdn:preview-page-down\" \\\n        --ansi --layout=reverse-list --border --height 100% --phony --query '' \\\n        --preview '[ -n {} ] \u0026\u0026 less {} '\n}\n\n_shelp() (\n    cd \"$HOME/.local/share/shelp/\"\n    FILE=\"$(_shelp_fzf)\"\n    [ -n \"$FILE\" ] \u0026\u0026 view \"$FILE\"\n)\n\nbind -x '\"\\C-h\": \"_shelp\"'\n\nEOF\n\n# (Re)run Bash to apply changes\nbash\n```\n\n## Tutorial\n\nOpen a shell and enter any commands. Enter `history` to list previous commands or press \u003ckbd\u003eCtrl\u003c/kbd\u003e + \u003ckbd\u003eR\u003c/kbd\u003e\nto fuzzy-find them. Write down a typescript of your shell activity, add comments if appropriate and store everything in\n`~/.local/share/shelp/`. [Keep it simple, stupid](https://en.wikipedia.org/wiki/KISS_principle). Use plain text,\n[Markdown](https://commonmark.org/) or whatever suits your use case best. Use [git](https://git-scm.com/book/) to track\nchanges. Later press \u003ckbd\u003eCtrl\u003c/kbd\u003e + \u003ckbd\u003eH\u003c/kbd\u003e to fuzzy-find your notes and all examples provided in this\nrepository.\n\n![Screenshot](screenshot.png)\n\n## License\n\nCreative Commons Attribution Share Alike 4.0 International\n\nSee [LICENSE.txt](LICENSE.txt) to see the full text.\n\n## Author\n\nJakob Meng\n@jm1 ([github](https://github.com/jm1), [galaxy](https://galaxy.ansible.com/jm1), [web](http://www.jakobmeng.de))\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjm1%2Fshelp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjm1%2Fshelp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjm1%2Fshelp/lists"}