我一直在我创建的虚拟环境中运行 python 脚本pipenv shell,它运行良好。
我总是从 bash 脚本运行该进程,该脚本将目录更改为包含 python 脚本的文件夹,使用 激活 virtualenv pipenv shell,然后运行 python 脚本,然后退出 virtualenv。
但是,我一定在终端中输入了错误的内容并破坏了某些内容,现在当我在虚拟环境中运行脚本时,我得到了这个:
Launching subshell in virtual environment...
Traceback (most recent call last):
File "/home/manuel/.local/bin/pipenv", line 8, in <module>
sys.exit(cli())
File "/home/manuel/.local/lib/python3.8/site-packages/pipenv/vendor/click/core.py", line 829, in __call__
return self.main(*args, **kwargs)
File "/home/manuel/.local/lib/python3.8/site-packages/pipenv/vendor/click/core.py", line 782, in main
rv = self.invoke(ctx)
File "/home/manuel/.local/lib/python3.8/site-packages/pipenv/vendor/click/core.py", line 1259, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File "/home/manuel/.local/lib/python3.8/site-packages/pipenv/vendor/click/core.py", line 1066, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "/home/manuel/.local/lib/python3.8/site-packages/pipenv/vendor/click/core.py", line 610, in invoke
return callback(*args, …Run Code Online (Sandbox Code Playgroud) 我在 Windows 10 上使用 Git Bash。我想导入一个 SQL 文件以在我的 PostGres 12 本地数据库中运行。我尝试了下面的
$ PGPASSWORD=$DB_PASSWORD psql -U${DB_USER} $DB_NAME < scripts/my-script.sql
stdin is not a tty
Run Code Online (Sandbox Code Playgroud)
当我查看数据库时,脚本尚未运行,这使我相信错误消息告诉了我原因,但我不确定它的含义或如何修复它。
所以我有一个tty(让我们说/ dev/tty5)并且想要知道它当前是否是进程组或会话的控制tty,或者它是否当前是无主的.POSIX有两个API函数,它们在这里建议:tcgetpgrp()和tcgetsid(),这两个函数只有在调用者将tty作为控制tty的情况下才有效 - 在这种情况下,它们使得它们几乎无用(实际上我不是t看到tcgetsid()的重点.
任何人都有一个建议,我如何能够以一种理智的方式从C中检测终端当前是否是一个进程的控制终端?我只关心Linux,所以如果需要特定于Linux的API,那对我来说没问题.
我正在开发一个Web shell客户端,标签功能"代码完成",并有一个问题.任何人都知道打开本地tty持久连接的方法,我可以用一个会话执行多个命令,我不喜欢执行所有时间Runtime.getRuntime().exec("command"); 有什么建议吗?问候
我试图使用bash从ttyS0读取并需要设置以下但我努力想出来
databits = 7
stopbits = 2
parity = 0
flow control = 0
Run Code Online (Sandbox Code Playgroud)
继承我的代码:
#!/bin/bash
# Port setting
stty -F /dev/ttyS0 raw speed 1200
# Loop
while [ 1 ];
do
echo 'LOADING...'
READ=`dd if=/dev/ttyS0 count=1`
echo $READ
echo '[PRESS Ctrl + C TO EXIT]'
done
Run Code Online (Sandbox Code Playgroud)
该脚本正在运行,但我需要设置参数.有什么建议?谢谢:)
根据\b我的理解,控制字符不应该删除前一个字符(这也将是\b一个del字符),所以这样的东西有效:
>>> print 'pototo\b\b\ba'
potato
Run Code Online (Sandbox Code Playgroud)
是否有一个向前移动的角色,就像一个非覆盖空间?预期的用法就像(我称之为这个角色\x):
>>> print 'pototo\r\x\x\xa'
potato
Run Code Online (Sandbox Code Playgroud)
显然,在打字机上,普通空间可以做到这一点.但是在一个终端上,一个空间会擦掉下面的字母.
我的用例是一个pexpect匹配的场景,我想追溯回去并用颜色装饰字符流输出的某些部分,我想知道是否需要在内存中保留整个当前行的缓存或不.
XTerm控制序列指定以下键序列:
CSI ? 1 h ? Application Cursor Keys (DECCKM)
CSI ? 1 l ? Normal Cursor Mode (DECOM)
CSI ? 66 h ? Application keypad (DECNKM)
CSI ? 66 l ? Numeric keypad (DECNKM)
Run Code Online (Sandbox Code Playgroud)
和TERMINFO源格式有如下条目:
Variable: keypad_xmit
Capname: smkx
Termcap: ks
Description: Put terminal in "keypad-transmit" mode
Run Code Online (Sandbox Code Playgroud)
但是xterm的terminfo实际上是说smkx=\E[?1h\E=,这似乎让我感到困惑(smkx应该影响键盘,而不是光标键,对吗?)。我在这里想念什么?
给定一个打开的示例脚本/dev/tty:
# sample.rb
tty=File.open("/dev/tty", "w+")
tty.print "> "
tty.puts tty.gets.upcase
Run Code Online (Sandbox Code Playgroud)
我可以用正常的jruby运行它就好了:
% jruby sample.rb
> hello
HELLO
%
Run Code Online (Sandbox Code Playgroud)
但是,如果我尝试使用/dev/ttynailgun,那么tty绑定到nailgun服务器,而不是客户端:
# server terminal | # client terminal
% jruby --ng-server |
NGServer 0.9.1 started on all interfaces, port 2113. |
| % jruby --ng sample.rb
> hello |
HELLO |
| %
Run Code Online (Sandbox Code Playgroud)
(垂直间距是显示时间,每个实际输出缺少空行)
这是预期的行为,还是一个错误?
如果它是预期的行为,有没有办法我可以检测脚本是否正在运行,--ng所以我可以避免打开/dev/tty?
我有一个取决于终端特性的实用程序.我想在docker容器中执行它.(该程序不是一个交互式程序.这是一个以这种方式编写的旧程序).
docker run -i -t或者docker exec -i -t应该打开容器进入容器.但这是发生了什么..
user@1755e1f3f735:~/region/primer/cobol_v> kickstop
[Error] Unable to run without terminal device (tty)
user@1755e1f3f735:~/region/primer/cobol_v> tty
not a tty
Run Code Online (Sandbox Code Playgroud)
当docker命令(run/exec)的-t选项给出'tty'时,tty命令返回'not a tty'.这令人费解.
我在openSuse和fedora23主机和图像上体验过这一点,如果这很重要的话.为此,我使用了'guake',MATE(Gnome?)终端仿真器,结果相同.
这有什么解决方案吗?或者这是设计并且必须替换/重写我的实用程序?
在终端中,我启动后台进程A,后者又启动进程B.进程B写入终端(进程A已经向B传递了正确的TTY文件描述符).
我担心的是,如果用户(在某些情况下,我)关闭终端窗口而不发送进程A或B一个SIGINT.然后可能发生的是,即使用户关闭了进程B,进程B仍将尝试写入终端.更糟糕的是,用户可以打开一个新的终端窗口,它可能会采用与另一个终端相同的身份/文件描述符,然后由进程B写入.
基本上,我正在寻找一种"监听"终端会话事件的方法,例如终端会话被关闭.
是否可以在Node.js进程中侦听此类事件?也许有一个相应的处理程序类似process.on('SIGINT')?
我猜测也许SIGTERM事件是要听的事件,但现在在试验代码后,不要以为是这样.