外壳上下文帮助程序
shellctx的Python项目详细描述
壳牌CTX
用于保存、调用和执行信息的Shell上下文帮助程序 永久性词典。
动机
设置环境变量和别名(.bashrc
,.cshrc
等)
当您已建立具有已知常见操作的工作流时,非常有用。
此程序用于在需要时发现该工作流应该是什么
工作目录和命令还不完全清楚。所有外壳
实例可以访问“正在工作”上下文字典。
使用
ctx
命令是程序的入口。它的行为就像字典
它可以获取/设置/删除键和值。
$ ctx set x 123
$ ctx get x
123
$ ctx del x
它可用于存储一个长目录以供以后使用:
^{pr2}$它可以存储较长的命令供以后使用:
$ ctx set server '/usr/bin/python3 -m http.server'
$ ctx shell server
Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0:8000/) ...
它还可以保存和加载环境变量:
$ ctx set mypath $PATH
$ export PATH="`ctx get mypath`"
默认情况下,ctx
显示当前上下文字典和
排序的时间戳(最新的在顶部)条目:
$ 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
可用命令
copy
-复制密钥,更新时间戳
$ ctx copy home home2
rename
-重命名密钥,保留时间戳
$ ctx rename home2 home3
items
-提供按时间戳排序的键值显示
$ ctx items
home=/home/serwy
server=python3 -m http.server
keys
-提供密钥列表
$ ctx keys
home
server
log
-打印出上下文字典的更改日志
$ 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
-切换上下文字典或打印列表。
可以用这种方式创建新的上下文。
$ ctx switch dev
switching to "dev" from "main"
$ ctx switch
* dev
main
shell
-将键作为命令使用,值被视为
附加钥匙。命令字符串被传递到shell。
$ ctx set port 9999
$ ctx shell server port
Serving HTTP on 0.0.0.0 port 9999 (http://0.0.0.0:9999/) ...
dryshell
-打印传递给shell的命令而不执行
$ ctx dryshell server port
dryrun shell command: python3 -m http.server 9999
exec
-使用键获取可执行文件和其他参数
直接传递给可执行文件。这就像一个别名。
$ ctx exec server 9999
Serving HTTP on 0.0.0.0 port 9999 (http://0.0.0.0:9999/) ...
dryexec
-打印传递给可执行文件而不执行的参数。
$ ctx dryexec server 9999
dryrun exec command: ['python3', '-m', 'http.server', '9999']
set
-将键设置为值
$ ctx set keyname value
get
-打印给定密钥的值
$ ctx get server
python3 -m http.server
del
-删除密钥
$ ctx del keyname
setpath
-设置时将当前工作目录添加到值中
给定的密钥
$ ctx setpath keyname .bashrc
keyname=/home/serwy/.bashrc
args
-打印出程序看到的参数,并引用。这个
在调试引用错误的参数时非常有用。
$ ctx args some arguments "kept together"
sys.argv[:]
0 = '/home/serwy/.local/bin/ctx'
1 = 'args'
2 = 'some'
3 = 'arguments'
4 = 'kept together'
entry
-设置前自动递增键的最大后缀。
这对于存储快速笔记非常有用。
now
-打印iso8601时间,文件系统安全。
在文件后面加一个后缀很有用
$ ctx now
2020-01-01T193048.465660
$ cp myfile.txt ~/backup/myfile.txt_`ctx now`
update
-打开给定文件以加载key=value
数据。使用
从stdin读取连字符。
$ ctx switch env
$ env | ctx update -
$ ctx
Using context env
There are 6 entries.
2020-01-01T17:06:10.234052 _ = /usr/bin/env
2020-01-01T17:06:10.234040 PATH = /home/serwy/.local/bin:/usr/local/bin:/usr/bin
2020-01-01T17:06:10.234038 LC_ALL = en_US.UTF-8
2020-01-01T17:06:10.234028 DISPLAY = :0
2020-01-01T17:06:10.234012 HOME = /home/serwy
2020-01-01T17:06:10.233881 SHELL = /bin/bash
环境变量
CTX_NAME
可以通过设置CTX_NAME
环境变量来强制激活上下文。
当需要将终端专用于特定上下文时,这很有用。
CTX_VERBOSE
增加详细程度的标志。它是0
、1
或更多的整数值。
如果未定义,则默认为0
。
CTX_HOME
设置包含字典和日志的目录。如果未设置,
它默认为~/.ctx/
。
实施细节
上下文字典存储在~/.ctx/
.json
文件是上下文字典。
.log
文件是变更日志。
_name.txt
文件包含活动上下文的名称。
如果缺少,则默认为main
。
安装
确保ctx
脚本可以在您的系统PATH
上找到,
e、 g.~/.local/bin
。
pip3 install shellctx
或者
python3 setup.py install
如果您只想直接使用脚本,可以下载并复制
shellctx/ctx.py
作为ctx
在你的$PATH
的某个地方,并应用{
curl https://raw.githubusercontent.com/serwy/shellctx/latest/shellctx/ctx.py > ctx
chmod +x ctx
许可证
根据GNU通用公共许可证3.0版授权
另请参见
- 项目
标签: