AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题 / 775488
Accepted
Marcus Müller
Marcus Müller
Asked: 2024-04-30 01:44:49 +0800 CST2024-04-30 01:44:49 +0800 CST 2024-04-30 01:44:49 +0800 CST

udisksctl:无需解析本地化输出即可获取循环设备和挂载点?

  • 772

udisksctl是我处理文件系统图像时选择的工具(最近的例子,但我一直在各处这样做)。

舞蹈通常看起来像

fallocate -l ${img_size} filesystem.img
mkfs.${fs} filesystem.img

# Set up loop device as regular user
loopback=$(udisksctl loop-setup -b "${img_file}" | sed 's/.* \([^ ]*\)\.$/\1/')

# Mount as regular user
mounted=$(udisksctl mount -b "${loopback}" | sed 's/^.* \([^ ]*\)$/\1/')

# Do the testing/benchmarking/file management
# e.g.:
cp -- "${files[@]}" "${mounted}"

坦率地说,我对解析输出的方式有一种不好的感觉udisksctl;这些显然是针对人类的字符串:

Mapped file filesystem.img as /dev/loop0.
Mounted /dev/loop1 at /run/media/marcus/E954-81FB

而且我认为没有人会考虑他们实际的格式“API”。所以,我的脚本将来可能会出问题!(更不用说如果图像文件名包含换行符,我还会招来鼻音恶魔。)

udisksctl似乎没有“瓷器”输出选项或类似选项。是否有现有方法可以udisksctl通过 udisks2 以用户权限完成回送安装,并且输出正确、明确的输出?

command-line
  • 1 1 个回答
  • 61 Views

1 个回答

  • Voted
  1. Best Answer
    MestreLion
    2024-06-15T13:19:44+08:002024-06-15T13:19:44+08:00

    我理解你的痛苦...我也喜欢 的无 sudo 功能udisksctl,我在几个 代码片段和项目中使用了 UDisks2 ,而且我也讨厌它的输出是多么“对机器不友好”。

    也就是说,我倾向于采用的一种方法是不解析的输出udisksctl mount,loop-*,...,仅将其用于操作,并将解析留给udisksctl info,udevadm甚至lsblk -lnpb(如果您愿意使用,甚至可以有 JSON 输出jq!)。

    如果您确实要解析udisksctl,至少应在其前面加上,LC_ALL=C以避免使用固定的C“虚拟”语言环境来使用本地化消息,这样至少可以保证匹配的字符串不会因用户环境而改变。

    例子:

    • 列出具有已知文件系统的驱动器设备的(可写)分区(如果有):
    lsblk "$device" -lnpb --output NAME,RO,FSTYPE | awk '$2 == 0 && $3 {print $1}'
    
    • 挂载后获取上述一个分区的挂载点:
    LC_ALL=C udisksctl info -b "$partition" | grep -Po '^ *MountPoints: *\K.*'
    

    不再搜索人类想要的消息!

    (或者更好的是,在这个2017 年仍然开放的脚本友好界面请求中表达你的声音)

    • 1

相关问题

  • ip 命令是否支持通配符?

  • 需要许多参数的实用程序的推荐界面是什么?[关闭]

  • 远程运行 X 应用程序,在远程主机上运行 GUI [关闭]

  • 使 mysql CLI 以交互方式向我询问密码

  • 没有服务器的命令行 pub/sub?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve