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

Daniel Kaplan's questions

Martin Hope
Daniel Kaplan
Asked: 2025-04-02 02:58:39 +0800 CST

使用 bash 历史扩展,当命令不是最近的命令时,您可以替换上次运行命令的第一个参数吗?

  • 6

GNU History Expansion 参考缺少示例,所以我无法判断这是否可能。

这是我想要做的。我跑了cat long/path/to/file1.txt | less,然后我跑了vim file2.txt。使用历史扩展,我想跑cat even/longer/path/to/file3.txt | less但我不想:

  • 键入long/path/to/file1.txt,因为键入不方便。
  • 用数字引用前一个命令;我想用字符串引用它。即使用!cat...,但不!-2...

这能做到吗?


这是我尝试过的(没有效果):

!cat:^!cat:1^even/longer/path/to/file3.txt^

这是我的思考过程:

  1. !cat- 替换以字符串开头的最后一个命令cat。
  2. :^x^y^-在该命令中 替换x为y
    1. !cat:1- 扩展到最后cat一条命令的第一个参数,即long/path/to/file1.txt
    2. even/longer/path/to/file3.txt– 扩展文本的替换

这不起作用的一个明显原因是我在扩展中嵌套了扩展:!cat:1被解释为文字字符串。

我得到这个输出:

long/path/to/file1.txtlong/path/to/file1.txteven/longer/path/to/file3.txt^: No such file or directory
bash
  • 2 个回答
  • 48 Views
Martin Hope
Daniel Kaplan
Asked: 2024-01-04 11:19:43 +0800 CST

如何在没有 bash 内置的“kill”干扰的情况下阅读 Cygwin 的“/bin/kill”手册页?

  • 5

我在 Windows 10 上使用 Cygwin,但也将 Ubuntu 与 WSL2 一起使用。我无法用后者重现这一点。当我输入man killcygwin 时,它说No manual entry for kill. 当我输入 时man /bin/kill,它似乎显示了正确的文件,但它夹在二进制乱码之间:

在此输入图像描述

我该如何运行man才能正确查看此页面?

windows
  • 1 个回答
  • 42 Views
Martin Hope
Daniel Kaplan
Asked: 2022-09-22 17:15:28 +0800 CST

运行命令时如何/应该默认标志?

  • 1

对于上下文,我使用的是 zsh。每次我使用locate时,我都想传递-i和-A标志。

通常,如果我能摆脱它,我会创建一个alias与现有命令同名的命令来执行此操作。但是根据这个问题,别名不能接受参数,所以我必须改用函数。通常我停在那里,因为与命令同名的函数的想法对我来说是错误的,尽管我不能说为什么。

当我有这个想法时,我正要最终创建这样一个函数:这对我来说是一个常见的模式,想要为命令默认标志;有没有更简单的方法?也许 zsh 为这个问题提供了更好的解决方案?

这让我想到了另一个想法:覆盖现有命令是一种反模式吗?我一直这样做是因为它允许我跳过脑海中的关联:例如,“为什么没有ll页面man?哦,是的:ll真的意味着ls -la。我需要做man ls,而不是man ll。等等。”

总结一下:

  1. 用别名/函数覆盖现有命令是否可以/惯用?
  2. zsh 或其他工具是否为特定命令的默认标志提供了更直接的方法?
zsh alias
  • 2 个回答
  • 44 Views
Martin Hope
Daniel Kaplan
Asked: 2022-09-21 16:09:42 +0800 CST

updatedb 可以为未插入的可移动驱动器保留本地路径吗?

  • 2

我像这样运行updatedb:updatedb --localpaths="/a /b"

/a是可移动驱动器。/b是本地硬盘。尽管/a我并不总是可以访问 ,但我经常想运行locate以查找是否有某个文件(基于我上次运行的时间updatedb)。

问题是,如果我updatedb在未插入的情况下运行,则会收到错误消息:

/usr/bin/find: '/a': No such file or directory

数据库获取有关 的最新信息/b,但会删除/a的现有数据。有没有办法在没有插入/a时保留数据?/aupdatedb

我认为这可能通过多个数据库实现,一个/a用于/b. /a然后脚本可以在决定是否插入时检查是否插入updatedb。

