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

joker's questions

Martin Hope
joker
Asked: 2019-01-29 12:01:38 +0800 CST

如果存在 tar 文件,则创建或更新

  • 4

今天当我想对指定目录中的所有文件和目录进行 tar 处理时遇到了这个问题。执行以下操作是不够的,因为隐藏文件(.不包括以 开头的文件):

tar -czvf ~/tarfile.tar.gz /path/to/dir/*

然后我想到了以下几点:

find /path/to/dir/* -execdir /bin/tar -czvf ~/tarfile.tar.gz '{}' +

但这还不够。如果execdir已达到命令留置权限制并且需要使用找到的其余文件集重新运行相同的命令怎么办?

因此,如果 tar 文件不存在,我需要一个选项或某种方法来创建它。如果存在,则附加到它。试图找到解决此问题的方法,但无法解决。想到了-r选项,但没有奏效,因为它需要存在已经创建的 tar 文件。

这是否意味着没有办法并且必须编写一个迷你脚本来完成这个逻辑?

find tar
  • 1 个回答
  • 3892 Views
Martin Hope
joker
Asked: 2019-01-11 12:04:59 +0800 CST

使用引号的命令差异(查找)

  • 3

我正在阅读手册页,find发现自己对以下命令感到困惑。一个和它对应的一个有什么区别。

  1. 以下两个命令有什么区别:

    find -execdir command "{}" \;
    find -execdir "command {}" \;
    

混淆的原因:我认为引用应该指示外壳将引用的部分作为一个块。因此,当我看到第二个时,我认为它会失败,因为没有命令command <file-name>。

  1. 以下两者有什么区别:

    find -execdir bash -c "command" "{}" \;
    find -execdir bash -c "command {}" \;
    

混淆的原因:根据我的理解,在第二个版本中将命令与花括号一起括起来应该作为一个整体传递给 bash 命令,并且find不应该用相应的文件名解释大括号。

  1. 以下两者有什么区别:

    find -execdir bash -c "something \"$@\"" {} \;
    find -execdir bash -c 'something "$@"' bash {} \;
    

据我了解,两者是相同的。将大括号传递给 shell,第二个版本,如何比第一个更安全。

更新

刚刚注意到问题#3 的第一个版本的命令不起作用!尝试了以下(没有工作):

find -execdir bash -c 'something \"$@\"' {} \; # changed external quotes to single ones.
find -execdir bash -c "something $@" {} \; # removed the inner quotes.
find -execdir bash -c 'something $@' {} \; # same as above but with outer single quotes instead.

我在这里想念什么?我相信我应该能够将大括号从包含命令的引号中去掉?

find command-line
  • 1 个回答
  • 333 Views
Martin Hope
joker
Asked: 2018-10-18 13:14:12 +0800 CST

find -execdir <command> + 如何工作?

  • 4

我知道针对指定的测试find -tests -execdir <command> '{}' ';'运行command每个匹配的文件。该命令在使用 时-execdir,在与匹配文件相同的父目录中执行(对于每个匹配文件),{}代表匹配文件的基本名称。

+现在的问题是:当使用而不是同时处理多个文件时,这是如何完成的';'?如果我使用find -tests -execdir <command> '{}' +,则所有文件都作为指定命令的参数提供(以不超过最大参数的方式)。find 如何<command>同时对所有这些执行?

find parallelism
  • 1 个回答
  • 2346 Views
Martin Hope
joker
Asked: 2018-10-15 11:34:44 +0800 CST

'find' -doc 中的 perm 示例

  • 1

我在这里阅读在线查找的官方文档。我遇到了以下部分(我将粗体部分加粗):

'-perm -444 -perm /222 ! -烫/111'

匹配每个人都可读的文件,至少设置了一个写入位(即,有人可以写入),但不能被任何人执行/搜索。请注意,在某些 shell 中,'!' 必须转义;

'-perm -a+r -perm /a+w ! -烫发/a+x'

如上。

'-perm -g+w,o+w'

如上。

我认为最后一个例子与前两个不一样。它不应该像上面那样。它应该像“匹配他们的组和每个人都可写的文件”。

这个对吗?还是我错过了什么?

find permissions
  • 1 个回答
  • 258 Views
Martin Hope
joker
Asked: 2018-10-11 04:41:43 +0800 CST

查找和符号链接

  • 4

我正在浏览 find 的文档以更好地利用命令用法。

我正在阅读说

GNU find 将以两种方式之一处理符号链接;首先,它可以为您取消引用链接 - 这意味着如果遇到符号链接,它会检查链接指向的文件,以查看它是否符合您指定的标准。其次,它可以检查链接本身,以防您正在寻找实际链接。如果符号链接指向的文件也在您使用 find 命令搜索的目录层次结构中,那么您可能看不出这两种选择之间有很大的区别。

默认情况下,find 在找到符号链接时会自行检查它们(如果稍后遇到链接到的文件,它也会检查)。

据我了解,如果我这样做:

find -L -iname "*foo*"

这将递归搜索当前目录,当它遇到符号链接时,它会跟随原始文件的链接。如果原始文件的名称为 pattern *foo*,则报告前一个链接。

然而,情况似乎并非如此。我有

main-file
sl-file -> main-file

运行上面的命令find -L -iname "*main*"报告

./main-file

我期待着

./main-file # because it matches the criterion
./sl-file   # because the file points to matches the criterion

话虽如此,使用另一个测试就像-type我所期望的那样工作。说我有这个:

main-file
dir/sl-file -> ../main-file

运行这个

find dir -type f

什么都不返回。但是这个

find -L dir -type f

报告dir/sl-file。

是什么赋予了?

我看过这篇文章,说文件名不是文件属性。这是我无法真正理解的事情。

linux command-line
  • 1 个回答
  • 1729 Views
Martin Hope
joker
Asked: 2018-10-04 06:52:17 +0800 CST

在复制时,考虑的是:实际尺寸还是表观尺寸?

  • 0

我想知道我是否有一个表观大小为 1 GiB 但实际大小为 0 B 的文件是否可以复制到例如具有 512 kiB 可用空间的 USB 闪存盘?

您可以使用以下方法创建文件:

dd if=/dev/null of=big-file bs=1 seek=1GiB

现在您可以看到表观尺寸和实际尺寸:

du --apparent-size -hs big-file

注意:删除--apparent-size选项以获取实际大小。

所以,主要问题是:将文件复制到某个目录时,考虑的是哪个大小,是硬盘驱动器、USB 闪存棒、DVD 等?

file-copy size
  • 1 个回答
  • 201 Views
Martin Hope
joker
Asked: 2018-09-27 05:33:04 +0800 CST

bg 和 kill -CONT 的区别

  • 1

我在前台运行一个应用程序,然后通过点击CTRL+ Z(并停止)将其置于后台。为了让它重新运行,我运行了命令bg %1(这是它的 JOBSPEC)。

我想为什么不尝试让它运行回来kill -CONT <PID>。所以,我跑去jobs -l获取它的 PID,并将这个 pid 与带有 CONT 信号的 kill 一起使用。

然而,该节目并没有再次上线!jobs -l尝试用 CONT 杀死后报告它正在运行,但它不是(因为它是灰色的)。

我使用命令查看了应用程序 PID ps,发现两个具有不同 PID(和 status Tl)的相同命令。

然后我查看了同样的东西pstree,发现它们都在一个父进程下。父进程与列出的进程不同,jobs -l因为我放在后台的似乎启动了另一个程序。另一个程序似乎创建了子进程。

我注意到的总结如下:

  • 使用kill将 CONT 发送到父进程使程序运行。

  • 父进程 PID 与 报告的不同jobs -l。换句话说,我应该发送 CONT 信号的过程与我使用jobs -l.

  • 向父进程发送 CONT 不会对子进程应用相同的信号。

  • 使用命令bg返回一个进程运行,发送 CONT 信号给父进程的所有子进程。

我的结论正确吗?如果是这样,那么这意味着使用该命令bg将节省向每个相关进程发送 CONT 的时间。这是正确的吗?

编辑我从命令行调用并放在后台的主要应用程序是git difftool. 我正在谈论的另一个应用程序本身创建了新的子meld节点,我将其设置为用作 git 中的差异工具。

linux kill
  • 2 个回答
  • 2463 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