Bash printf %q 无效指令

2023-11-26

我想更改 .bashrc 文件中的 PS1。 我找到了一个使用 printf 和 %q 指令来转义字符的脚本:

#!/bin/bash
STR=$(printf "%q" "PS1=\u@\h:\w\$ ")
sed -i '/PS1/c\'"$STR" ~/.bashrc

问题是我收到此错误:

script.sh: 2: printf: %q: invalid directive

任何想法 ?也许还有另一种逃避角色的方法?


The printf命令内置于 bash 中。它也是一个外部命令,通常安装在/usr/bin/printf。在大多数 Linux 系统上,/usr/bin/printf是 GNU coreutils 实现。

GNU coreutils 的旧版本printf命令不支持%q格式说明符;它是在2016年10月20日发布的8.25版本中引入的。 bash 的内置printf命令确实如此——并且只要 bash 有一个内置的printf命令。

该错误消息表明您正在运行script.sh使用 bash 以外的东西。

自从#!/bin/bash行似乎是正确的,您可能正在执行以下操作之一:

sh script.sh
. script.sh
source script.sh

相反,直接执行即可(在确保具有执行权限后,使用chmod +x如果需要的话):

./script.sh

或者你可以编辑你的.bashrc手动归档。如果正确执行该脚本,则会将此行添加到您的.bashrc:

PS1=\\u@\\h:\\w\$\ 

(该行末尾的空格很重要。)或者您可以更简单地这样做:

PS1='\u@\h:\w\$ '

该脚本的一个问题是它将替换every提到的行PS1。如果您只设置一次并且不引用它,那很好,但是如果您有类似的内容:

if [ ... ] ; then
    PS1=this
else
    PS1=that
fi

那么脚本就会彻底搞乱它。只是有点太聪明了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Bash printf %q 无效指令 的相关文章

  • AWK 或 sed 方式粘贴非相邻行

    cat file aaa bbb ccc ddd eee jjj kkk lll mmm nnn ooo ppp 以下 AWK 命令会将 mmm 行粘贴到 ddd eee 行的末尾 有没有更简单的方法使用 AWK 或 sed 来做到这一点
  • gnutls_handshake() 失败:握手失败 GIT

    一切都工作正常 但突然我收到错误 致命 无法访问 https 电子邮件受保护 cdn cgi l email protection name repo name git gnutls handshake 失败 握手失败 我在我的计算机和 E
  • 如何搭建qtwayland?

    我花了一整天的时间尝试使用QtWayland Compositor 1 0在 Qt 创建者中 我已经遵循了从那里开始的所有步骤https wiki qt io QtWayland https wiki qt io QtWayland但我收到
  • 我可以告诉 Linux 不要交换特定进程的内存吗?

    有没有办法告诉 Linux 它不应该将特定进程的内存交换到磁盘 它是一个 Java 应用程序 所以理想情况下我希望有一种方法可以从命令行执行此操作 我知道您可以将全局交换性设置为 0 但这明智吗 您可以通过以下方式执行此操作姆洛克尔 2 h
  • 如何在不同的目录中执行python脚本?

    Solved对于可能觉得这有帮助的人 请参阅下面我的答案 我有两个脚本 a py 和 b py 在我当前的目录 C Users MyName Desktop MAIN 中 我运行 gt python a py 第一个脚本 a py 在我当前
  • 带有接收器的 boost_log 示例无法编译

    我正在考虑将 boost log 用于一个项目 一开始我就遇到了以下问题 我在以下位置找到的升压日志示例 http www boost org doc libs 1 54 0 libs log example doc tutorial fi
  • 如何从 swagger 文档生成静态 html 文件?

    我创建了一个 Swagger 文档yaml文件位于 api swagger swagger yaml 现在我想分享一个静态 HTML 文档及其定义 但它已在招摇项目 https github com swagger api swagger
  • 使用数组参数创建 bash 选择菜单

    我有一个函数叫做createmenu 该函数将接受一个数组作为第一个参数 第二个参数是数组的大小 然后我想使用该数组的元素创建一个选择菜单 这是我到目前为止所拥有的 使用给定数组创建菜单 createmenu echo 1 echo Siz
  • 多线程进程的线程ID可以与另一个正在运行的进程的进程ID相同吗?

    我正在尝试找到一种方法来唯一标识多进程环境中的线程 我有一个服务器 它跟踪连接到它的不同进程 其中一些是多线程的 一些不是 为了识别多线程连接中的线程 我使用线程 ID 作为唯一标识符 在任何给定时间最多有 1 个多线程进程连接 我的问题是
  • 如何从 Windows 批处理文件中的 ECHO 字符串中去除引号?

    我正在创建一个 Windows 批处理文件 但我必须 ECHO 一个大型复杂字符串 因此我必须在两端加上双引号 问题是引号也被回显到我正在写入的文件中 如何 ECHO 这样的字符串并去掉引号 UPDATE 我花了两天的时间研究这个问题 终于
  • tcmalloc/jemalloc 和内存池之间有什么区别(以及选择的理由)?

    tcmalloc jemalloc是改进的内存分配器 还引入了内存池以更好地分配内存 那么它们之间有什么区别以及在我的应用中如何选择它们呢 这取决于您的程序的要求 如果您的程序有更多的动态内存分配 那么您 需要从可用的分配器中选择一个内存分
  • python 的 fcntl.flock 函数是否提供文件访问的线程级锁定?

    Python 的 fcnt 模块提供了一种名为 flock 1 的方法来证明文件锁定 其描述如下 对文件执行锁定操作op 描述符 fd 文件对象提供 fileno 方法被接受为 出色地 请参阅 Unix 手册集群 2 了解详情 在某些系统上
  • 如何在 Linux 中制作一个将文件转换为大写的 x86 汇编程序?

    我找到了一个名为 ProgrammingGroundUp 1 0 booksize pdf 的 pdf 文件 其中一个项目是制作一个汇编程序 该程序接收文件并将其转换为大写 section data CONSTANTS system cal
  • 如何在变量中存储标准错误

    假设我有一个如下所示的脚本 无用 sh echo This Is Error 1 gt 2 echo This Is Output 我还有另一个 shell 脚本 也无用 sh useless sh sed s Output Useless
  • 使用多个 NIC 广播 UDP 数据包

    我正在 Linux 中为相机控制器构建嵌入式系统 非实时 我在让网络做我想做的事情时遇到问题 该系统有 3 个 NIC 1 个 100base T 和 2 个千兆端口 我将较慢的连接到相机 这就是它支持的全部 而较快的连接是与其他机器的点对
  • 在C语言中如何对齐这样的数字?

    我需要将 C 中的一系列数字与printf 就像这个例子 1 5 50 100 1000 当然 所有这些之间都有数字 但这与当前的问题无关 哦 将破折号视为空格 我使用破折号 这样更容易理解我想要的内容 我只能这样做 1 5 50 100
  • 超立方体错误。非法的最小或最大规格

    尝试从这里运行示例代码http tess4j sourceforge net codesample html http tess4j sourceforge net codesample html我收到一条错误消息 Error Illega
  • 在 Bash 中将命令的输出读取到数组中

    我需要将脚本中命令的输出读取到数组中 该命令例如是 ps aux grep grep x 它逐行给出输出 如下所示 10 20 30 我需要将命令输出中的值读入一个数组 然后如果数组的大小小于三 我将做一些工作 如果命令的输出包含空格 相当
  • 如何使用 sed 交换两行?

    有谁知道如何更换line a with line b and line b with line a使用 sed 编辑器在文本文件中 我可以看到如何用保留空间中的一行替换模式空间中的一行 即 Paco x or Paco g 但是如果我想采取
  • copy_from_user() 错误:目标大小太小

    我正在为内核模块编写 ioctl 处理程序 我想从用户空间复制数据 当我编译禁用优化的代码时 O0 gflags 编译器返回以下错误 include linux thread info h 136 17 error call to bad

