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-320386

Arronical's questions

Martin Hope
Arronical
Asked: 2019-03-23 04:51:27 +0800 CST

文本处理 Aptly 输出文件

  • 5

我有一个由存储库管理工具的输出生成的文本文件aptly,其中列出了我发布的存储库,我需要从中提取信息。

文件格式如下:

Published repositories:
 * test_repo_one/xenial [i386,amd64] publishes {main: [xenial-main_20190311]: Snapshot from mirror [xenial-main]: http//gb.archive.ubuntu.com/ubuntu/ xenial [src]}, {multiverse: [xenial-multiverse_20190311]: Snapshot from mirror [xenial-multiverse]: http//gb.archive.ubuntu.com/ubuntu/ xenial [src]}, {restricted: [xenial-restricted_20190311]: Snapshot from mirror [xenial-restricted]: http//gb.archive.ubuntu.com/ubuntu/ xenial [src]}, {universe: [xenial-universe_20190311]: Snapshot from mirror [xenial-universe]: http//gb.archive.ubuntu.com/ubuntu/ xenial [src]}
 * test_repo_one/xenial-security [i386,amd64] publishes {main: [xenial-security-main_20190311]: Snapshot from mirror [xenial-security-main]: http//gb.archive.ubuntu.com/ubuntu/ xenial-security[src]}, {multiverse: [xenial-security-multiverse_20190311]: Snapshot from mirror [xenial-security-multiverse]: http//gb.archive.ubuntu.com/ubuntu/ xenial-security[src]}, {restricted: [xenial-security-restricted_20190311]: Snapshot from mirror [xenial-security-restricted]: http//gb.archive.ubuntu.com/ubuntu/ xenial-security[src]}, {universe: [xenial-security-universe_20190311]: Snapshot from mirror [xenial-security-universe]: http//gb.archive.ubuntu.com/ubuntu/ xenial-security[src]}
 * test_repo_two/trusty [i386,amd64] publishes {main: [trusty-main_20190312]: Snapshot from mirror [trusty-main]: http//gb.archive.ubuntu.com/ubuntu/ trusty[src]}, {multiverse: [trusty-multiverse_20190312]: Snapshot from mirror [trusty-multiverse]: http//gb.archive.ubuntu.com/ubuntu/ trusty[src]}, {restricted: [trusty-restricted_20190312]: Snapshot from mirror [trusty-restricted]: http//gb.archive.ubuntu.com/ubuntu/ trusty[src]}, {universe: [trusty-universe_20190312]: Snapshot from mirror [trusty-universe]: http//gb.archive.ubuntu.com/ubuntu/ trusty[src]}
...

输出的最后一行以新行结束。

“已发布的存储库:”行不是必需的。

对于以“*”开头的每一行,我需要删除无关信息,只留下快照名称。没有办法做到这一点aptly。这些行中的第一行的所需输出是。

test_repo_one/xenial [xenial-main_20190311] [xenial-multiverse_20190311] [xenial-restricted_20190311] [xenial-universe_20190311]

方括号也不是必需的,因此保留或删除它们的解决方案很好。我更喜欢sedorawk解决方案,但任何有效的东西都会受到高度赞赏。

sed text-processing awk
  • 3 个回答
  • 181 Views
Martin Hope
Arronical
Asked: 2018-07-28 02:52:40 +0800 CST

安装时如何生成sources.list 文件?

  • 4

我最近尝试从 Ubuntu 16.04 64 位服务器安装程序创建自定义 Ubuntu 安装程序 iso,目的是编辑/etc/apt/sources.list文件。我解压了 iso,扩展了 squashfs 文件系统,chroot 到其中并编辑了/etc/apt/sources.list文件。然后我重新打包了文件系统,重新生成了 md5sum 并生成了一个新的 iso 映像。这一切似乎都有效,iso 映像可以启动并用于安装 Ubuntu。

这样做时,我注意到我正在编辑的 sources.list 文件比普通的源文件小得多。它仅包含 archive.ubuntu.com 镜像的“主要”组件,以及安全和更新镜像的类似条目。当我从新的 iso 安装时,该/etc/apt/sources.list文件是我习惯看到的完整文件,包含所有存储库组件,例如 Universe 等。源文件似乎也基于我的位置,因为所有条目都使用 gb.存档.ubuntu 网址。

我假设我只编辑了安装过程中使用的文件,这不会影响最终安装中的实际源文件。

/etc/apt/sources.list安装操作系统时文件的最终版本是如何生成的,不重新编译apt可以影响这个吗?

ubiquity apt iso software-sources custom-installer
  • 1 个回答
  • 1247 Views
Martin Hope
Arronical
Asked: 2018-05-08 01:06:32 +0800 CST

是什么导致了这个 ClamAV 错误?

  • 0

我在脚本中使用 ClamAV 来扫描选择的目录。使用的命令是clamscan -ri "$dir". 最近我遇到了以下错误消息:

LibClamAV Warning: SWF: declared output length != inflated stream size, 169900 != 25538

它不会导致致命错误,并且只出现一次,尽管我无法确定是哪个目录产生了这个错误。

在 Ubuntu 14.04 服务器上使用 ClamAV 0.9.33/24547。

libraries antivirus clamav
  • 1 个回答
  • 1198 Views
Martin Hope
Arronical
Asked: 2017-05-19 03:09:51 +0800 CST

如何在不同行的两个模式之间替换文本?

  • 6

我有几个需要替换文本的文件。文本每次都以相同的模式开始和结束,但模式之间的内容是可变的。图案可以出现在行的中间,它们之间的内容往往跨越多行。

每个文件中只会出现一次开始和结束模式。

我需要一个命令行方法来替换模式之间的文本,包括模式本身。输出到新文件或就地编辑都可以。

对单个文件进行操作的命令将起作用,因为我可以遍历文件并自己应用命令。我尝试了一个sed解决方案,但只能设法替换整行。

文本的一个例子是:

Cable Type ID:135, Installation ID:62, Alpha Conductor Origin:
Tolerance Report B74 - 3rd June 1996, Beta Conductor Origin: 
Tolerance Report B74 - 3rd June 1996, Phase Conductor Size: 
45mm, Security: Security-Start Bs86gKI-734Lw#32_nP/5589Zfb8Wj-
sW93j9b Security-End, Location ID:889, Protective Earth Size:
67mm, Protective Earth Max Current (A): 4, Overload Time...

开始模式是Security-Start,结束模式是Security-End。我想用单词替换模式和所有内容REDACTED。

我希望输出为:

Cable Type ID:135, Installation ID:62, Alpha Conductor Origin:
Tolerance Report B74 - 3rd June 1996, Beta Conductor Origin: 
Tolerance Report B74 - 3rd June 1996, Phase Conductor Size: 
45mm, Security: REDACTED, Location ID:889, Protective Earth Size:
67mm, Protective Earth Max Current (A): 4, Overload Time...

请注意,两种模式之间的文本可能很长,以至于跨越了几行,它的长度是相当随机的。这在上面的例子中不清楚

任何在 Ubuntu 系统上默认可用的语言都可以。我的第一个想法是“sed”或“awk”,但无论你喜欢什么都可以。

command-line
  • 4 个回答
  • 14715 Views
Martin Hope
Arronical
Asked: 2017-03-17 07:57:29 +0800 CST

如何查找挂载点上挂载的设备类型?

  • 4

如果我知道某种设备的安装路径,我如何通过可编写脚本的 bash 方法获取确定设备类型的信息?

举个例子,假设我的挂载点是/mnt/drivex,我知道我已经使用了一些东西:

mountpoint /mnt/drivex

其中返回了有用的信息/mnt/drivex is a mountpoint。这可以是 USB 驱动器、内部驱动器上的分区或网络驱动器,例如 Samba 或 NFS 驱动器。

我尝试使用 fstype 和源输出df:对于 samba:

$ df --output=fstype /mnt/drivex | tail -n1
 cifs
$ df --output=source /mnt/drivex | tail -n1
 //server/SHARE

内部分区:

$ df --output=fstype /mnt/drivex | tail -n1
ext4
$ df --output=source /mnt/drivex | tail -n1
/dev/sdb2

我想如果它是块设备,那么我可以lsblk使用设备名称进行查询。

如何确定安装的驱动器类型?理想情况下,在识别驱动器类型时,输出一个简单的字符串,例如“Samba”或“USB”,可以将其保存到变量中。

command-line
  • 1 个回答
  • 415 Views
Martin Hope
Arronical
Asked: 2017-03-04 02:50:37 +0800 CST

我可以在 EFI 引导分区中使用符号链接吗?

  • 0

我最近使用 EFI 引导在 VirtualBox 中创建了一个 Ubuntu 14.04 服务器 64 位 VM。启动虚拟机时,我被放到 EFI shell 中,因为它可能找不到正确的 .efi 文件来启动。

Ubuntu 在/boot/efi/EFI/grubx64.efi. 我可以使用以下命令告诉 EFI shell 从该文件启动:

fd0:\efi\ubuntu\grubx64.efi

但是,我不想每次启动 VM 时都这样做。所以我将 tha 文件复制到/boot/efi/EFI/boot/bootx64.efi. 现在无需任何进一步输入即可成功启动。

我担心该/boot/efi/EFI/grubx64.efi文件将在正常的 Ubuntu 更新过程中更新,这意味着新/boot/efi/EFI/boot/bootx64.efi文件将与它不同步,除非我记得复制它。

是否可以使用符号链接或其他方法来确保在更新原始文件时,我的副本/boot/efi/EFI/grubx64.efi反映了任何更改?

boot
  • 2 个回答
  • 1734 Views
Martin Hope
Arronical
Asked: 2017-02-04 04:43:04 +0800 CST

如何将数组元素发送到命令的标准输入?

  • 4

我有一个命令可以从标准输入接收文件路径列表,换行符分隔。我将这些文件路径存储在一个数组中。我应该如何将数组元素发送到命令?

我使用了以下方法,但有一种模糊的感觉,我没有有效地做到这一点:

files=("/first/file" "/second/file" "/some/directory" "/file/with spaces")
for i in "${places[@]}" ; do echo "$i" ; done | command ...
command-line
  • 1 个回答
  • 1359 Views
Martin Hope
Arronical
Asked: 2017-01-25 05:40:22 +0800 CST

我应该如何使 date 命令使用与 rdiff-backup 相同的格式?

  • 0

该rdiff-backup命令通过创建多个标题中带有日期戳的文件来创建增量备份。日期戳的格式在W3 Note about datetime中定义,本质上是:

完整的日期加上小时、分钟和秒:

YYYY-MM-DDThh:mm:ssTZD(例如 1997-07-16T19:20:30+01:00)

中间的 T 是文字“T”,表示时间从此时开始。

我希望能够使用该date命令镜像这种格式。到目前为止,我有:

date '+%FT%T%:z'

如果我在 GMT/UTC 以外的任何时区,它会非常有效,并以预期的格式提供输出。

在 GMT/UTC 时区时,末尾的时区字符串应输出为字母Z而不是当前的+00:00.

我确信我可以通过使用单独的date命令获取时区部分并在它匹配 +00:00 时更改它,或者如果我将字符串保存为变量,或者甚至使用tr. 命令选项中是否有直接的方法date,如果没有,我应该如何简单地实现这一点?

command-line
  • 1 个回答
  • 867 Views
Martin Hope
Arronical
Asked: 2016-11-15 06:27:38 +0800 CST

如何检查分区是否通过 UUID 挂载?

  • 17

如果我有驱动器分区的 UUID,我将如何使用命令行来确定它是否已挂载?

command-line
  • 9 个回答
  • 8861 Views
Martin Hope
Arronical
Asked: 2016-11-11 03:02:43 +0800 CST

如何将分区的磁盘使用百分比捕获为整数?

  • 17

我想要一种通过使用分区安装的目录来捕获特定分区的磁盘使用情况的方法。输出应该只是一个没有填充或后面符号的整数,因为我想将它保存在一个变量中。

我使用过df --output=pcent /mount/point,但需要修剪输出,因为它有一个不必要的标题、值前的单个空格填充,以及值后面的 % 符号,如下所示:

Use%
 83%

在这种情况下,我想要的输出只是83. 我不知道使用 的输出有任何缺点df,但很高兴接受其他不依赖它的方法。

command-line
  • 7 个回答
  • 12951 Views
Martin Hope
Arronical
Asked: 2016-11-09 02:01:54 +0800 CST

可以为单个命令设置 Bash shell 选项吗?

  • 6

我喜欢可以为单个命令设置变量的方式,例如:

LANG=fr_FR.utf8 df -h

是否可以使用shopt -s命令或其他方法以相同的方式为单个命令设置 shell 选项,例如 nullglob 或 extglob?

command-line
  • 1 个回答
  • 2969 Views
Martin Hope
Arronical
Asked: 2016-11-05 07:11:04 +0800 CST

如何在 bash 脚本中的目录名称中找到最新的时间戳?

  • 3

我有一些带有时间戳的目录,其前缀可能会有所不同,时间戳以方便的 YYYYMMDD 形式命名,后跟不同的后缀,这些后缀也表示时间顺序(不是以最理智的方式)。不幸的是,名称的标题部分可以包含_用作字段分隔符的字符。

例如:

/collect/mydir_20161102_0A
/collect/mydir_20161102_0B
/collect/mydir_20161102_0C
/collect/mydir_20161102_1
/collect/mydir_20161102_2
/collect/other_dir_20161103_0A
/collect/other_dir_20161103_0B
/collect/mydir_20161104_0A
/collect/mydir_20161104_0B
/collect/mydir_20161104_0C
/collect/mydir_20161104_1
/collect/mydir_20161104_2

这里显示的名字顺序其实就是创建的时间顺序,包括后缀,所以0A在0B之前,0在1之前。不应该出现不同标题前缀相同时间戳的情况。

目录自创建以来可能已更改或修改,因此不再使用 ctime 和 mtime。

我需要输出包含标题和时间戳的字符串,有或没有前面的路径 so mydir_20161104or /collect/mydir_20161104,但这必须始终来自最近的目录。搜索不应通过目录级别递归。

我也想避免解析ls!

command-line
  • 1 个回答
  • 1373 Views
Martin Hope
Arronical
Asked: 2016-11-04 05:37:27 +0800 CST

如何根据另一个字段的内容替换文件中的特定字段?

  • 4

我有一个格式如下的文件:

A 485C72F95C72E15C EXTERNAL
B CC32480A3247F84A SYSTEM
C EC2A63F12A63B76C EXTERNAL

我想使用变量“字母”的值提供第一列中的字母,并用我在变量“id”中提供的值替换第二列中的值。在任何情况下,第三列可能不同或匹配,也可能不匹配。第一列和第二列永远不会包含空格或特殊字符。

我试过用sed,但我的 sed-fu 不强。我想出了这个:

letter=A
id=MYNEWIDSTRING
sed "/$letter /s/[^ ]*/$id/2"

输出是:

A MYNEWIDSTRING EXTERNAL
B MYNEWIDSTRING SYSTEM
C EC2A63F12A63B76C EXTERNAL

id 被替换为两行,我假设这是由于 'A' 在原始 id 字符串的末尾匹配。

我知道使用sed -i就地编辑文件,但还没有这样做,因为我的命令仍然有点狡猾。

我哪里出错了,或者我应该使用不同的方法?

command-line
  • 2 个回答
  • 5912 Views
Martin Hope
Arronical
Asked: 2016-10-01 04:09:01 +0800 CST

有没有办法让 cut 命令只读取最后一个字段?

  • 20

我有一个以空格分隔的字符串,它由一个命令输出,我喜欢通过管道传送到cut,-fd ' '用于分割空格。我知道我可以-f <n>用来显示字段编号<n>,但是如果我不知道字符串的长度,我可以让它显示最后一个字段吗?

还是我需要使用更灵活的文本编辑工具,例如sedor awk?

command-line
  • 4 个回答
  • 32957 Views
Martin Hope
Arronical
Asked: 2016-09-15 06:57:57 +0800 CST

如何在 bash 脚本中将函数的输出设置为变量值?

  • 6

在我的 bash 脚本中,我有以下函数来计算目录中的文件数。

file_count() {
  no_of_files=$(find "$1" -maxdepth 1 -type f -printf '.' | wc -c)
}

我想在不同的目录上重复使用它并将计数保存到每个目录的变量中。目前为此,我使用

file_count $somedir
files_in_somedir="$no_of_files"

我知道我no_of_files每次都在函数之外设置变量,并且希望将其设置为函数的本地变量,而不是在主脚本中设置中间变量。这是以防万一有一些错误意味着变量在函数调用之间没有改变(可能是函数名输入错误),并且使用了旧值no_of _files。

如果我的功能是:

file_count() {
  local no_of_files=$(find "$1" -maxdepth 1 -type f -printf '.' | wc -c)
}

我将如何轻松设置这些目录计数变量?

command-line
  • 2 个回答
  • 20071 Views
Martin Hope
Arronical
Asked: 2016-08-10 05:58:51 +0800 CST

如何从单独的非子 Bash 脚本访问 Bash 数组?

  • 4

我有一个在 Bash 脚本中创建的数组。在其中获取我想要的信息需要做一些工作,而且它是一个在其他脚本中非常有用的数组。我不想通过所有其他脚本复制代码。其他脚本不会作为该脚本的子脚本启动,因此export在这里不会有任何帮助。

访问此数组以获取创建它的脚本的唯一明智方法是什么?还有另一种方法吗?

command-line
  • 1 个回答
  • 256 Views
Martin Hope
Arronical
Asked: 2016-07-28 04:22:18 +0800 CST

如何在 bash case 语句中使用条件构造?

  • 1

我需要使用 Bash shell 检查从包装脚本中启动的两个子脚本的返回码。

如果任一下标失败,它们将产生一个负整数作为返回码。如果脚本有小错误,它将产生一个正整数。我执行完全成功,返回码将为 0。

我想根据结果创建一个变量以具有另一个变量的内容。目前我正在使用一个又大又丑的if elif构造,但感觉我应该使用一个case语句。

这是我当前的代码:

if [[ "$sumcreate_retval" -lt "0" ]] && [[ "$movesum_retval" -lt "0" ]]
then
   script_retcode="$both_warn_err"
elif [[ "$sumcreate_retval" -gt "0" ]] && [[ "$movesum_retval" -gt "0" ]]
then
   script_retcode="$both_crit_err"
elif [[ "$sumcreate_retval" -gt "0" ]] && [[ "$movesum_retval" -lt "0" ]]
then
   script_retcode="$createwarn_movecrit_err"
elif [[ "$sumcreate_retval" -gt "0" ]] && [[ "$movesum_retval" -eq "0" ]]
then
   script_retcode="$createwarn_err"
elif [[ "$sumcreate_retval" -lt "0" ]] && [[ "$movesum_retval" -gt "0" ]]
then
   script_retcode="$createcrit_movewarn_err"
elif [[ "$sumcreate_retval" -lt "0" ]] && [[ "$movesum_retval" -eq "0" ]]
then
   script_retcode="$createcrit_err"
elif [[ "$sumcreate_retval" -eq "0" ]] && [[ "$movesum_retval" -gt "0" ]]
then
   script_retcode="$movewarn_err"
elif [[ "$sumcreate_retval" -eq "0" ]] && [[ "$movesum_retval" -lt "0" ]]
then
   script_retcode="$movecrit_err"
else
   script_retcode="$success_return"
fi

我应该如何重组这个?

注意:如果这个问题更适合另一个 SE 站点,请告诉我。

command-line
  • 2 个回答
  • 176 Views
Martin Hope
Arronical
Asked: 2016-07-27 06:23:33 +0800 CST

如何显示文件的修改时间?

  • 65

我想要一种方法来查找和打印文件的修改时间,以便在 bash 脚本中使用。

我想出了:

ls -l $filename | cut -d ' ' -f '6-8'

哪个输出:

Jul 26 15:05

虽然我想避免 parsing ls,但在里面放一年也是有用的。

理想情况下,我希望看到类似于date命令默认输出的输出。

Tue Jul 26 15:20:59 BST 2016

还有哪些有用的方法?

command-line
  • 2 个回答
  • 119963 Views
Martin Hope
Arronical
Asked: 2016-07-02 02:43:19 +0800 CST

如何限制 SCP 尝试连接的时间?

  • 2

我有一个 bash 脚本,它通过将“to_send”目录中的任何文件复制到远程服务器scp。该脚本scp对每个文件运行一个命令,检查返回码,如果成功,则将本地版本从 to_send 目录移动到“sent”目录。如果不成功,文件将保留在“to_send”目录中,准备在下次运行脚本时尝试发送。

使用scpURL 和非标准端口号通过 Internet 连接发送。我有一个问题,如果无法连接到远程服务器,则scp命令的每个实例大约需要两分钟才能确定它无法连接。如果只有一个文件要发送,这不是一个可怕的开销,但如果有多个文件要发送,则会导致问题。

有没有办法限制连接尝试将继续尝试多长时间?也许通过将选项传递ssh给-o选项scp?

networking
  • 1 个回答
  • 1533 Views
Martin Hope
Arronical
Asked: 2016-06-17 02:50:15 +0800 CST

rsync over ssh 是否需要使用 UDP?

  • 0

我有一个远程 rsync 备份到通过 ssh 运行的服务器,使用 NAT 在路由器上指定一个非标准的高编号端口。

可以只打开路由器上的端口,服务器上的ssh端口,TCP连接,还是需要使用UDP?

networking
  • 1 个回答
  • 1699 Views

Sidebar

Stats

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

    如何运行 .sh 脚本?

    • 16 个回答
  • Marko Smith

    如何安装 .tar.gz(或 .tar.bz2)文件?

    • 14 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Martin Hope
    Flimm 如何在没有 sudo 的情况下使用 docker? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

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

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve