sh shell 中的自解压脚本

2023-11-20

我将如何制作一个可以执行的自解压存档sh?

我最接近的是:

extract_archive () {
    printf '<archive_contents>' | tar -C "$extract_dir" -xvf -
}

Where <archive_contents>包含一个带有空字符的 tarball,%, ' and \转义字符并用单引号括起来。

有没有更好的方法来做到这一点,这样就不需要转义?

(请不要指给我shar, makeself等等。我想从头开始写。)


另一种变体是使用 shell 脚本结尾标记并使用 sed 剪切 shell 脚本本身。

Script selfextract.sh:

#!/bin/bash

sed '0,/^#EOF#$/d' $0 | tar zx; exit 0
#EOF#

如何使用:

# create sfx
cat selfextract.sh data.tar.gz >example_sfx.sh

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

sh shell 中的自解压脚本 的相关文章

  • 列出破折号中当前定义的函数?

    我想列出当前定义的函数dash 有什么办法可以做到这一点吗 我能想到的最接近的是type它可以用来测试一个函数是否存在 但除此之外我很困惑 附 我说的是dash在这里 不是bash or zsh 看看 exec c 似乎没有 没有 表是静态
  • 如何使用AWK脚本检查表的所有列数据类型? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 在这里 我正在检查表中第一列的数据类型 但我想知道AWK中表的所有列数据类型 我尝试过 但只能获得一列数据类型 例如 Column 1
  • Bash 脚本大小限制?

    我有一个 bash 脚本 在 RHEL 或 OS X 上运行时出现以下错误 第 62484 行 意外标记 换行符 附近出现语法错误 第 62484 行 o gz 这是一个自动生成的脚本 用于解决我公司使用的 Grid Engine 计算集群
  • 如何在lua中获取shell脚本的返回码?

    我正在lua中执行一个脚本 os execute sh manager scripts update system sh f 我想获得脚本的输出 如果退出状态为 7 则返回 7 I tried local output os execute
  • 如何将设备屏幕位置转换为发送事件位置?

    我知道关于input tap x yshell 命令 但是 我想了解如何 使用执行单击sendevent命令 我能够通过以下命令实现它 sendevent dev input event5 3 53 X sendevent dev inpu
  • xsel -o 对于 OS X 等效项

    是否有一个等效的解决方案可以在 OS X 中抓取选定的文本 就像适用于 Linux 的 xsel o 一样 只需要当前的选择 这样我就可以在 shell 脚本中使用文本 干杯 埃里克 你也许可以安装xsel在 MacOS 上 更新 根据 A
  • 如何使用我在 github 中发布的 bash 脚本执行 chsh?

    我有一个要点 我总是用它来在新服务器上安装我需要的软件包 http gist github com 4372049 http gist github com 4372049 我需要做的就是通过 ssh 在新服务器中输入以下内容 bash c
  • Bash 解析和 shell 扩展

    我对 bash 解析输入和执行扩展的方式感到困惑 对于输入来说 hello world 作为 bash 中的参数传递给显示其输入内容的脚本 我不太确定 Bash 如何解析它 Example var hello world displaywh
  • shell脚本中关联数组的时间复杂度

    我想知道在 shell 脚本中使用关联数组时如何构造 实现 另外 我想知道基于 shell 脚本的关联数组的时间复杂度是否是最佳的 因为我们可以使用字母和数字作为它们各自的键 编辑 他们使用什么哈希函数 如果您使用关联数组 则不能通过 使用
  • 使用 posix shell 测试字符串中的正则表达式

    如何测试字符串是否与特定字符串匹配正则表达式与基本 无 bash 或任何其他 posix shell 脚本 在 if 语句中 您可以使用expr在 POSIX shell 中计算正则表达式的命令 s Abc expr s alpha 3 e
  • 如何执行“sudo nvm”?

    在我的 Mac 上 我想将一些需要 su 权限的包迁移到另一个节点版本 我使用 homebrew 安装 nvm 现在我需要执行 sudo nvm 或 reinstall packages将失败 me MacBook sudo nvm sud
  • 如何使用shell脚本从json字符串中grep特定字段值[重复]

    这个问题在这里已经有答案了 下面是文件中可用的 JSON 字符串 我需要从中提取值status在 shell 脚本中 预期输出 status success 响应 json eventDate null dateProccessed nul
  • 如何在 Linux shell 中将十六进制转换为 ASCII 字符?

    假设我有一个字符串5a 这是 ASCII 字母的十六进制表示Z 我需要找到一个 Linux shell 命令 它将接受一个十六进制字符串并输出该十六进制字符串代表的 ASCII 字符 所以如果我这样做 echo 5a command im
  • 如何从 Artifactory 存储库下载最新的工件?

    我需要来自存储库的最新工件 例如快照 人工工厂 http en wikipedia org wiki Software repository Repository managers 该工件需要通过脚本复制到服务器 Linux 我有什么选择
  • sed 错误“未终止的 's' 命令”故障排除

    我正在构建一个script https stackoverflow com questions 4036832 replacing a specific term in an xml file其中 它将用文件夹路径替换 XML 文件中的模式
  • 如何以管理员身份在 rake 任务中运行 shell 命令?

    我有一个简短的 cmd 文件 我想将其作为部署过程的一部分运行 不幸的是 cmd 文件需要管理员权限 是否可以从 rake 中获得管理员权限 或者我是否需要以管理员身份启动 shell 您可以尝试runas http ss64 com nt
  • 如何通过保持目录结构完整来同步路径中匹配模式的文件?

    我想将所有文件从服务器 A 复制到服务器 B 这些文件在不同级别的文件系统层次结构中具有相同的父目录名称 例如 var lib data sub1 sub2 commonname filetobecopied foo var lib dat
  • 从 UNIX 命令行向串行端口发送字节?

    我想使用命令行将字节流发送到串行端口 这可能吗 我的串口位于 dev cu usbserial A700dYoR在我的 Mac 上 例如 如果我想将整数 50 或字符串 data 发送到该串行端口 我该怎么做 我对 UNIX 的了解非常有限
  • sh / Bash shell 脚本中 !# (bang-pound) 的含义是什么?

    我想了解这个 Scala 脚本是如何工作的 usr bin env bash exec scala 0 object HelloWorld def main args Array String println Hello world arg
  • 在 C# 中读取/写入命令行程序

    我正在尝试与 C 的命令行程序进行对话 它是一个情绪分析器 它的工作原理如下 CMD gt java jar analyser jar gt Starting analyser 这是我想从我的 C 程序插入内容的地方 例如 I love y

