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
    • 最新
    • 标签
主页 / user-106650

Marcus Müller's questions

Martin Hope
Marcus Müller
Asked: 2025-03-10 18:39:47 +0800 CST

zsh:用 substitute-if-undef-or-null 替代 $1、$2 …:${1:substitution} 不起作用

  • 5

我想要有标准参数,即我的最小可重复示例是:

#!/usr/bin/zsh
a=${1:a}
printf 'a: "%s"\n' "${a}"
b=${2:./build}
printf 'b: "%s"\n' "${b}"

我希望看到,当./demo.zsh不带参数运行时:

a: "a"
b: "./build"

相反我得到了

a: ""
./demo.zsh:4: bad floating point constant
  • 为什么${1:a}似乎假设$1设置并且非零,但$a展开后的却是空字符串?
  • 浮点错误解析从何而来?如果我./build用替换build,它会抱怨它b是一个未知的修饰符。

如果我跑./demo.zsh asdf bar,我会得到

a: "/tmp/fasf"
./demo.zsh:4: bad floating point constant

坦率地说,这更令人困惑;它/tmp/来自哪里(它是 cwd)。

zsh
  • 2 个回答
  • 76 Views
Martin Hope
Marcus Müller
Asked: 2024-07-27 02:14:41 +0800 CST

关机时运行一次更新 – systemd-run?

  • 7

我有一些东西不想在图形会话运行时更新,但很乐意在关机时(图形会话结束后,网络仍然开启时)更新它们一次。所以,我不想编写服务文件,启用它,然后在每次关机时运行它。

现在,我想,好吧,systemd-run来救援吧:

systemd-run \
           --property=Type=oneshot \
           --property=DefaultDependencies=no \
           --property=Requires=network.service \
           --property=WantedBy=shutdown.target \
           /usr/bin/dnf5 update -y package1 packge2…

但这失败了

Failed to start transient service unit: Dependency type WantedBy may not be created transiently.

还有其他方法吗?

shutdown
  • 3 个回答
  • 123 Views
Martin Hope
Marcus Müller
Asked: 2024-04-30 01:44:49 +0800 CST

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

  • 8

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 个回答
  • 61 Views
Martin Hope
Marcus Müller
Asked: 2023-11-03 06:40:44 +0800 CST

dnf5 支持并行元数据下载吗?我该怎么做?

  • 5

我很高兴dnf5在我的 fedora 38 上使用它。它既是一个用于依赖关系解析的新库,又是一个新的前端,取代了dnf/ libdnf(尽管几乎完全与 的 CLI 兼容dnf)。

它在执行诸如在包数据库中搜索单词之类的操作时速度要快得多,因此令人耳目一新。说到清爽:

我可以配置dnf5从不同的远程存储库(Fedora 38、Fedora 38、更新、Fedora 38 openh264、Fedora 38 非自由更新、rpm fusion 更新、rpm fusion 非自由更新……)并行下载元数据吗?

package-management
  • 1 个回答
  • 56 Views
Martin Hope
Marcus Müller
Asked: 2022-06-15 08:24:48 +0800 CST

如何告诉 gnome-session(3) 或 gnome-screensaver 有活动?

  • 2

在某些情况下,我不希望我的屏幕锁定。(通常情况下:当计算正在运行时,我会离开办公桌,但我不会离开房间并且仍然关注它为什么处于活动状态;有时,我会将更多任务添加到队列中,所以它不是“完成后完成”)

是否有机制告诉 GNOME 会话或 ~ 屏幕保护程序不要锁定?我期待有一个聪明的 DBUS API,但 GNOME 的文档似乎依赖于删除它的人的私人主目录:https ://wiki.gnome.org/Projects/SessionManagement/GnomeSession#D-Bus_API链接到 404 https://www.gnome.org/~mccann/gnome-session/docs/gnome-session.html。

更好的是:是否有用于此的 Freedesktop 标准化 API?我主要使用很棒的 WM 处理 Cinnamon 会话,但我遇到的这个问题主要是在我只能访问 Gnome 会话的机器上;但是,如果有一个万能的解决方案,我会非常喜欢。

gnome3 screen-lock
  • 1 个回答
  • 23 Views
