bash-expansion

通过管道将 stdin 传输到 tar 时出现问题
bash-expansion

通过管道将 stdin 传输到 tar 时出现问题

我需要将数据(多个文件和目录)从 Google 云存储存储桶写入本地磁盘上的 Tar 存档。目录大小为多个 TB,因此我不想在磁盘上创建 Tar 存档然后复制它。 我当前的策略是使用 gsutil(Google 的 python 实用程序,用于从云存储复制)并将其通过管道传输到 tar。我使用以下命令在单个文本文件上测试它: gsutil cp gs://data/myfile.txt - | tar -czvf myfile.tar.gz -T - 我遇到的问题是 shell 似乎正在扩展文本文件的实际内容并尝试将文本文件作为参数传递给 tar。我...

Admin

bash 在运行之前重新处理字符串
bash-expansion

bash 在运行之前重新处理字符串

考虑hello world当前目录中有一个名为的目录。是的,该目录中有一个空格。举例来说,假设它有一个名为 f1.txt 的文件。 ls 'hello world' 将打印 f1.txt 但 a="ls 'hello world'" $a 说 ls: cannot access ''\''hello': No such file or directory ls: cannot access 'world'\''': No such file or directory 所以问题是如何让 l...

Admin

byobu 自定义状态出现问题
bash-expansion

byobu 自定义状态出现问题

我正在尝试将 nVidia GPU 利用率添加到我的 byobu-tmux 状态行。我已经安装了图形处理器统计返回 ~$ gpustat myhost Mon Aug 19 17:26:51 2019 410.48 [0] GeForce GTX 1080 Ti | 22'C, 0 % | 0 / 11178 MB | [1] GeForce GTX 1080 Ti | 41'C, 0 % | 0 / 11175 MB | 然后我编写了一个文本处理器,保存到 ~/.byobu/bin/2_gpu...

Admin

mkdir -p 和 touch 用于创建一系列子目录和文件 -- 它是如何工作的?
bash-expansion

mkdir -p 和 touch 用于创建一系列子目录和文件 -- 它是如何工作的?

我在教程中找到了这些命令,这些命令创建了一个包含数百个子目录的父目录,然后是一个 touch 命令,该命令在创建的子目录中创建了数百个 26 个空文件: mkdir -p playground/dir-{00{1..9},0{10..99},100} touch playground/dir-{00{1..9},0{10..99},100}/file-{A..Z} 我的问题是这个语法到底是如何工作的?括号扩展的作用是什么以及00and0和 的100含义是什么?我知道这100是最后一个值,但我不确定00和 是如何,0工作的。 touch 命令也有同样的...

Admin

使用 echo 每行打印一个文件
bash-expansion

使用 echo 每行打印一个文件

如何使用 打印每行一个文件/目录列表echo? 我可以用换行符替换空格,但如果文件名包含空格,则这不起作用: $ echo small*jpg small1.jpg small2.jpg small photo 1.jpg small photo 2.jpg $ echo small*jpg | tr ' ' '\n' small1.jpg small2.jpg small photo 1.jpg small photo 2.jpg 我知道我可以使用 来做到这一点ls -d1,但是也可以使用 来做到这一点吗echo? ...

Admin

如何从 Bash 算术扩展中返回八进制?
bash-expansion

如何从 Bash 算术扩展中返回八进制?

正如 Bash 文档中明确阐述的那样壳算术0,如果在算术扩展表达式中为数字添加前缀 a (例如, $(( expr ))),它被视为八进制。同样,您可以使用for基数中的b#n数字。nb 但是,无论您用于算术的基数如何里面表达式中,值始终以 10 为基数返回。我该如何做返回算术展开结果的八进制? 我最初的用例是通过将文件的权限位与位掩码进行“与”运算来警告用户其权限~/.my.cnf过于宽松(组可读或全局可读),但我后来决定测试的输出find ~/.my.cnf -perm +0044是可能更干净、更便携,因为stat格式字符串在 macOS/BSD 和...

Admin

为什么 $() 中的命令打印的 {1,2} 没有被插值?
bash-expansion

为什么 $() 中的命令打印的 {1,2} 没有被插值?

我所在的目录中有两个文本文件: $ touch test1.txt $ touch test2.txt 当我尝试使用某种模式列出文件(使用 Bash)时,它会起作用: $ ls test?.txt test1.txt test2.txt $ ls test{1,2}.txt test1.txt test2.txt 但是,当由 中包含的命令生成模式时$(),只有其中一种模式有效: $ ls $(echo 'test?.txt') test1.txt test2.txt $ ls $(echo 'test{1,2}.txt') ls: can...

Admin

文件匹配模式 !(*example) 在 bash 脚本中的行为与在 bash shell 中的行为不同
bash-expansion

文件匹配模式 !(*example) 在 bash 脚本中的行为与在 bash shell 中的行为不同

