每天走一万步真的健康吗

基础方法:管道与重定向

通过管道()或重定向(<<<)向程序发送按键:

# 多行输入(EOF 标记)
command <<EOF
yes
input2
EOF

适用场景:简单命令(如确认提示),支持大部分Shell(Bash/Zsh)。


特殊按键的表示

需用转义序列表示非打印字符:

  • \n\r:回车(Enter)

  • \t:制表符(Tab)

  • \e:ESC键

  • 组合键需转换为ASCII码(通过 printf):

    # Ctrl+C (ASCII 3)
    printf "\x03" | command
    # 方向键(上箭头:\e[A)
    echo -e "\e[A" | command

自动化工具:expect

处理复杂交互(如SSH登录、sudo密码):

  1. 安装:sudo apt install expect(Linux/macOS)
  2. 脚本示例:
    #!/usr/bin/expect
    spawn command  # 启动交互式程序
    expect "Password:"  # 等待提示
    send "mypassword\r"  # 发送密码+回车
    expect eof

    优势:精确匹配提示并响应,支持超时控制。


终端控制:stty 与 tty

直接操作终端设备(高级场景):

# 关闭回显(用于输入密码)
stty -echo
read -s password
stty echo
# 向当前终端发送按键
echo -e "\n" > /dev/tty

图形界面按键模拟(xdotool)

适用于Linux桌面环境:

xdotool key Enter      # 模拟回车
xdotool key Ctrl+c     # 模拟Ctrl+C
xdotool type "text"    # 输入文本

注意事项

  1. 安全性
    • 避免在脚本中硬编码密码(使用环境变量或密钥管理)。
    • expect 脚本需设置权限为 700
  2. 兼容性
    • echo -e 在BSD/macOS中可能失效 → 改用 printf
    • Windows需借助WSL或Cygwin。
  3. 特殊终端
    • 某些程序(如vim)需结合 tmuxscreen 自动化。

方法选择指南

场景 推荐方法
简单文本+回车 echo/printf+管道
密码/复杂交互 expect
组合键(Ctrl+C/Tab) printf+ASCII码
Linux图形界面 xdotool

引用说明参考Linux man-pages (man7.org)、GNU Bash手册 (gnu.org) 及Expect官方文档 (expect.sourceforge.net),遵循POSIX标准及行业最佳实践。

原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/7690.html

(0)
酷番叔酷番叔
上一篇 2025年7月17日 14:56
下一篇 2025年7月17日 15:15

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信