随机推荐

  • npm 在哪里安装包?

    有人可以告诉我在哪里可以找到我使用安装的 Node js 模块吗npm 全球图书馆 你可以运行npm list g查看安装了哪些全局库以及它们所在的位置 使用npm list g head 1对于仅显示路径的截断输出 如果您只想显示主包而不
  • p.classname 或 .classname p,有什么区别吗?

    所以 我对这个简单的事情有点困惑 我已经尽可能多地用谷歌搜索 但我只是不知道谷歌搜索的正确关键字 我尝试了 CSS 选择器等 没有答案足以消除我的困惑 所以我也测试过 p classname似乎不起作用 但根据我正在读的书中的定义 2012
  • 如何计算R中矩阵乘积的对角线

    我有两个矩阵A and B 那么最快的方法是什么just计算diag A B 即内积ith row of A and ith的列B and 不关心其他项的内积 补充 A and B分别具有较大的行数和列数 这可以在不进行完整矩阵乘法的情况下
  • WPF 中 MDI 的替代方案?

    希望这是一个合适的问题 我第一次使用 WPF 最终目标是将我们的程序从 winforms 应用程序转换为 WPF 应用程序 我们的应用程序当前使用 MDI 表单作为主表单 以允许打开多个窗口来显示数据等 在 WPF 中 显示多组数据的最佳实
  • pkill 通过远程 ssh 与另一个命令结合返回 255

    当我尝试在远程主机上结合另一个命令执行 pkill 时 它总是返回 255 即使这两个命令都成功 Examples ssh
  • 如何在 R 中创建显示预测模型、数据和残差的图表

    给定两个变量 x and y 我对变量运行动态回归 并希望根据其中一个变量绘制拟合模型 并在底部显示实际数据线与预测线的残差 以显示实际数据线的差异 我以前见过它 我以前也做过 但我一生都不记得如何做或找到任何解释它的东西 这让我陷入了困境
  • R doParallel 进度条来监控已完成的作业

    我正在尝试编写一个具有多线程功能的 CRAN 包 我得到了一个完美的解决方案doSNOW 但该软件包已被 CRAN 团队标记为 取代 他们要求我切换到doParallel解决方案 这很好 但是我找不到一种方法来监控使用完成的作业数量doPa
  • Rails ActiveStorage url_for 返回无效的 URL

    我有一个带有头像的员工模型 我可以将图像附加到头像 但每当我尝试显示图像时 url for employee avatar 产生死链接 我所看到的只是来自的价值alt来自标签的属性 我得到的图像标签如下 img src rails acti
  • 您可以在不使用相对路径的情况下从 css 引用图像吗?

    我想创建一个带有背景图像CSS的div mydiv background image url public images foo png background repeat repeat x 现在 我无法在 css 中使用路由 因此我必须使
  • 如何将“wchar_t *”转换为“const char *”

    我怎样才能转换 wchar t to const char 使用C MFC VS2010 谢谢 由于问题是关于MFC的 我建议如下 CStringA a Test CStringW w L Test a CStringA w w CStri
  • ClassLoader 不提供“addTransformer(ClassFileTransformer)”方法

    我正在使用 Spring 和 AspectJ 进行一些不错的编织 插入后我刚刚遇到了这个问题
  • 阻止或取消退出 JavaFX 2

    当退出 JavaFX 程序时 我将重写 Application stop 以检查未保存的更改 这工作正常 但最好为用户提供取消操作的选项 换句话说 Application stop 是最后机会沙龙 虽然它确实捕获了退出 但撤销退出过程有点晚
  • 无法从 ondatachange 方法获取值

    我目前正在开发一个android应用程序 我使用firebase作为数据库 但是当我在onDataChange方法中获取变量并将它们分配给全局变量时 我得到了空变量 但是当我在onDataChange方法中调用这些变量时 它们是不为空 pu
  • 如何在 Typescript 中定义类数组(而不是实例)

    我正在尝试 Typescript 中的一些语言结构 我希望创建一个类数组 稍后将实例化这些类 如果我在上面尝试的话 我的代码似乎可以编译并且可以工作打字稿游乐场但它确实在打字稿框中给出了错误 Argument of type typeof
  • SQL地址数据很乱,如何在查询中清理它?

    我的地址数据存储在 SQL Server 2000 数据库中 我需要提取给定客户代码的所有地址 问题是 有很多拼写错误的地址 有些缺少部分等等 所以我需要以某种方式清理它 我需要剔除错误的拼写 缺失的部分等 并得出 平均 记录 例如 如果
  • Google 地图 - 在街景全景位置之间顺利切换

    我有一个简单的地图概念验证与maps google com类似 我在页面底部有一个带有街景 全景的滑块 当您单击图像时 您会看到相同的街景 当谷歌从一个街景转换到另一个街景时 如何实现与谷歌使用的相同类型的转换效果 它非常平滑 避免了我目前
  • 如何为 Azure App Insights 中的页面视图事件提供自定义名称?

    默认情况下 App Insights 使用页面标题作为事件名称 拥有动态页面名称 例如 Order 32424 会产生大量的事件类型 文档关于此事说要使用 trackEvent 方法 但没有示例 appInsights trackEvent
  • PHP 检查文件是否正在使用

    我想制作一个平面文件数据库 它将使用 php 文件来存储网站中的数据 我唯一的问题是 如果当我从平面文件数据库中 选择 某些内容 这意味着该文件被读取 时 如果在那一刻正在进行 更新 这意味着该文件被修改和写入 则该文件会空白 我丢失了所有
  • 以编程方式更改键盘布局

    我在瑞士公司环境中工作de CH作为标准键盘布局 同时使用de DE键盘 我可以手动将键盘设置更改为首选de DE 布局 将其设置为标准并分配快捷方式 但是 不知何故 我的设置在任意时间后消失 可能与管理员运行的更新有关 所以我必须每隔几天
  • sh shell 中的自解压脚本

    我将如何制作一个可以执行的自解压存档sh 我最接近的是 extract archive printf