小编det*_*tly的帖子

在 sh 脚本中使用 sed 时需要转义哪些字符?

执行以下脚本:

#!/bin/sh
sed 's/(127\.0\.1\.1)\s/\1/' [some file]
Run Code Online (Sandbox Code Playgroud)

如果我尝试在sh( dashhere) 中运行它,它会因为需要转义的括号而失败。但是,我并不需要转义反斜线本身(八位位组之间,或\s\1)。这里的规则是什么?当我需要使用{...}或 时[...]呢?有没有我做什么和不需要逃避的清单?

sed shell-script quoting

346
推荐指数
3
解决办法
56万
查看次数

是否有命令可以查看磁盘安装位置?

是否有一个简单的命令将磁盘的设备节点作为输入,并告诉我该磁盘的安装位置(以及是否安装)?是否可以自己获取挂载点,以便我可以将其传递给另一个命令?

我正在使用最少安装的 Debian Squeeze 实时系统(如果需要,我可以安装额外的软件包)。

mount

34
推荐指数
3
解决办法
9万
查看次数

如何将 syslinux 配置为立即启动

我正在调整一个 Debian 实时系统(使用实时构建构建),我希望它从 syslinux 直接引导到系统中——没有菜单,没有超时。根据syslinux 文档,超时值为 0 表示禁用超时,即。如果没有用户干预,它根本不会启动,这与我想要的相反。

在我确实需要调整内核行的极少数情况下,能够按住一个键可能会很好,但这不是必需的。真的,我只想立即启动。我如何得到它?

当前的 syslinux 配置是这样的:

syslinux.cfg :

include menu.cfg
default vesamenu.c32
prompt 0
timeout 0
Run Code Online (Sandbox Code Playgroud)

菜单.cfg :

menu hshift 0
menu width 82

menu title Boot menu
include stdmenu.cfg
include live.cfg
include install.cfg
menu end
Run Code Online (Sandbox Code Playgroud)

标准菜单.cfg

menu background splash.png
menu color title    * #FFFFFFFF *
menu color border   * #00000000 #00000000 none
menu color sel      * #ffffffff #76a1d0ff *
menu color hotsel   1;7;37;40 #ffffffff #76a1d0ff *
menu color …
Run Code Online (Sandbox Code Playgroud)

boot-loader debian live-usb syslinux

10
推荐指数
1
解决办法
4万
查看次数

如何在 ConsoleKit 中激活当前会话?

我在 USB 驱动器上有一个实时的 Debian Squeeze 系统,其中包含我用来对另一个驱动器进行映像的脚本。此脚本用于udisks按标签安装驱动器,但它不适用于串行控制台。原因是与串行控制台关联的会话似乎不是“活动的”,这意味着udisks失败:

user@my-live-usb:~$ udisks --mount /dev/disk/by-label/image-data --mount-options ro
Mount failed: Not Authorized
Run Code Online (Sandbox Code Playgroud)

更改allow_any输入/usr/share/polkit-1/actions/org.freedesktop.udisks.policy没有帮助,所以我想知道如何告诉 ConsoleKit 串行控制台是“活动的”。尝试通过 DBUS 接口执行此操作失败:

user@my-live-usb:~$ dbus-send --system --print-reply --dest="org.freedesktop.ConsoleKit" /org/freedesktop/ConsoleKit/Session7 org.freedesktop.ConsoleKit.Session.Activate
Error org.freedesktop.DBus.GLib.UnmappedError.CkSeatError.Code0: Unable to activate session
Run Code Online (Sandbox Code Playgroud)

Session7 是在 /dev/ttyS0 上列出的那个。

那么如何让 ConsoleKit 将串行控制台识别为活动会话呢?

(就我而言,udisks 版本是 1.0.1+git20100614-3,consolekit 是 0.4.1-4。)

值得一提的是,Debian 实时系统会自动将实时用户登录到所有 6 个视频控制台和串行控制台上。

consolekit udisks

7
推荐指数
1
解决办法
4601
查看次数

如何递归地列出 apt 包的依赖项及其已安装的版本?

我想列出给定包的递归依赖项,以及每个依赖项的当前安装版本。我还希望每一行都有一个条目,因此它是可排序和可区分的。

基本上,比如说,tcpdump我希望输出看起来像:

libtext-wrapi18n-perl: 0.06-7
perl-base: 5.14.2-21+deb7u2
Run Code Online (Sandbox Code Playgroud)

...等等。每行的确切格式并不重要,重要的是差异和排序的能力。

APT中安装包的问题列表(递归)依赖项类似,但没有给出包版本。使用debfoster -d看起来很有希望,但它的输出不适合进一步处理。

apt package-management

6
推荐指数
2
解决办法
5596
查看次数

如何在不安装磁盘映像的情况下从磁盘映像中提取文件?

假设我有一个我有权读取的磁盘映像(可能已分区)。但是,我无权通过环回 * 挂载它。理论上,数据就在那里;我可以编写类似于 Linux 内核、分区编辑器和mount自己的代码来解析映像、查找分区、解释文件系统和提取文件的代码。但是对于 GNU/Linux 系统是否已经存在这样的工具?

*真的,我正在编写工具来处理它,我不想 (a) 假设这些工具的用户可以sudo和 (b) 要求他们去sudo可能不需要的地方。

(如果答案因文件系统而异,ext2-4对我来说更重要。但涵盖多个流行文件系统的答案将是首选。)

filesystems mount disk-image

5
推荐指数
2
解决办法
6531
查看次数

ioctl 调用会阻塞吗?

我正在围绕 libgpiod 的接口编写一些代码。比如我想设置一条线输出高电平。在底层,libgpiod 打开内核为该行提供的 fd,然后调用ioctl(fd, GPIO_V2_LINE_SET_VALUES_IOCTL, ...).

我的问题是:

  • 这个特定的ioctl()调用(带有GPIO_V2...参数)理论上(可能)是否会像写入任意文件描述符一样阻塞?

  • ioctl()理论上来说,呼叫通常会阻塞吗?例如,首先请求线路还涉及ioctl()芯片的 on a fd。I2C 怎么样ioctl()

  • fd如果它是阻塞的,那么行 struct ( ) 中的底层是否是line->fd_handle->fd我需要在事件循环中等待的底层(例如,epoll()或像 libuv 这样的抽象事件库)?

我试图通过研究来回答这个问题,但是(a)搜索“ioctl”和“blocking”的任何组合只会给出将fd设置为阻塞或不阻塞的结果,并且(b)它不在手册页或内核中我能找到的文档。

file-descriptors linux-kernel gpio ioctl

5
推荐指数
1
解决办法
2991
查看次数