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

Tim's questions

Martin Hope
Tim
Asked: 2024-06-30 21:13:41 +0800 CST

是否存在我不知道的别名替代品?

  • 9

今天我开始注意到,运行通过 Go 安装的二进制文件的本地命令时出现了奇怪的行为。似乎该命令有别名,但咨询后发现alias并非如此。

该命令buf以某种方式执行cp!

buf --help
Usage: cp [OPTION]... [-T] SOURCE DEST
  or:  cp [OPTION]... SOURCE... DIRECTORY
  or:  cp [OPTION]... -t DIRECTORY SOURCE...
Copy SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY.

Bash 设置

Debian GNU/Linux 12(bookworm)上的 GNU bash,版本 5.2.15(1)-release(x86_64-pc-linux-gnu)。

我使用Oh My Bash进行一些有趣的事情,并启用了自动更新。这是我的.bashrc:

case $- in
  *i*) ;;
    *) return;;
esac

export OSH='/home/tim/.oh-my-bash'

OSH_THEME="font"

completions=(
  git
  ssh
  go
  docker
  docker-compose
  makefile
)

aliases=(
  general
)

plugins=(
  git
  bashmarks
)

source "$OSH"/oh-my-bash.sh

export PATH="$PATH:/home/tim/.local/bin"

eval $(thefuck --alias)

export BUN_INSTALL="$HOME/.bun"
export PATH=$BUN_INSTALL/bin:$PATH

命令失败

该命令是GOPATH使用 go 命令安装的:

go install github.com/bufbuild/buf/cmd/[email protected]

GOPATH:

go env GOPATH
/home/tim/go

Go bin 目录是其中的一部分PATH:

echo $PATH
/home/tim/.bun/bin:/home/tim/go/bin:/home/tim/Repositories/goroot/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/home/tim/.local/bin:/home/tim/.local/bin

并且通过健全性检查which解析出正确的二进制文件:

which buf
/home/tim/go/bin/buf

直接执行路径即可按预期工作:

/home/tim/go/bin/buf --help
The Buf CLI
...

配置别名

没有为 配置别名buf:

alias buf
bash: alias: buf: not found

其他说明

我几个月前才安装了 Debian。我不确定我是否曾尝试buf在那之后直接运行。但是,我的主目录是从 OpenSUSE 创建的备份中恢复的,我确定我已经buf成功运行了该命令。我的天啊,Go 安装和 go 二进制文件都是该备份的一部分。在此期间,大多数东西都得到了更新,但我不记得更改过任何配置。

其他 Go 二进制文件按预期工作:

cobra-cli --help
Cobra is a CLI library for Go that empowers applications.

我日常工作buf也用到它,但是是通过 MakeFile 实现的。通过 MakeFile 调用时,make它运行得很好。

当我找不到别名并且别名是正确的时,该如何buf执行命令?还有其他我不知道的命令别名方法吗?cpPATH

bash
  • 1 个回答
  • 891 Views
Martin Hope
Tim
Asked: 2020-02-15 02:50:42 +0800 CST

KDE Neon 是否使用 Ubunu LTS 点版本?

  • 2

KDE Neon FAQ提到它是在 Ubuntu LTS 18.04 上构建的。它没有提到它使用的是哪个版本的 Ubuntu LTS。

我想试用 KDE Neon,但我知道我的笔记本电脑在 4.19 之前的内核版本上(或根本不能)运行良好。默认 LTS 随内核 4.5 一起提供,不是一个选项。根据Ubuntu kernel overview,Ubuntu 18.04.3 将是第一个适合我的版本。

  1. KDE Neon 是否遵循 Ubuntu 点发布?
  2. 或者,是否可以按照Ubuntu wiki中的描述手动启用 HWE ?和:

    sudo apt-get install --install-recommends linux-generic-hwe-18.04 xserver-xorg-hwe-18.04

或者这会破坏 KDE Neon更新系统吗?

ubuntu kernel
  • 1 个回答
  • 424 Views
Martin Hope
Tim
Asked: 2018-05-25 08:56:09 +0800 CST

如何在符号链接递归中找到中间体?

  • 1

是否有输出绝对符号链接目标的非递归readlink -f/替代方法?realpath也欢迎更兼容 POSIX 的解决方案。

我的 shell 脚本中有一个功能块,如下所示:

set FILES
# addFile adds a file to the FILES list. If file is a symlink,
# it will also find and add the destination.
addFile() {
    file="$1"
    # Check if file is already included in list
    echo "$FILES" | grep -q "$file" && return
    FILES="$FILES $file"
    if [ -L $file ]; then
        addFile $(realpath $file)
        #addFile $(readlink $file)
    fi
}

我在一个脚本中使用这个函数,该脚本从文件系统周围收集二进制文件和库文件。但我预见到这段代码有一个问题:

  1. 我第一次尝试使用readlink,但这返回了相对于 的符号链接解析路径$file,因此在这些路径上执行的任何操作都会失败。(现在已注释掉,但仍在代码中)(请参阅下面的小编辑)
  2. 之后,我realpath改用man readlink. 它几乎可以工作。

现在,我想要执行的操作可以工作了。但是,在最终结果中,我复制了 initramfs 中的所有二进制文件、库和符号链接。如果有任何递归符号链接,则仅包括顶层和目标,而不包括中间符号链接。因此,打破了符号链接。

我创建了一个小提琴来演示这个问题。link-to-link1指向link1,指向file1。最终结果link1丢失并被link-to-link1破坏。

编辑; 澄清问题

在以下一组符号链接上运行上述函数时:

# Contents of ~/test/src
file0
file1
link0 -> file0
link0.1 -> file0
link1 -> file1
link-to-link1 -> link1

和:

copy="link-to-link1 link0 link0.1"
for sf in $copy; do
    addFile ~/test/src/$sf
done;
cp -av $FILES ~/test/dst

您会发现只$copy复制了 3 个链接和 2 个文件。但是,中间链接link1丢失并且link-to-link1被破坏。

我希望脚本也能找到link1。请记住,在运行此脚本的环境中,文件和符号链接的位置必须是绝对的。

次要编辑

添加另一个小提琴来演示相对路径的失败,使用readlink. 仅复制符号链接并且缺少目标。

bash shell-script
  • 1 个回答
  • 973 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