但是这两个命令的手册页都假设我知道的比我知道的多得多(例如,做什么FINDOPTIONS),所以我希望有一个更简单的解决方案来解决这个问题。

bash ubuntu
  • 1 个回答
  • 27 Views
Martin Hope
Daniel Kaplan
Asked: 2022-04-28 12:07:02 +0800 CST

管道查找输出时如何处理奇怪的路径字符?

  • 1

我有一个问题,我想从find命令中找到每条路径的长度。我的第一次尝试是运行这样的东西:

find . -exec sh -c "echo {} | wc -c" \;

我从这个答案中得到了这个想法。(上面的命令不是我的问题,我只是用它作为一个例子,它完全是人为的。另外,有时我可能需要多个管道。)

但是当我运行它时,输出中有错误,可能是由于输出路径中的特殊字符。不幸的是,我不知道哪些路径导致了问题,并且错误消息没有提供信息。不管...

我后来偶然发现了这个答案:

find命令直接执行命令。该命令(包括文件名参数)不会被 shell 或任何其他可能修改文件名的东西处理。这是非常安全的。

这似乎很方便。事实上,如此方便,以至于-exec sh -c ...“治愈”似乎比疾病更糟糕。

所以我的问题是,当我需要使用管道命令find并且我的路径可能包含特殊字符时,我该怎么办?这个问题是否有一个通用的解决方案,我不必考虑一堆警告?我正在使用 bash。


注意:这是一个类似的问题:如何最好地将 find + exec 命令的输出发送到管道?不同之处在于,我不一定要尝试将输出输出到-exec. 即,如果find ... -exec ... foo {} | bar \;是要走的路,那对我来说很好。我只是在寻找阻力最小的通用路径,命令的结构对我来说并不重要。

bash find
  • 2 个回答
  • 66 Views
Martin Hope
Daniel Kaplan
Asked: 2022-03-25 22:20:44 +0800 CST

从 grep 的输出中删除匹配模式?

  • 1

使用 bash,我正在运行:declare -p | grep 'declare -- '打印整行。我想打印那些相同的行,但我想排除匹配本身。即,我可以... | grep pattern | sed 's/pattern//'作为单个命令执行吗?这将与-o选项相反。

我的命令输出这个:

...
declare -- MAX_CONNECTIONS_PER_SERVER="6"
declare -- OPTERR="1"
declare -- OSTYPE="linux-gnu"
...

但我想输出这个:

...
MAX_CONNECTIONS_PER_SERVER="6"
OPTERR="1"
OSTYPE="linux-gnu"
...

通常情况下,我只是将它传送到sed,但巧合的是,我今天想这样做两次。我查看了手册页,但没有看到任何可以执行此操作的选项。

在匹配模式之后只返回一行的一部分是一个非常相似的问题。也许它甚至是重复的。有人可能会争辩说我的范围更窄一些:可以保证我正在抓取的模式和我正在删除的模式是相同的。我想删除x. 问题要删除.*x。

grep sed
  • 5 个回答
  • 1176 Views
Martin Hope
Daniel Kaplan
Asked: 2022-03-25 21:54:26 +0800 CST

如何打印在我的脚本中定义的所有变量的名称和值?

  • 2

我正在编写一个脚本,在这种情况下,如果我能看到所有脚本定义的变量名称和值的转储,它真的会帮助我。这是一个例子:

foo="1"
bar="2"

print_script_variables 

baz="3"

print_script_variables 

这将输出:

foo="1"
bar="2"

foo="1"
bar="2"
baz="3"

类似的东西print_script_variables存在吗?我觉得解析你正在执行的脚本是一件傻事。

如果这不存在,我只会手动输入一堆echo命令。这有点烦人,因为我想在进行print_script_variables故障排除时移动到放置的位置,而不必担心哪些变量会进入和超出范围。

这是一个 bash 脚本,但我在终端中使用 zsh,所以在这两种情况下都可以使用的东西是理想的。

bash shell-script
  • 1 个回答
  • 692 Views
Martin Hope
Daniel Kaplan
Asked: 2019-10-29 17:51:22 +0800 CST

如何将下一行的一部分合并到当前行?

  • 0

