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
    • 最新
    • 标签
主页 / unix / 问题

问题[zsh](unix)

Martin Hope
Ahmad Ismail
Asked: 2025-04-23 07:34:46 +0800 CST

使用 zmv 递归重命名目录

  • 7

我正在尝试将所有文​​件夹_Oreilly(完全匹配)递归重命名为_OreillyFox

换句话说,我试图达到与以下相同的效果:

find . -depth -type d -name "_Oreilly" -execdir rename "s/_Oreilly/_OreillyFox/" {} \;

使用zmv。

我正在尝试的命令是:

zmv -n '(**/)_Oreilly' '${1}_OreillyFox'

我尝试了上述命令,并传入了文件名,但它成功重命名了它们。我只想重命名目录。

zsh
  • 2 个回答
  • 147 Views
Martin Hope
Ahmad Ismail
Asked: 2025-04-09 18:25:23 +0800 CST

光标停在单引号和双引号处

  • 5

我有一个像这样的zle:

function _ctrl-shift-left() {
    ((REGION_ACTIVE)) || zle set-mark-command # Selection
    zle backward-word
}

zle -N _ctrl-shift-left
bindkey '^[[1;6D' _ctrl-shift-left # Ctrl+Shift+Left to select till the beginning of the previous word.

例如下面的命令

$ curl -s "https://samplesite.com/101146/07/data-processing/13/?#/101146-132519042909.html" | grep -oP 'https://dl\d*\.samplesite\.com/Files/[^"]+\.rar' | sed 's/\?nocache=[^&]*//g'

当我按下时ctrl-shift-left,我想将光标停在'和处"。

我怎样才能做到这一点?

zsh
  • 2 个回答
  • 27 Views
Martin Hope
jsx97
Asked: 2025-03-31 00:27:31 +0800 CST

$0 和 $0:P 之间的实际差异

  • 3

当我在 zsh 中运行以下脚本时,和都$0给出$0:P相同的输出:/Users/john/scripts/test123.sh。

#!/bin/zsh
echo script\'s path:         $0
echo absolute path:          $0:P
echo parent folder:          $0:h
echo filename:               $0:t
echo filename w/o extension: $0:t:r
echo extension:              $0:t:e

但为什么会这样?是不是因为:P强制使用绝对路径(根据 zsh 文档),如果:P不使用,路径应该是相对的,例如~/scripts/test123.sh?

要运行该脚本,我首先要使其可执行:chmod a+rx test123.sh然后双击它或使用命令行。操作系统是 macOS。

zsh
  • 1 个回答
  • 49 Views
Martin Hope
jsx97
Asked: 2025-03-16 21:02:55 +0800 CST

zsh 配置文件中的变量

  • 4

假设您的 zsh 配置包含以下 Perl 行:

PATH="/path/to/your/home/perl5/bin${PATH:+:${PATH}}"; export PATH;
PERL5LIB="/path/to/your/home/perl5/lib/perl5${PERL5LIB:+:${PERL5LIB}}"; export PERL5LIB;
PERL_LOCAL_LIB_ROOT="/path/to/your/home/perl5${PERL_LOCAL_LIB_ROOT:+:${PERL_LOCAL_LIB_ROOT}}"; export PERL_LOCAL_LIB_ROOT;
PERL_MB_OPT="--install_base \"/path/to/your/home/perl5\""; export PERL_MB_OPT;
PERL_MM_OPT="INSTALL_BASE=/path/to/your/home/perl5"; export PERL_MM_OPT;

zsh 配置文件不是脚本,所以如果我理解正确的话,不可能在那里使用常规的 bash 样式变量。

但也许仍然有可能以某种方式为该/path/to/your/home/perl5/部分设置一个变量,以便更容易地更改所有五条线?

zsh
  • 1 个回答
  • 35 Views
Martin Hope
Woodstock
Asked: 2025-03-13 06:53:55 +0800 CST

使用 zsh-autocomplete 的 Vanilla tab 行为

  • 7

