【问题标题】:Bash enter & ctrl-z keypressBash 输入和 ctrl-z 按键
【发布时间】:2014-12-05 07:06:13
【问题描述】:

我有一个 minicom 的命令,使用 SSH/Putty 通过调制解调器发送短信,这是命令

AT^HCMGS="destination number"<press ENTER>
> SMS message <press CTRL + Z>

使用 minicom 成功执行命令

我想问如何在bash中模拟按ENTER & CTRL+Z 我可以这样写脚本吗?

#!/bin/bash
echo -e -n "AT^HCMGS="888"(I don't know how to insert enter/return)" > /dev/ttyUSB0
echo -e -n "SMS message (I don't know how to insert ctrl+z)" > /dev/ttyUSB0

我想在 openWRT 中用这个脚本集成一个程序(motion linux)

谢谢!

【问题讨论】:

  • 尝试\032^Z 部分和\nENTER
  • 另外,您需要在 888 周围转义 "。使用\"888\"
  • 假设 CTRL+Z 实际上是暂停程序,那么“正确的方法”就是kill -STOP $PID。您可以通过管道回显(不带-n)或发送\n 以获取回车键。
  • 另一个常用的选项是 Ctrl+v => 你想要的键。例如。 Ctrl+v 然后按&lt;Return key&gt;

标签: linux bash unix openwrt


【解决方案1】:

从shell发送消息test到号码+48333444555

echo -e 'AT+CMGS="+48333444555"^Mtest^Z' > /dev/ttyUSB0

重要

  1. 要获得 ^M 你需要先按 Ctrl+V 再按 Ctrl+M
  2. 要获得 ^Z 你需要先按 Ctrl+V 再按 Ctrl+Z

【讨论】:

  • 问题询问如何将其写入 bash 脚本。这个答案具体取决于在提示符下直接执行命令。它没有显示如何将 ^M 和 ^Z 编码为可以运行的 bash 脚本。
  • @user3719188 PDU 模式呢?我从 adb shell 收到“未找到”响应。
  • 可以使用 printf 通过 SSH 发送 ^Z: printf '\x1a' > /dev/ttyUSB0
【解决方案2】:

$ man skill:

SYNOPSIS
        skill [signal] [options] expression

PROCESS SELECTION OPTIONS

   -t, --tty tty
          The next expression is a terminal (tty or pty).

EXAMPLES

        skill -KILL -t /dev/pts/*
            Kill users on PTY devices.

所以应该是这样的(无法验证):skill -STOP --tty /dev/ttyUSB0

【讨论】:

  • 我明白你在说什么,但这不是 OP 的意思
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-10-26
  • 1970-01-01
  • 1970-01-01
  • 2017-02-09
  • 1970-01-01
  • 2017-04-18
  • 1970-01-01
相关资源
最近更新 更多