#unix #run-command #config #terminal #cli

app termrun

在其他打开的 Unix 终端上发送并运行命令

1 个不稳定版本

0.1.0 2021 年 6 月 6 日

118#run-command

MIT 许可证

14KB
273

termrun

在其他打开的 Unix 终端上发送并运行命令

用法

$ termrun [--newline] [--all|--pty /dev/pty/N] cmd

注意:除非以 root 用户身份设置,否则每次都需要使用 sudo。请参阅下面的权限部分

简单示例

打开终端 1

$ tty
/dev/pts/2

打开终端 2

$ termrun --newline --pty /dev/pts/2 echo hello world 

--newline 在发送的命令末尾添加 \n 以实际运行

在打开的终端 1 中显示

$ tty
/dev/pts/2
$ echo hello world 
hello world 

重新加载所有终端示例

$ vim ~/.zshrc # make config changes
$ termrun --newline --all source ~/.zshrc

安装

Cargo

如果您使用的是较新版本的 Cargo,您可以看到 cargo install 命令

$ cargo install termrun 

从源代码构建

在 git 克隆此仓库之后,您可以通过以下方式将其安装为一个 cargo 包:

$ cargo install --path path/to/repo

这将使 termrun 在任何地方可用,假设您的 cargo 包位于 $PATH

权限/安装后

termrun 在内部通过 TIOCSTI 命令标志使用 ioctl(2)。为了成功执行此操作,进程需要 root 用户权限。

在实践中,这意味着必须使用 sudo 运行 termrun。默认情况下,当您安装全局包时,sudo 不会了解它们

$ termrun
Error: EPERM: Operation not permitted

$ sudo termrun
[sudo] password for user: 
sudo: termrun: command not found

这里的一些解决方案是

  • (最简单的方法) 将 termrun 链接到一个 sudo 友好的路径:sudo ln -s ~/.cargo/bin/termrun /usr/local/bin/
  • 始终指定完整的包路径,以便 sudo 可以找到 termrunsudo ~/.cargo/bin/termrun
  • 指定 sudo 使用您的 $PATHsudo env "PATH=$PATH" termrun

许可证

MIT - 由 Milan 维护

依赖关系

~4–12MB
~146K SLoC