Skip to main content

shell context helper

Project description

shellctx

Shell context helper for saving, recalling, and executing information.

Why?

Q: Shells provide alias capabilities and environment variables which can do the same thing. Why this?

A: I don't want to edit .bashrc files to add or change aliases/variables. I want state changes to be accessible from all open terminals without sourcing shell files. Environment variables and aliases by themselves are not persistent across restarts.

Usage

The ctx command is the entry into the program. It behaves like a dictionary that can get/set/delete keys and values.

$ ctx set x 123
$ ctx get x
123

$ ctx del x

By default, ctx shows the current context and the entries

$ ctx
Using context main
There are 2 entries.

2020-01-01T23:24:40.893719    server = python3 -m http.server
2020-01-01T23:07:57.792251    home = /home/serwy

It can be used for storing a directory and later changing to it:

$ cd /very/long/directory/to/type/manually
$ ctx set project `pwd`

$ cd `ctx get project`

It can be used to save and load environment variables:

$ ctx set myshell $SHELL

$ export SHELL=`ctx get myshell`

Shell execution

A key's value can be passed directly to the shell:

$ ctx set server  python3 -m http.server
$ ctx shell server
Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0:8000/) ...

Other commands

copy - copies a key, updates timestamp

$ ctx copy home home2

rename - renames a key, preserves timestamp

$ ctx rename home2 home3

items - provides a sort-by-key display of key-values

$ ctx items
home=/home/serwy
server=python3 -m http.server

keys - provides a list of keys

$ ctx keys
home
server

log - print out a log of changes to the context dictionary

$ ctx log
['2020-01-01T22:51:50.180685', 'set', 'home', '/home/serwy']
['2020-01-01T22:52:01.008981', 'copy', 'home', 'home2']
['2020-01-01T22:52:08.194826', 'rename', 'home2', 'home3']

switch - switch the context dictionary, or print a list. New contexts may be created this way.

$ ctx switch dev
switching to "dev" from "main"

$ ctx switch
* dev
  main

Environment Variables

CTX_NAME

The active context may be forced by setting the CTX_NAME environment variable.

This is useful when needing to dedicate a terminal to a particular context.

Implementation details

The context dictionaries are stored in ~/.ctx/ The .json files are the context dictionaries. The .log files are the change logs.

The _name.txt contains the name of the active context. If missing, defaults to main.

Install

Ensure that the ctx script can be found on your system PATH, e.g. ~/.local/bin.

pip3 install shellctx

or

python3 setup.py install

If you just want the script directly, you can download and copy shellctx/ctx.py as ctx somewhere on your $PATH and apply chmod +x.

License

Licensed under the GNU General Public License, Version 3.0

See also

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

shellctx-0.1.1.zip (10.2 kB view details)

Uploaded Source

File details

Details for the file shellctx-0.1.1.zip.

File metadata

  • Download URL: shellctx-0.1.1.zip
  • Upload date:
  • Size: 10.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.0.0 requests-toolbelt/0.9.1 tqdm/4.43.0 CPython/3.8.2

File hashes

Hashes for shellctx-0.1.1.zip
Algorithm Hash digest
SHA256 994368c4e3a184292611ccd8554f8a153a3e300071984f44624ec636a696acc7
MD5 3b9ba1c3dbc5403d87abd32d25445559
BLAKE2b-256 92903092a85ace2059ed371ad9f29c957f06fbf9e168f4b5214c530bfd58cbf8

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page