外壳上下文帮助程序

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-设置前自动递增键的最大后缀。 这对于存储快速笔记非常有用。

^{pr21}$

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

增加详细程度的标志。它是01或更多的整数值。 如果未定义,则默认为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的某个地方,并应用{}。 直接链接是:https://raw.githubusercontent.com/serwy/shellctx/latest/shellctx/ctx.py

curl  https://raw.githubusercontent.com/serwy/shellctx/latest/shellctx/ctx.py > ctx
chmod +x ctx

许可证

根据GNU通用公共许可证3.0版授权

另请参见

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何在SpringMVC中使用单个视图执行所有CRUD操作?   java如何使用DBFlow进行迁移?   导入java。锡兰的朗   安卓在实现Lint自定义检测器时如何调试java源代码?   列表的java字符串格式   java程序基于WebFlux的SSE客户端,具有重新连接功能   java Spring批处理作业读取器持续运行,尽管计划时间为5分钟   java Android Studio在我的代码中没有显示任何错误,但gradle显示了。试一试   java移动JTextArea滚动到插入符号   java选项菜单不工作   爪哇苹果。awt。mac 10.7视网膜上的奇怪行为   java将参数从webmethod(在web服务中)传递到soap处理程序   java如何在Android中使用API调用填充AutoCompleteTextView?   如何使用Selenium和Java从Chrome获取控制台日志   java流收集器。toMap调用toString而不是value   如何在PHP和Java/Play框架应用程序之间共享一个Apache实例?   java Spring引导文件下载zip   Mockito mocked集合中的java类型安全问题