随机推荐

  • WordPress 混合内容错误

    我在多站点环境中有 3 个站点 我还为管理部分启用了 SSL 但我得到了很多 混合内容 管理员错误仅适用于ONE地点 结果 管理中的许多脚本和样式表都被破坏了 如果我的有什么问题ht访问规则 or the 可湿性粉剂配置文件 那么其他网站上
  • 如何检测我的程序是否在 Active Directory 环境中运行?

    如何检测我的程序是否在 Active Directory 环境中运行 我正在使用 C 和 Net 2 0 尝试获取Environment UserDomainName 并将其与Environment MachineName 进行比较 如果两
  • 我们可以使用phonegap框架在iphone中进行推送通知吗?

    我需要有关如何使用phonegap 框架实现推送通知的基本概念 我们可以 就在今天早上 该测试版的最新版本为开发人员提供了一个非常令人兴奋的新功能 新消息的推送通知 这意味着应用程序将能够在发生重要事件时发送短信样式的消息 摘自该网站 ht
  • 将变量名称向量传递给 dplyr 中的range()

    我想通过arrange dplyr 要排序的变量名称向量 通常我只是输入我想要的变量 但我试图创建一个函数 其中排序变量可以作为函数参数输入 df lt structure list var1 c 1L 2L 2L 3L 1L 1L 3L
  • Visual Studio 2012 数据库设计器 - 功能是否已更改?

    我最近安装了 Visual Studio 和 SQL Server 2012 我想知道我是否遗漏了一些东西 因为数据库设计器似乎不像旧版本那么友好 在 Visual Studio 2010 中 当我在 App Data 目录中创建 SQL
  • 无法将文件从捆绑包复制到 iOS 中的文档目录

    我正在尝试使用以下代码将文件从我的包复制到 iOS 中的文档目录 let bundlePath NSBundle mainBundle pathForResource information ofType png print bundleP
  • 如何模拟 DriverManager.getConnection(...)?

    我有一个类 它连接到 H2 数据库并运行多个 SQL 语句 public class H2Persistence implements IPersistence private Connection conn Override public
  • 比较 IP 地址是否低于另一个

    任何人都知道如何比较 2 个 ip 地址 看看 ip 地址是否低于另一个 i e bool b CurrentIpAddress IsLowerCompareTo AnotherIPAddress 我还想同时支持 IPV4 和 IPV6 您
  • Iphone 错误终止以响应 SpringBoard 的终止

    我正在真实的手机中测试我的 iPhone 应用程序 当我的程序运行几秒钟时 它自动退出并显示消息 正在响应 SpringBoard 的终止而终止 并在控制台中显示程序正常退出 它是有线的 对吧 我尝试了几次 每次都发生 该程序非常简单 有一
  • 如何解决 Bower 问题:“ENORESTARGET 标签/分支主机不存在”

    我似乎无法让鲍尔从事我当前的项目 该项目是几周前作为一个 yeoman Angular 应用程序开始的 现在记不清我到底做了什么 也无法确定如何修复它 我没有bower components目录 并已删除并重新创建bower js几次 bo
  • 如何在 Vapor 中向 Firebase Cloud Messaging API 发送 POST 请求

    我尝试使用 Vapor 1 5 和 Firebase 旧协议向 Firebase 通知 API 发出 POST 请求 但收到失败响应 响应是 JSON node Node Node object multicast id Node Node
  • 致命异常:字符串无法转换为 Spannable

    除了少数设备外 我的应用程序运行良好 在一台这样的设备上 我在一项活动中遇到了致命异常 错误是java lang ClassCastException java lang String无法转换为android text Spannable
  • HTML 打印仅限 1 页

    我正在打印一个长度不同的 HTML 表格 打印表格时 可打印1页至10页 有什么方法可以使用编程代码将打印限制为仅一页吗 是的 浏览器打印对话框中有一个选项可以设置仅打印一页 这是最后一个选项 我正在使用打印 HTMLwindow prin
  • Convert.ToDateTime('Datestring') 为所需的 dd-MM-yyyy 日期格式

    我有日期字符串 可以是任何日期格式 但我想将其转换为dd MM yyyy format 我已经尝试过每一个Convert ToDatetime仅转换为系统格式的选项 我想要它转换dd MM yyyy格式 请回复 提前致谢 尝试这个 Date
  • 如果被同名变量覆盖则调用内置函数

    我有一个变量type我想使用内置的type 功能 Example def fun inv log debug type of inv format type inv type int 当我运行该函数时出现以下错误 AttributeErro
  • subprocess.Popen 的输出

    我一直在编写一些 python 代码 在我的代码中我使用了 命令 该代码按我的预期工作 但后来我在 Python 文档中注意到该命令已被弃用并将在 Python 3 中删除 我应该使用 subprocess 代替 好吧 我想 我不希望我的代
  • 将列表解压为变量

    我有一个清单 row Title url 33 title2 keyword 有没有一种更Pythonic的方法来解压这些值 例如 title url price title2 keyword row 0 row 1 row 2 row 3
  • weblogic.application.ModuleException:上下文路径 '' 已被模块使用:/应用程序:

    当我尝试运行 weblogic server 12c 时 它抛出此错误并且无法启动
  • 如何使用 ASP.NET 检测页面关闭事件

    我有一个带有 MasterPage 和内容页面的 ASP NET Web 应用程序 当我单击MenuItem打开一个新的 aspx 页面 如果我想关闭新的页面浏览器选项卡 我想显示一个弹出窗口或对话框 提醒用户他正在关闭浏览器选项卡 我不知
  • Bash printf %q 无效指令

    我想更改 bashrc 文件中的 PS1 我找到了一个使用 printf 和 q 指令来转义字符的脚本 bin bash STR printf q PS1 u h w sed i PS1 c STR bashrc 问题是我收到此错误 scr