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

DEKKER's questions

Martin Hope
DEKKER
Asked: 2024-03-04 18:12:44 +0800 CST

如何生成查找表或数据结构并在 Bash 中对其执行循环

  • 7

我正在开发嵌入式Linux。我想写一个自动修复分区的bash脚本。

我声明了一个关联数组,其中键是安装点,值是要安装的设备。

现在,我的问题是设备可能有不同的文件系统,fsck应该选择正确的版本。

每个文件系统都有自己的fsck变体,例如fsck.vfat和fsck.ext4。

我需要以某种方式将其带入循环中,以便调用正确的变体。遗憾的是,主要变体fsck没有在我的配置中提供文件系统的自动修复或检测。

所以真正的问题是如何在这里有一个查找表?

declare -A arrPartitionsToCheck=(
[/run/media/my-backup]="/dev/sda1" # vfat
[/run/media/my-data]="/dev/sdb1"   # ext4
)

for part in "${!arrPartitionsToCheck[@]}"; do

    # Unmount
    # umount /dev/sda1
    umount "${arrPartitionsToCheck[$part]}"

    # Select the right variant of FSCK and repair automatically
    fsck.vfat -a "${arrPartitionsToCheck[$part]}"

    # Mont Again! For example
    # mount /dev/sda1 /run/media/my-backups
    mount "${arrPartitionsToCheck[$part]}" "$part"    

done
bash
  • 2 个回答
  • 241 Views
Martin Hope
DEKKER
Asked: 2023-09-13 20:36:27 +0800 CST

仅使用 USB 电缆的虚拟 COM 端口

  • 5

我已经看到可以通过 USB 电缆连接两台计算机并制作虚拟以太网桥或类似的东西。

我的问题是,我们可以做类似的事情,但将连接配置为串行接口吗?

确切地说:

是否可以使用 USB 电缆(我不知道正确的名称是什么,我的意思是两端都有 USB-A 连接器的电缆)连接两台计算机,而不涉及任何串行适配器,然后将 USB 端口配置为串行。

linux-kernel
  • 1 个回答
  • 33 Views
Martin Hope
DEKKER
Asked: 2023-06-28 22:33:22 +0800 CST

find 在一个命令中组合多个名称和路径

  • 6

我有一组相当复杂的文件需要找到并做出反应(例如复制到文本文件的路径):

例如:

 find / \( -iname "*ssh*" -or -iname "*scp*" \) \( -not -path -"/run" -not -path "/rw/*" -and -not -path "/home/*" -and -not -path "*/qml/*" \) >> ~/files.txt

在这里我想找到与“ssh”和“scp”相关但不在 /run 或 /rw 目录中的所有文件或文件夹。

我将为此添加更多条件,但命令太长了。我怎样才能用正则表达式做到这一点?

find
  • 2 个回答
  • 32 Views
Martin Hope
DEKKER
Asked: 2023-01-25 03:16:59 +0800 CST

如何正确地将变量添加到环境或会话

  • 5

我使用在本地构建的开源软件。构建手册说在构建目录中像这样运行它

$ LD_LIBRARY_PATH=../applicationExeFile

然后应用程序运行正常。

现在,我尝试制作一个简单的 shell 来快速调用,而无需使用以下内容键入太多 (run.sh):

#!/bin/bash

export -n LD_LIBRARY_PATH=.
./applicationExeFile

但似乎 LD_LIBRARY_PATH 没有在 shell 中注册,因为我收到有关应用程序可执行文件找不到位于同一文件夹中的库的错误

./applicationExeFile: error while loading shared libraries: libchart.so: cannot open shared object file: No such file or directory

我做错了什么以及如何实现这一目标?

bash
  • 1 个回答
  • 32 Views
Martin Hope
DEKKER
Asked: 2022-10-01 04:20:46 +0800 CST

将 bash 变量写入文件的最快方法

  • 2

我想为一些实验生成一些大文件。

这是我的脚本。它创建一个文件,然后将其读取到一个变量中,然后尝试将其写入文件中循环中定义的多次:

#! /usr/bin/env bash

set -e
set -u