我正在使用 zsh-autocomplete ( https://github.com/marlonrichert/zsh-autocomplete ) 并尝试保持 Tab 补全“原始”状态(即展开或完成而不是选择顶部建议)。一切都运行良好,除了一个奇怪的故障:每当我输入 ~/ 时,它都会展开到 / 而不是我的 $HOME 目录。

我真的很想保持这种行为就像原始扩展一样,即多个选项卡完全明确并且不再进一步。

这是我的 ~/.zshrc 的相关部分:

# Load zsh-autocomplete
source /path/to/zsh-autocomplete.plugin.zsh

# Rebind Tab to normal Zsh expansion
bindkey '^I' expand-or-complete

尽管进行了这些设置,输入 ~/Docu 之类的内容仍会扩展为 /… 我尝试从配置中删除其他所有内容以隔离问题,但没有成功。有其他人遇到过这种情况或知道解决方法吗?

提前感谢任何指点或建议!

附言

此外,尽管这很接近,但它并没有提供“原始”选项卡行为。我本质上只是希望选项卡保持原样,没有 zsh-autocomplete。

zstyle ':autocomplete:*complete*:*' insert-unambiguous yes
zstyle ':completion:*:*' matcher-list 'm:{[:lower:]-}={[:upper:]_}' '+r:|[.]=**'
zsh
  • 1 个回答
  • 22 Views
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
sh1
Asked: 2025-03-07 14:19:55 +0800 CST

如何提高 zsh 提示中 git hash 的响应能力?

  • 5

我想将当前的 git 哈希放入我的提示中;但我最初的方法有点滞后:

psvar[1]="$(git log -n1 --pretty='format: %h' 2>/dev/null)"

(包括$PROMPT使其%1v可见)

我尝试了vcs_info插件,但效果也不太好。所以我最终写了自己的函数:

function githead() {
  local commondir ref hash _
  local gitdir="${1:a}"
  until [[ -e "$gitdir/.git" ]]; do
    local updir="${gitdir%/*}"
    [[ "$updir" == "$gitdir" ]] && return 1
    gitdir="$updir"
  done
  gitdir="$gitdir/.git"
  [[ -f "$gitdir" ]] && read _ gitdir < "$gitdir"
  read _ ref < "$gitdir/HEAD"
  local commondir="$gitdir/commondir"
  [[ -e "$commondir" ]] && gitdir="$gitdir/$(<$commondir)"
  ref="$gitdir/$ref"
  read hash <"$ref"
  print -r "${hash::12}"
  return 0
}

它确实更快,但注定会很脆弱。特别是,我必须读取的几个文件看起来可能包含多行内容,而且不一定将我想要的行放在顶部。

有没有一种快速的方法可以从 git 获取当前哈希,并且比我手写的更加强大?

zsh
  • 2 个回答
  • 30 Views
Martin Hope
jsx97
Asked: 2025-03-07 03:00:19 +0800 CST

‘which’ 与 ‘type -a’

  • 7

一位高级开发人员在 2022 年写了一篇文章,他的 zsh 配置中有以下别名:

alias which='type -a'

但是 zshwhich默认有,如果我们which像这样使用which cp,输出将是

/bin/cp

而输出type -a cp是

cp is /bin/cp

差异太细微,无法创建别名。那么我可能忽略了哪些实际差异呢?

zsh
  • 1 个回答
  • 150 Views
Martin Hope
jsx97
Asked: 2025-03-02 03:11:52 +0800 CST

zsh 别名在 fish 中使用时会导致错误

  • 4

我的 zsh 中有以下别名:

alias -- -='cd -'
alias ..='cd ..'
alias ...='cd ../..'

当我通过手动输入并按回车键切换到 fish 时fish,第一个别名会导致错误:

- (line 1): function: -: invalid function name
function -  --description 'alias -=cd -';  cd - $argv

如何解决这个问题?

zsh
  • 1 个回答
  • 36 Views
Martin Hope
sporkl
Asked: 2025-02-22 04:26:21 +0800 CST

如何批量压缩pdf?

  • 5

我正在寻找批量压缩一些 pdf 的方法,使用其他地方概述的转换为/从 ps 技巧。我在 .zshrc 文件中定义了一个函数:

function pdfcompress() {
    for f in "$1"; do
        echo "compressing $1"
        pdf2ps "$f" "$f".ps
        ps2pdf -dPDFSETTINGS=/default "$f".ps "$f"
        rm "$f".ps
    done
}

我的理解是,我应该能够传递一个 pdf 列表,然后它会压缩它们。但是,发生了以下情况:

% ls | pdfcompress
compressing
Error: /undefinedfilename in --findlibfile--
Operand stack:
   ()
Execution stack:
   %interp_exit   .runexec2   --nostringval--   findlibfile   --nostringval--   2   %stopped_push   --nostringval--   findlibfile
   findlibfile   false   1   %stopped_push   findlibfile   1815   1   3   %oparray_pop   findlibfile
Dictionary stack:
   --dict:743/1123(ro)(G)--   --dict:0/20(G)--   --dict:85/200(L)--
Current allocation mode is local
GPL Ghostscript 10.04.0: Unrecoverable error, exit code 1
GPL Ghostscript 10.04.0: Device 'pdfwrite' requires an output file but no file was specified.
**** Unable to open the initial device, quitting.

由于某种原因,似乎没有一个文件名被传递。我也尝试过使用find . -iname "*.pdf" -exec pdfcompress和管道到 的方法xargs pdfcompress,但这些方法都不起作用,因为该函数不在环境中。其他时候,占位符变量似乎被解释为文字字符串。

我已经尝试让它以某种形式工作了一个多小时,但没有成功。有什么建议吗?

我有一个想要维护的 pdf 文件夹结构,因此如果可能的话,在目录内递归工作的解决方案将是最好的。

谢谢你!

zsh
  • 1 个回答
  • 44 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