首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >自制公式-在安装时重命名文件

自制公式-在安装时重命名文件
EN

Stack Overflow用户
提问于 2022-01-05 05:05:51
回答 1查看 132关注 0票数 1

我有以下自制formulaL

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class Software < Formula
    desc "Software"
    homepage "https://blabla"
    version "1.6.0"
  
    if OS.mac? && Hardware::CPU.intel?
      url "https://blabla/releases/download/v1.6.0/software-darwin-10.12-amd64"
      sha256 "ce02a97fb95aca9bba44413d4158f5f2c182f5eb2823bedf1400f556bb9b"
    end
  
    if OS.mac? && Hardware::CPU.arm?
      url "https://blabla/releases/download/v1.6.0/software-darwin-10.12-arm64"
      sha256 "1c69849ba82c10d15706d110ae63bd97c387da2a8cf925653e1bb5c6fc"
    end
  
    if OS.linux? && Hardware::CPU.intel?
      url "https://blabla/releases/download/v1.6.0/software-linux-amd64"
      sha256 "9b7245823a60c85e027929b776753848d4fbdaaa333a49ae171684893"
    end
  
    def install
      bin.install "software*" => "software"
    end
  
    test do
      system "#{bin}/software --version"
    end
  end

有问题的部分是:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    def install
      bin.install "software*" => "software"
    end

下载的文件取决于安装前用户在哪个操作系统上。我想要自动找到下载的文件(不管文件的名称是什么),因此我为什么要使用regex作为bin.install“软件”*与星号一起查找下载的文件并将其安装为软件

但是,我发现了一个错误,说明软件*找不到

请问我如何纠正这个问题?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-01-06 08:51:23

一些建议(但见下面的注意事项)

根据自制bin.install文档bin.install的目的是重命名公式所在的位置中的文件,而密钥似乎既不接受glob,也不接受正则表达式。但是,由于除了Homebrew之外,您还可以使用Ruby的全部功能,因此可以考虑执行以下操作:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def install
  binfile_with_extension =
    File.basename(Dir.glob "#{prefix}/bin/software*")
  bin.install binfile_with_extension => "software"
end

当然,这假设只有一个software-*可执行文件。如果有多个,那么您可能需要做一些事情来返回glob的值(应该是Array)来为您的体系结构选择正确的值。

或者,与其重命名文件本身,您可能只是想要将其符号链接,这样您就不会更改应用程序可能期望的内容。文档中说,您可以完全访问FileUtils和DSL的符号链接方法,因此可以考虑使用这些方法的某些组合。例如,要为您的体系结构命名的文件在地窖中创建一个硬链接,然后使用相对符号链接将它链接到正确的bin目录中,下面的内容应该可以工作:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def install
  file = Dir.glob("#{prefix}/bin/software*").first
  FileUtils.ln file, "#{prefix}/bin/software"
  bin.install_symlink bin/"software"
end

可能有更好的本地选项来重命名符号链接,不同于它们链接到的文件,但是我找不到一个。但这并不意味着一个人不存在。

此外,硬链接或符号连接是否必要首先取决于应用程序。一些应用程序关心它们被调用的名称(例如busybox ),而另一些应用程序则不关心。

注意事项

我目前不是一个家用开发人员,所以可能有其他或更好的方法来做到这一点。尽管如此,Ruby globs和Hombrew特性的结合应该可以使您达到您想要的目的。

请注意,我还没有亲自测试过这一点,所以上面的建议可能不需要调整,也可能不起作用。我提供它只是作为一个起点,因为我不认为bin.install的目的是自己做你想做的事情。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70593365