Martin Hope
Marcus Müller
Asked: 2022-06-13 06:58:05 +0800 CST

我需要一个适用于我的 RHEL/EPEL/CentOS/Fedora 版本的软件包,但它仅适用于其他版本的 Redhatoids

  • 0

我经常遇到这样的情况:我将一些 Fedora 打包的软件反向移植到 CentOS,或者将一些旧版本的 EPEL 向前移植到 Fedora,反之亦然。

我怎样才能以最少的努力做到这一点?

centos fedora
  • 1 个回答
  • 64 Views
Martin Hope
Marcus Müller
Asked: 2022-05-19 00:50:30 +0800 CST

容器:无法开始喃喃自语(作为带有 gnome 会话的无头 Wayland 合成器)

  • 2

我想做的是拥有

  • 一个容器(最好是 OCI 容器),它可以在没有主机会话管理器接口“暴露”它的情况下工作,并且
  • 运行一个 Wayland 合成器
  • 有一个 >= gnome40 会话,包括其中的所有 UI 元素
  • 允许通过 RDP 或 VNC 进行远程显示和交互

因此,这分别指示/建议作为工具:

  • podman
  • mutter(正如 Gnome 想要的那样)
  • gnome-shell
  • gnome-remote-desktop, Gnome42 自带的

我目前正在做的是

podman run -it --rm -p 9999:9999 ubuntu:22.04
#           ^---------------------------------Interactive
#               ^-----------------------------Don't keep state after finishing
#                    ^------------------------We'll need a port fwd into the container for RDP/VNC
#                                ^------------Not a great fan of Canonical, but 22.04 brings Gnome42

root@container$> apt update; apt install -y mutter gnome-remote-desktop gnome-shell
[… [success]]

root@container$> mutter --no-x11 --wayland --headless --virtual-monitor 1600x1000 
mutter-Message: 10:30:35.151: Running Mutter (using mutter 42.0) as a Wayland display server
mutter-Message: 10:30:35.191: Created surfaceless renderer without GPU
mutter-Message: 10:30:35.205: Disabling DMA buffer screen sharing (not hardware accelerated)
mutter-Message: 10:30:35.205: Added virtual monitor Meta-0

(mutter:13413): mutter-WARNING **: 10:30:35.211: WL: error: XDG_RUNTIME_DIR not set in the environment
(mutter:13413): mutter-ERROR **: 10:30:35.211: Failed to create socket
root@container$> export XDG_RUNTIME_DIR=/run/user/0/ ; mkdir -p ${XDG_RUNTIME_DIR}
root@container$> mutter --no-x11 --wayland --headless --virtual-monitor 1600x1000 
mutter-Message: 10:30:47.657: Running Mutter (using mutter 42.0) as a Wayland display server
mutter-Message: 10:30:47.698: Created surfaceless renderer without GPU
mutter-Message: 10:30:47.712: Disabling DMA buffer screen sharing (not hardware accelerated)
mutter-Message: 10:30:47.712: Added virtual monitor Meta-0
mutter-Message: 10:30:47.717: Using Wayland display name 'wayland-0'
**
mutter:ERROR:../src/wayland/meta-wayland.c:379:set_gnome_env: assertion failed: (session_bus)
Bail out! mutter:ERROR:../src/wayland/meta-wayland.c:379:set_gnome_env: assertion failed: (session_bus)

[1]+  Aborted                 (core dumped) mutter --sm-disable --no-x11 --wayland --headless --virtual-monitor 1600x1000

不太确定从这里去哪里。我应该直接启动一个 gnome shell 吗?

# fresh container to avoid any conflicts
root@7396d1bb8693:/> gnome-shell --no-x11 --wayland --headless --virtual-monitor 1600x1000
mutter-Message: 10:45:06.276: Running GNOME Shell (using mutter 42.0) as a Wayland display server
mutter-Message: 10:45:06.323: Created surfaceless renderer without GPU
mutter-Message: 10:45:06.337: Disabling DMA buffer screen sharing (not hardware accelerated)
mutter-Message: 10:45:06.338: Added virtual monitor Meta-0
Failed to connect to session bus: Cannot autolaunch D-Bus without X11 $DISPLAYroot@7396d1bb8693:/>