< /dev/urandom tr -dc "\t\n [:alnum:]" | head -c32768 > temp.txt
data=$(cat ./temp.txt)

for testdir in "$@"; do
    echo "create directory '$testdir'"
    mkdir -p $testdir
    for i in {1..3}; do
        counter=$(printf %02d $i)
        testfile=$testdir/test_${testdir##*/}_$counter.txt
        echo "create file '$testfile'"
        echo "$data" > $testfile
    done
done

如果我尝试使用此脚本创建 3000 个文件(每个文件夹将有 3 个文件),则在我的系统上大约需要 19 秒:

时间 generateUserData.sh TEST{0..1000}

create directory 'TEST999'
create file 'TEST999/test_TEST999_01.txt'
create file 'TEST999/test_TEST999_02.txt'
create file 'TEST999/test_TEST999_03.txt'
create directory 'TEST1000'
create file 'TEST1000/test_TEST1000_01.txt'
create file 'TEST1000/test_TEST1000_02.txt'
create file 'TEST1000/test_TEST1000_03.txt'

real    0m19.333s
user    0m14.791s
sys     0m4.784s

我侦察echo可能是这里的缓慢部分。任何想法我怎样才能让他尽可能快?

bash shell-script
  • 2 个回答
  • 90 Views
Martin Hope
DEKKER
Asked: 2022-09-29 05:12:09 +0800 CST

如何创建多个目录并用文件填充它们

  • 0

我想制作一些目录树,并用带有随机内容的文本文件填充树的每一端。

这是我到目前为止所尝试的:

#!/bin/bash

set -e

echo "Generating test folders"

mkdir -p ./parent_{0..9}/child_{0..9}
head -c 100 /dev/urandom | xargs echo >> ./parent_{0..9}/child_{0..9}/test.txt

echo "done"

执行时,我收到此错误:

./gen-test.sh: line 8: ./parent_{0..9}/child_{0..9}/test.txt: ambiguous redirect

我做错了什么,什么是更聪明的方法来完成这项任务?

linux bash
  • 1 个回答
  • 33 Views
Martin Hope
DEKKER
Asked: 2022-06-25 03:53:06 +0800 CST

如何在 bash 脚本中正确换行和连接字符串

  • 0

我有一个 Bash 脚本,它具有记录时间和状态消息的功能,我只想保留我的脚本 80 列:

#!/bin/bash

log_message() {
  echo "[$(date)]-[$1] : $2" >> log.txt
}

varName="John Doe"

# line break to not exceed 80 columns
log_message "WARNING" "I am "${varName}" and i want to limit this line \
to 80 columns"

日志文件中的结果与预期不符:

[Fri Jun 24 13:50:12 CEST 2022]-[WARNING] : I am John

在 Bash 中这样做的正确方法是什么?

bash string
  • 2 个回答
  • 48 Views
Martin Hope
DEKKER
Asked: 2022-06-25 00:36:34 +0800 CST

在 bash 脚本中查找文本第一次出现的行号

  • 4

我需要找出给定搜索字符串的第一次出现的行号,该字符串应该位于文本文件的行首,并将其存储在我的 bash 脚本中的变量中。例如我想找到“c”的第一次出现:

abc
bde
cddefefef // this is the line that I need its line number
Casdasd // C here is capital, I dont need it
azczxczxc
b223r23r2fe
Cssdfsdfsdf
dccccdcdcCCDcdccCCC
eCCCCCC

我想出了这个,但正如你所见,有很大的问题

   trimLineNum=$(cat "${varFileLog}" | grep -m1 -n "c")
   echo "c is at line #"${trimLineNum}

输出将是:

c is at line #1:abc

问题:

  1. 所以很明显它与第一行匹配,因为该行中有一个“c”。
  2. 输出还将包括该行的内容!我希望它只是行号

我应该改变什么来解决这些问题?

bash text-processing
  • 5 个回答
  • 1159 Views
Martin Hope
DEKKER
Asked: 2022-06-11 04:44:58 +0800 CST

bash脚本中导出变量的生命周期和有效性

  • 2

我创建了一个 bash 脚本来运行一些具有自定义环境变量的其他程序。这是我命名run-hello.sh的第一个脚本/home/user

#!/bin/bash    
export PATH=$PATH":/home/user/cool/path"    
hello.sh     
exit 0

在/home/user/cool/path我有hello.sh脚本:

#\!/bin/bash
echo Hello from $(pwd)

运行第一个脚本(run-hello.sh)产生:

Hello from /home/user

我的问题:

  1. 第一个脚本中的export调用仅在脚本处于活动状态的持续时间内有效?如果在运行脚本后我echo $PATH不会看到脚本添加的路径......这是预期的行为吗?我怎样才能让它至少在终端的持续时间内存在?

  2. 为什么结果打印/home/user而不是/home/user/cool/path?

linux bash
  • 1 个回答
  • 381 Views
Martin Hope
DEKKER
Asked: 2022-05-26 06:42:10 +0800 CST

在 bash 脚本中具有自己的参数的函数

  • 1

我想在 Linux 上创建一个脚本来创建一些不存在的目录。目录是在脚本本身内部声明的(不是从命令行传递的):

#!/bin/bash

varBaseDir="/home/user"

# Directories to create
varAppDir="${varBaseDir}/app"
varAppDataDir="${varBaseDir}/appData"

if [[ -d ${varAppDir} ]]
        then
                echo "app dir exist"
        else
                echo "app dir does not exist! creating '${dir}' ..."
                mkdir -p ${dir}
                if test "$?" -eq "0"
                        then
                                        echo "succeeded."
                        else
                                echo "failed to create directory"
                fi
fi

如您所见,我创建了其中一个目录。然后我需要再次重复相同的代码,但使用不同的目录(下次我希望创建varAppDataDir)。

我试图弄清楚如何声明一个函数:

my_function($dir) {
        echo $dir
}

my_funciotn("HELLO")

但我得到错误:

./test.sh: line 27: syntax error near unexpected token `$dir'
./test.sh: line 27: `my_function($dir) {'

那么如何正确地做到这一点呢?

bash shell-script
  • 1 个回答
  • 26 Views
Martin Hope
DEKKER
Asked: 2022-04-01 06:40:04 +0800 CST

当 Linux 的驱动器字母用完时会发生什么?

  • 35

假设我有 50 个 USB 闪存驱动器。

我想他们会/dev/sda去/dev/sdz。之后是什么/dev/sdz?

linux filesystems
  • 1 个回答
  • 4480 Views
Martin Hope
DEKKER
Asked: 2022-04-01 06:37:25 +0800 CST

挂载 /dev/sd 或 /dev/mmc 时命名外部设备的可能性是什么

  • 0

普通的闪存驱动器被/dev/sdXlinux 识别为。

这个 raw/dev/sdX叫什么,特别是在安装之前。

当它被挂载时,就像/mountpath/sdX1它有一个分区一样,对吧?

这里的术语是什么?我们如何命名这些?

其他的可能性是什么?我知道sdX这应该是指 SCSI,但是当您连接闪存驱动器或外部硬盘或 USB 软盘驱动器/光驱时还能期待什么?

linux filesystems
  • 2 个回答
  • 39 Views
Martin Hope
DEKKER
Asked: 2022-03-29 22:51:55 +0800 CST

bash 不解析终端中的颜色字符

  • 0

我正在通过 ssh 连接到嵌入式 linux 来做一些事情。在输出之类的命令中journalctl,systemctl我看到这些看起来像颜色指令的随机字符。它们真的破坏了原木的外观和感觉,我只是不想看到它们。无论如何我可以摆脱它吗?或以某种方式使其工作?

Mar 29 08:27:02 MyHost kernel: EXT4-fs (sda6): mounting ext3 file system using the ext4 subsystem
Mar 29 08:27:02 MyHost udisksd[2051]: [[0;1;39m[[0;1;31m[[0;1;39mMounted /dev/sda6 at /run/media/root/TYPE-EXT3 on behalf of uid 0[[0m

$SHELL 设置为/bin/bash

bash terminal
  • 1 个回答
  • 77 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