当直接粘贴到我的 bash 终端时,以下内容有效(我明确调用 bash,bash 版本4.4.19(1)-release (x86_64-pc-linux-gnu):) for filename in /home/dean/Downloads/!(*example).txt; do echo "${filename}" done 此命令回显所有文件名中不包含“example”的 txt 文件。 但是,当我将其转换为名为的脚本temp.sh并chmod +x temp.sh通过以下方式调用它时./temp.sh: #!/usr/bin/env...

Admin

如果声明语句失败则让 bash 退出
bash-expansion

如果声明语句失败则让 bash 退出

太长了;博士我希望 bash 之后自动退出declare var=$(false)。 我的 bash 脚本使用set -e(或set errexit)。然而,当使用declare变量声明习惯用法时,declare似乎“阻止”从 shell 替换返回返回代码。 $ var=$(false) $ echo $? 1 $ declare var=$(false) $ echo $? 0 因此,bash不会因错误而退出。我知道我可以测试,var但是每次声明后都太麻烦了declare。 bash失败后如何自动退出declare? 编辑:为了澄清,我正在寻...

Admin

Bash 替换显示目录结构
bash-expansion

Bash 替换显示目录结构

我想在将变量写入文件之前转义变量中的反引号。不幸的是,其中一些线路有一些令人不愉快的项目。 (我想避免 foo 扩展。我希望 foo="ModPagespeedLoadFromFileRuleMatch disallow .*" 按字面意思并在其上运行替换。我不希望任何扩展。它只是一个要放置在文件中的指令。) foo="ModPagespeedLoadFromFileRuleMatch disallow .*" echo ${foo//\\/\\\\} 这给了我: ModPagespeedLoadFromFileRuleMatch disallow...

Admin

如何将多个结果传递到一个命令中?
bash-expansion

如何将多个结果传递到一个命令中?

我有一段有效的代码,如下所示(请注意,这是在用于 AWS 自动部署的 CloudFormation 模板内): EFS_SERVER_IPS_ARRAY=( $(aws efs describe-mount-targets --file-system-id ${SharedFileSystem} | jq '.MountTargets[].IpAddress' -r) ) echo "IPs in EFS_SERVER_IPS_ARRAY:" for element in "${EFS_SERVER_IPS_ARRAY[@]}" do echo "...

Admin

`~#` 是 bash 的波形符扩展吗?
bash-expansion

`~#` 是 bash 的波形符扩展吗?

波浪号是~#bash 的扩展吗?我没有找到它https://www.gnu.org/software/bash/manual/html_node/Tilde-Expansion.html。我的问题来自https://unix.stackexchange.com/a/506532/674。谢谢。 $ ~# The following connections are open: #0 client-session (t4 r0 i0/0 o0/0 fd 5/6 cc -1) #1 x11 (t4 r3 i0/0 o0/0 fd 8/8 cc -1) ...

Admin

Bash 脚本在命令行工作时失败
bash-expansion

Bash 脚本在命令行工作时失败

我编写了一个基本的 bash 函数来测试另一个字符串中是否出现字符串搜索参数。从命令行运行它会给出预期的结果。从 shell 脚本运行相同的命令失败。有人可以告诉我我的方法有哪些错误吗? me@mylaptop $ line='someidentifier 123 another identifier 789 065 theend' me@mylaptop $ sarg='+([0-9])+([ ])another identifier' me@mylaptop $ type strstr s...

Admin

如何防止我想要解析的变量周围的参数扩展?
bash-expansion

如何防止我想要解析的变量周围的参数扩展?

编辑: 进一步阅读之前的重要说明:自拘萨罗南达的回答,我的问题现在毫无用处,因为他指出了我使用的另一个脚本中的错误。现在这个错误已修复,我描述的以下错误不再发生! 您的代码中有两个问题导致 $extension 中的值被扩展 第二个问题是函数本身 长话短说 当我开始写问题时,我被困住了,但找到了一个有效的解决方案(使用壳诺格洛布),但我仍然有一个问题“是否可以写”。 我确信这个问题已经得到解答,但我迷失在数百个有关 bash 扩展的主题中。 这是我的案例: 我想运行一个脚本(假设使用接受正则表达式的ffmpeg选项模式)-pa...

Admin

$VISUAL 的 .desktop 启动器失败
bash-expansion

$VISUAL 的 .desktop 启动器失败

我在一个名为“createlauncher.desktop”的桌面文件中构建了一个小型启动器编辑器,它在文本编辑器中打开了第二个名为“SHORTCUT.desktop”的只读桌面启动器文件,其中可执行文件的路径和名称是已填写,启动器将保存到新位置。它主要使用 xdg-open,主要目标是 pdf 文件或其他目录。 xdg-open 部分工作正常。这样我就可以拥有 Windows 风格的快捷方式(桌面文件),而 Dropbox 不会像符号链接那样弄乱。 如果我指定只读桌面文件的完整路径,我可以使用启动器,但我必须在绝对路径上调用特定的文本编辑器才能使其工...

Admin