复制
相关文章
linux重命名文件名_linux 文件重命名
https://blog.csdn.net/weixin_33724570/article/details/91909917
全栈程序员站长
2022/09/30
4.1K0
linux重命名文件名_linux 文件重命名
linux批量文件重命名命令_shell重命名文件指令
hello_10_2016-03-17.log hello_4_2016-03-17.log hello_8_2016-03-17.log
全栈程序员站长
2022/10/02
10.7K0
在 Linux 中重命名文件夹中的所有文件
在Linux系统中,有时候我们需要批量重命名文件夹中的所有文件,以便更好地组织和管理文件。本文将详细介绍几种在Linux中重命名文件夹中所有文件的方法,包括使用命令行工具和脚本等方式。
网络技术联盟站
2023/06/08
5K0
在 Linux 中重命名文件夹中的所有文件
删除,重命名文件
重命名文件----rename #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> //修改文件名 void REname(char *arr) { int ret=rename("你好世界.txt", arr); if (ret == 0) { printf("修改成功"); } else { printf("修改失败"); } } void test01() { char buf[] = "你好,世界.txt"; REname(b
大忽悠爱学习
2021/03/02
1.7K0
删除,重命名文件
java删除文件,重命名文件
在做项目时,遇到需要对文件做一些删除重命名等操作。基于java语言,保存代码段如下。
全栈程序员站长
2022/08/12
1.8K0
linux中文件重命名_如何在Linux中重命名文件?
This tutorial will walk you through the simple steps to rename a file in Linux.
全栈程序员站长
2022/09/30
8.3K0
自制安装程序~单文件~可安装windows服务~技巧!类似安装QQ!
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Threading; using System.Xml; using System.IO; using System.IO.Compression; u
liulun
2022/05/09
4250
自制安装程序~单文件~可安装windows服务~技巧!类似安装QQ!
php案例 重命名文件
作者:陈业贵 华为云享专家 51cto(专家博主 明日之星 TOP红人) 阿里云专家博主 文章目录 代码 index.php 效果: 之前的 之后的 代码 index.php <?php //重命
贵哥的编程之路
2022/09/29
1.2K0
php案例 重命名文件
EditRename文件重命名工具
一款文件重命名工具。通过在文本编辑器中直接编辑多个文件的文件名来重命名文件,非常灵活,堪比一些强大的重命名工具,但更加易用。
季春二九
2023/03/24
1.1K0
EditRename文件重命名工具
python 图片重命名_python批量重命名文件
** 一个简单的python 脚本,用于图片批量重命名,非常简单但是也非常使用!
全栈程序员站长
2022/10/03
3.5K0
python 图片重命名_python批量重命名文件
文件批量重命名
# 把当前文件夹的所有文件重命名为 WF .... # 把这个路径下的所有文件先查找到 -- 遍历所有文件 :有一个新的名字WF .. rename(旧,新) import os file_path = os.getcwd() list1 = os.listdir(file_path) print(list1) # 当前目录每个名字前面加'WF ' for name in list1: new_name = 'WF ' + name os.rename(name, new_na
汪凡
2018/05/29
1.5K0
linux 重命名 文件夹_如何给文件批量重命名
上面的例子中,子模式 \d{4} 会捕捉4个连续的数字,捕捉的四个数字匹配模式对应 $1, 将会用于新的文件名。
全栈程序员站长
2022/09/30
7K0
linux 重命名 文件夹_如何给文件批量重命名
linux重命名文件和文件夹的区别_文件夹如何重命名
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/11/16
4.9K0
linux 文件重命名的命令是什么_linux移动文件并重命名
大家好,又见面了,我是你们的朋友全栈君。 就目前所知道的知识,有两种方法。 一、mv
全栈程序员站长
2022/09/30
5.6K0
cmd - 批量重命名文件
相信大家或多或少都遇到过类似的情况:从网上下载了好多图片(或者其他的文件),这些图片的名字往往都是些乱七八糟的字母数字的组合们想要一次性修改几十张上百张的图片的名字应该怎么办呢?
雨临Lewis
2022/01/11
2.8K0
cmd - 批量重命名文件
在Oracle中,如何移动或重命名数据文件?
其实利用OS拷贝也可以联机操作,不关闭数据库,但是只针对可以OFFLINE的数据文件,步骤如下所示:
AiDBA宝典
2023/04/27
1.8K0
在Oracle中,如何移动或重命名数据文件?
Python对文件进行重命名
import ossrcFile = './actwork/linkFile/allExtLinks - 副本.txt'dstFile = './actwork/linkFile/allExtLinks - copy.txt'try: os.rename(srcFile,dstFile)except Exception as e: print(e) print('rename file fail\r\n')else: print('rename file success\r\n')
狼啸风云
2020/10/28
1.5K0
使用shell对文件重命名
需要把上面2018年度下面的每个子目录的文件重命名,命名规则是就是改为1.jpg到n.jpg
咪啪咪啪
2019/11/15
1.1K0
点击加载更多

相似问题

在安装部分自制公式中重命名文件

23

自制安装公式文件

22

当我编写自制公式时,我如何决定将安装哪些文件?

12

安装软件包的自制公式

10

自制公式语法

22
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文