标签: tty

使用 pexpect / bash 时防止换行

执行以下脚本时(简化示例):

#!/usr/bin/env python
import pexpect
spawn = pexpect.spawn('/bin/bash')
with open('/tmp/logfile.log', 'w') as f:
    spawn.logfile_read = f
    spawn.sendline('echo "Hello I am a really long command, in fact I am 100 characters long! Potato Potato Potato....."')
    spawn.sendline('exit')
    spawn.expect(pexpect.EOF)
Run Code Online (Sandbox Code Playgroud)

我在换行时遇到问题,导致^M字符出现在日志中。pexpect 日志文件现在看起来像这样:

bash-3.2$ echo "Hello I am a really long command, in fact I am 100 characters lo ^Mng! Potato Potato Potato....."
Hello I am a really long command, in fact I am 100 characters long! Potato Potato Potato.....
bash-3.2$ exit
exit …
Run Code Online (Sandbox Code Playgroud)

python bash terminal tty pexpect

1
推荐指数
1
解决办法
2612
查看次数

与 pyserial 一起使用后无法使用 cat 打开 /dev/tty/USB0

打开我的串行端口/dev/tty/USB0pyserial

>>> ser = serial.Serial("/dev/ttyUSB0", 57600)
>>> ser.isOpen()
True
>>> ser.close()
>>> ser.isOpen()
False
Run Code Online (Sandbox Code Playgroud)

我无法再/dev/ttyUSB0使用命令读取,cat /dev/ttyUSB0
通常cat /dev/ttyUSB0是像这样的阻塞命令read,但是在使用 pyserial 打开/关闭串行端口后,该cat命令变得非阻塞,看起来很忙......

有谁知道是什么原因造成的?

python linux tty cat pyserial

1
推荐指数
1
解决办法
2743
查看次数

如何在不写入 process.stdout 或 process.stderr 的情况下写入终端?

我想将内容记录到终端而不将其写入终端process.stdoutprocess.stderr这样管道传输过程就不会被这些日志污染。

这与 bash 非常等效echo "hello" > /dev/tty(请参阅此问题),但我找不到如何直接/dev/tty从节点访问。

tty node.js

1
推荐指数
1
解决办法
1176
查看次数

sigaction() 与 signal() 有何不同?

prog2不退出CTRL+D。为什么然后prog1退出CTRL+D?更奇怪的是,信号处理程序不执行任何操作,尽管它以某种方式影响最终结果......

下面两个程序的区别仅在于prog1.c sigaction()使用了in,以及prog2.c signal()使用了in:

@@ -39,10 +39,7 @@
     /* read from loopback tty */
     if (cpid > 0) {
         /* this is the strange part */
-        struct sigaction sa;
-        sa.sa_handler = child_handler;
-        sa.sa_flags = 0;
-        sigaction(SIGCHLD, &sa, NULL);
+        signal(SIGCHLD, child_handler);

         struct termios tty;
         tcgetattr(fd, &tty);
Run Code Online (Sandbox Code Playgroud)

每个程序都只是打开一个环回 tty 并将其自身分成两个进程,其中一个进程从 tty 读取响应,另一个进程将数据写入 tty 设备。然后将从环回tty虚拟设备接收到的数据输出到控制终端。

编译prog1prog2使用-lutil选项。启动每个程序并输入hello<CTRL+D>. 这会产生以下输出:

$ ./prog1 …
Run Code Online (Sandbox Code Playgroud)

signals tty pty

1
推荐指数
1
解决办法
1707
查看次数

临时清除tty

许多命令(例如watchless)能够暂时清除 tty 以全屏显示信息,然后当命令退出时恢复原始 tty 内容。

有没有办法在 bash 脚本中实现这一目标?

linux bash scripting tty

1
推荐指数
1
解决办法
921
查看次数

在 Linux 中中断“没有回显的控制台输入”

DOS 有int 21h / AH=08H: Console input without echo

Linux 有类似的东西吗?如果我需要在输入的值显示在终端之前对其进行处理。

linux assembly tty

1
推荐指数
1
解决办法
55
查看次数

如何在Linux上的串口设备上设置非标准波特率?

在Linux上设置自定义波特率的方法有哪些?

这个问题的答案必须是在ioctl系统调用级别以上的用户级低级API(等等)级别.它至少应该在这些情况下有用:

  1. 编写使用串行端口的低级基于C的用户态代码,

  2. 编写抽象串口功能的库,

  3. 编写内核串口驱动程序.

linux serial-port tty

0
推荐指数
1
解决办法
6034
查看次数

发送 printk 到串口

我正在尝试调试 Linux 内核的模块。我听说可以将控制台输出发送到串行端口。我在 vmware 上运行 Ubuntu,想要向主机发送 printk 消息。我已经成功建立了一个串行连接,并且可以通过输入 echo > simething /dev/ttyS1 向主机发送回显,但我不知道如何将控制台上的输出发送到 ttyS1。

我的主要问题是,当模块/内核崩溃时,最后的 printk 消息会丢失,甚至不会显示,它只是缓冲。

linux tty printk

0
推荐指数
1
解决办法
4501
查看次数

错误 /dev/tty: 在 docker 内安装 sqlcmd 时没有这样的设备或地址

我想在我的 docker 映像中安装 sql cmd。我的 dockerfile 有这些命令来安装 sqlcmd (centos 7 基本映像)

RUN curl https://packages.microsoft.com/config/rhel/7/prod.repo > /etc/yum.repos.d/msprod.repo
RUN yum remove mssql-tools unixODBC-utf16-devel
RUN yum install -y unixODBC-devel mssql-tools
Run Code Online (Sandbox Code Playgroud)

以下是 docker 构建日志

Transaction test succeeded
Running transaction
  Updating   : libcom_err-1.42.9-17.el7.x86_64                             1/14
  Installing : unixODBC-2.3.7-1.rh.x86_64                                  2/14
  Updating   : libss-1.42.9-17.el7.x86_64                                  3/14
  Installing : e2fsprogs-libs-1.42.9-17.el7.x86_64                         4/14
  Installing : e2fsprogs-1.42.9-17.el7.x86_64                              5/14
  Updating   : 1:openssl-libs-1.0.2k-19.el7.x86_64                         6/14
  Installing : 1:make-3.82-24.el7.x86_64                                   7/14
  Installing : 1:openssl-1.0.2k-19.el7.x86_64                              8/14
/var/tmp/rpm-tmp.8S1dKq: line 17: /dev/tty: No such device or address
error: %pre(msodbcsql17-17.5.2.1-1.x86_64) scriptlet failed, …
Run Code Online (Sandbox Code Playgroud)

centos sqlcmd tty docker dockerfile

0
推荐指数
1
解决办法
2790
查看次数