也不行。

  • 如何在非特权容器中启动无头 gnome wayland 会话?
gnome wayland
  • 1 个回答
  • 423 Views
Martin Hope
Marcus Müller
Asked: 2022-01-10 04:36:37 +0800 CST

Bourne shell 兼容的`${#string}` 中字符串的“长度”是多少?

  • 2

来自这个讨论:

当我有(zsh 5.8,bash 5.1.0)

var="ASCII"
echo "${var} has the length ${#var}, and is $(printf "%s" "$var"| wc -c) bytes long"

答案很简单:这些是 5 个字符,占 5 个字节。

现在,var=Müller产量

Müller has the length 6, and is 7 bytes long

这表明${#}运营商计算代码点,而不是字节。这在 POSIX中有点不清楚,他们说它计算“字符”。char如果POSIX C 中的演员通常不是八位字节,这会更清楚。

总之:不错!不错,看到LANG==en_US.utf8了

现在,

var='??‍♀️'
echo "${var} has the length ${#var}, and is $(printf "%s" "$var"| wc -c) bytes long"
??‍♀️ has the length 5, and is 17 bytes long

太好了,我们将“深色皮肤的美人鱼”分解为 Unicode 代码点

  1. 人鱼
  2. 深色肤色
  3. 零宽度连接器
  4. 女性
  5. 打印将前一个字符打印为表情符号

好的,所以我们真的在计算 Unicode 代码点!

var="e\xcc\x81"
echo "${var} has the length ${#var}, and is $(printf "%s" "$var"| wc -c) bytes long"
é has the length 9, and is 9 bytes long

(当然,我的控制台字体决定了´组合与后面的空格,而不是前面e的 。后者是正确的。但让我们把我的愤怒留到其他地方吧。)

嗯,这里有一个轻微的“wat”。

> printf "e\xcc\x81"|wc -c
3
> printf "%s" "${var}" |wc -c
9
> echo -n ${var} |wc -c
3
> echo "${var} has the length ${#var}, and is $(printf "%s" "$var"| wc -c) bytes long"
é has the length 9, and is 9 bytes long
> printf "%s" "${var}" |xxd
00000000: 655c 7863 635c 7838 31                   e\xcc\x81

这就是我放弃的地方。

echo $var,echo ${var}并且echo "${var}"所有“正确”发出三个字节。但是,echo ${#var}告诉我它是 9 个字符。

这在哪里记录/标准化,这一切的规则是什么?

bash zsh
  • 1 个回答
  • 251 Views
Martin Hope
Marcus Müller
Asked: 2022-01-07 04:27:44 +0800 CST

Linux 命名管道:不像想象的那样先进先出

  • 10

简而言之:

mkfifo fifo; (echo a > fifo) &; (echo b > fifo) &; cat fifo

我所期望的:

a
b

因为第一个echo … > fifo应该是第一个打开文件的,所以我希望该进程是第一个写入它的进程(首先打开它的解锁)。

我得到什么:

b
a

令我惊讶的是,这种行为也发生在打开两个单独的终端以在绝对独立的进程中进行写入时。

我是否误解了命名管道的先进先出语义?

斯蒂芬建议添加延迟:

#!/usr/bin/zsh
delay=$1
N=$(( $2 - 1 ))
out=$(for n in {00..$N}; do
  mkfifo /tmp/fifo$n
  (echo $n > /tmp/fifo$n) &
  sleep $delay
  (echo $(( $n + 1000 )) > /tmp/fifo$n )&
  # intentionally using `cat` here to not step into any smartness
  cat /tmp/fifo$n | sort -C || echo +1
  rm /tmp/fifo$n
done)
echo "$(( $res )) inverted out of $(( $N + 1 ))"

现在,这 100% 正确(delay = 0.1, N = 100)。

尽管如此,mkfifo fifo; (echo a > fifo) &; sleep 0.1 ; (echo b > fifo) &; cat fifo手动运行几乎总是会产生相反的顺序。

事实上,即使复制和粘贴for循环本身也有一半的时间会失败。我对这里发生的事情感到非常困惑。

linux fifo
  • 2 个回答
  • 3542 Views

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