我有一个结构如下的文件:

M: a
M: b
Player: c
M: d
Sequencer.Play( SpineAnimation(foo, speaker)@0 )
Player: e
M: f
Sequencer.Play( SpineAnimation(bar, speaker)@0 )
...

如何将其转换为这样的文件:

M: a
M: b
Player: c
M foo: d
Player: e
M bar: f
...

换句话说,如果下一行有Sequencer.Play( SpineAnimation(...,我想把它后面的单词放在当前行的冒号之前。

不知道最好的工具是什么,我在想 awk,但话又说回来,我认为使用该工具会很麻烦。我愿意使用任何命令来完成此操作。我试图在这里做类似答案的事情:将两行合并为一个,从两者中选择选定的单词 但是这个问题似乎并不平凡,因为该Sequencer.Play行并不总是存在。

text-processing
  • 1 个回答
  • 40 Views
Martin Hope
Daniel Kaplan
Asked: 2018-07-31 10:09:17 +0800 CST

为什么空格作为换行符回显?

  • 2

我有这样的 JSON 数据:

[
  {
    "loginId": "7638749",
    "customerprofileDetails": {
      "securityQuestions": [
        "What is your favorite sports team?",
        "What is your favorite song?",
        "Who is your favorite artist?"
      ]
    }
  }
]

我有一个脚本,我将该文件作为第一个参数传入。脚本如下所示:

for json in `cat $PWD/$1 | jq -cr '.[]'` ; do
    echo "$json"
done

出于某种原因,当我运行此脚本时,它会输出以下内容:

> fileFromJson.sh tmp2.json
{"loginId":"7638749","customerprofileDetails":{"securityQuestions":["What
is
your
favorite
sports
team?","What
is
your
favorite
song?","Who
is
your
favorite
artist?"]}}

为什么那里有那些换行符,是什么导致了这个问题?当我刚刚运行时cat $PWD/tmp2.json | jq -cr '.[]',它会打印在一行上。如果这很重要,我正在使用 MacOS。

bash echo
  • 2 个回答
  • 4394 Views
Martin Hope
Daniel Kaplan
Asked: 2018-07-28 11:11:24 +0800 CST

将 JSON 数组拆分为多个文件

  • 7

我有一个看起来像这样的文件:

[
  {
    "billingAccountNumber": "x",
    "paymentResponseObject": {
      "uiErrorDipslayMessage": "",
      "transactionStatus": "S",
      "transactionDescription": "",
      "transactionCode": "",
      "confirmationNumber": "1"
    }
  },
  {
    "billingAccountNumber": "y",
    "paymentResponseObject": {
      "uiErrorDipslayMessage": "",
      "transactionStatus": "S",
      "transactionDescription": "",
      "transactionCode": "",
      "confirmationNumber": "2"
    }
  },
  {
    "billingAccountNumber": "z",
    "paymentResponseObject": {
      "uiErrorDipslayMessage": "",
      "transactionStatus": "S",
      "transactionDescription": "",
      "transactionCode": "",
      "confirmationNumber": "3"
    }
  }
]

数据看起来并不完全像这样,而且我有三个以上的元素。根据这些数据,我想创建三个文件:x.json、y.json和z.json. 我希望每个文件的内容都是paymentResponseObject.

有没有办法做到这一点jq?我已经想出了如何在 中执行此操作awk,但它非常笨拙,我希望能够使用不同的模式重复此过程。我必须awk为每个模式重写 80% 的脚本。

files json
  • 3 个回答
  • 7092 Views
Martin Hope
Daniel Kaplan
Asked: 2018-07-27 15:35:56 +0800 CST

将一组文件重命名为每个文件中存在的字符串

  • 1

我有一组 json 文件。每个文件都包含一个 json 对象,并且它们都具有相同的架构。json 中有一个字段,我想将文件重命名为。我怎样才能做到这一点?

我想出了这个解决方案:

find . -name '*.json' | xargs -i mv {} $(cat {} | jq '.billingAccountList[0]' | tr -d \").json

但它不起作用,因为cat它试图解释 {}。我希望 xargs 会解释它。它给了我这个错误:

cat: {}: No such file or directory
awk xargs
  • 3 个回答
  • 123 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