标签: parameter

将 sed 的解析输出传递给 find(在这个方向)

好吧,我想你可以在这个平台上找到几十个问题,如何通过管道find 输出sed,但到目前为止我还没有找到任何相反的方向。我想要做的是修改我的输入然后将其传递给find.

假设我想执行以下操作,以避免输入那些繁琐的星号通配符,从而使自己的生活更轻松。(我希望很明显,跟在 here-string 运算符后面的表达式<<<最终计划被参数替换,例如$1,在稍后的脚本中。下面的行仅用于演示。)

$ sed 's/ /\*/g' <<< ' foo bar baz ' | find . -type f -iname - 
Run Code Online (Sandbox Code Playgroud)

-在此一衬套的端部实际上应该使用的输出sed为作为输入find; 然而,将find部分扩展到

... find -D tree . -type f -iname - ... 
Run Code Online (Sandbox Code Playgroud)

显示该参数传递给find. 也许您根本无法将预处理输入传递给find使用管道?

bash pipe sed find parameter

4
推荐指数
1
解决办法
1328
查看次数

为什么 POSIX 查找参数与其他程序样式不同?

为什么 POSIXfind命令中的一个参数添加一个单连字符表示多字符参数名称,而大多数其他程序使用单连字符表示多个单字符标志,而双连字符表示多个字符的单个参数名称?

这似乎不一致,我很好奇

A. 为什么它真的不矛盾,或者
B. 那个决定的历史。

find parameter history posix

4
推荐指数
2
解决办法
311
查看次数

设置 Linux 内核运行时参数的正确方法是什么?

设置 Linux 内核运行时参数的规定方法是什么?我有时看到人们会将这些设置在诸如/etc/rc.local.

这真的是这样做的正确方法吗?

linux kernel parameter sysctl

4
推荐指数
1
解决办法
5868
查看次数

在 find 中使用 -exec 打印文件扩展名

我正在玩-execfind 命令的标志。我正在尝试使用该标志来打印文件的扩展名,使用相当新的 Linux 发行版。

从简单开始,这有效:

find . -type f -exec echo {} \;
Run Code Online (Sandbox Code Playgroud)

尝试使用方便的 Bash 字符串功能失败:

find . -type f -exec echo "${{}##*.}" \; (bad substitution)
Run Code Online (Sandbox Code Playgroud)

那么正确的做法应该是什么呢?

shell find parameter filenames variable-substitution

4
推荐指数
2
解决办法
4735
查看次数

bash 中的这一行有什么作用?参数-||脚本名

我一直在通读bash手册页,并通读我的系统 (CentOS 6.7) 上的脚本,并随时在bash手册页中查找内容。这是一个很好的练习;例如,我学习了如何/etc/profile检查当-i位置参数中实际上没有选项时是否设置了选项(所以getopts不起作用)。

然而,下面这句话让我完全难住了;我在bash手册页中找不到任何解释它可以做什么的内容:

LESSOPEN="${LESSOPEN-||/usr/bin/lesspipe.sh %s}"
Run Code Online (Sandbox Code Playgroud)

(这是 中一行的一部分/etc/profile.d/less.sh。)

我只是错过了什么man bash吗?


是的,我缺少的东西man bash:上面的解释${parameter:-word},它说Omitting the colon results in a test only for a parameter that is unset. 这是缺少的部分。(顺便说一下,“可能的重复”问题中没有涵盖。)

分配的默认值是“或”运算符后的脚本名称这一事实只会增加我的困惑!:)

bash parameter shell-script

4
推荐指数
1
解决办法
331
查看次数

在函数定义中使用位置参数

如何在函数声明中使用位置参数(从命令行给出)?

在函数定义中,$1 和 $2 是函数本身唯一的位置参数,而不是全局位置参数!

bash parameter function

4
推荐指数
1
解决办法
1769
查看次数

Zsh 在 find 命令中使用数组

我想rsync删除几个用数组指定的文件,并删除目录中的任何其他文件。

我能想到的唯一方法是使用find, 并rsync覆盖文件删除其他文件,因此我们复制尽可能少的文件。

在以下示例中,我想删除 中的任何其他文件/tmp/tmp/,除了btrfs_x64.efiiso9660_x64.efi

$ refind_efi_dir='/tmp/tmp/'
$ drivers=('btrfs_x64.efi' 'iso9660_x64.efi')
$ find ${refind_efi_dir}drivers_x64/ "${drivers[@]/#/! -name }" -type f -exec rm -f {} +
Run Code Online (Sandbox Code Playgroud)

我希望扩展扩展为以下命令:

$ find /tmp/tmp/drivers_x64/ ! -name btrfs_x64.efi ! -name iso9660_x64.efi -type f -exec rm -f {} +
Run Code Online (Sandbox Code Playgroud)

但它似乎正在运行以下命令:

$ find /tmp/tmp/drivers_x64/ "! -name btrfs_x64.efi" "! -name iso9660_x64.efi" -type f -exec rm -f {} +
Run Code Online (Sandbox Code Playgroud)

有没有办法获得前者?理想情况下,如果某些数组条目中有空格,它也可以工作。

zsh array parameter

4
推荐指数
1
解决办法
143
查看次数

如何在bash函数上传递字符串参数?

我有这个有效的代码:

get_parameter ()
{
   echo "$query" | sed -n 's/^.*name=\([^&]*\).*$/\1/p' | sed "s/%20/ /g"
}
Run Code Online (Sandbox Code Playgroud)

但我想用我传递给 get_parameter 的参数替换“名称”

get_parameter ()
{
   echo "$query" | sed -n 's/^.*$1=\([^&]*\).*$/\1/p' | sed "s/%20/ /g"
}
NAME=$( get_parameter name )
Run Code Online (Sandbox Code Playgroud)

然而,这不起作用。我哪里错了?

bash parameter string function

3
推荐指数
1
解决办法
1万
查看次数

是否可以在别名命令中使用参数

可能的重复:
如何将参数传递给别名?

正如可以减少保留彩色输出?我想用来
git diff --color=always filename | less -r获取我的 git 差异的彩色输出。由于我经常使用它,因此为此设置一个别名会很好。但是如何filename在这个命令中包含?

我尝试了以下但没有成功:

alias gdiff='git diff --color=always $1 | less -r'
Run Code Online (Sandbox Code Playgroud)

键入gdiff example.php会显示example.phpwith的内容,less但会忽略 diff 部分。

有任何想法吗?

bash parameter alias

3
推荐指数
1
解决办法
3941
查看次数

为所有执行的命令指定参数的方法

我想知道是否有办法为 X 数量的命令指定一个相互参数。例如

sudo cmd1 cmd2 cm3 \ --help

这显然不起作用,但我在手册中没有看到任何内容。我假设它无法完成,但并没有完全排除它。如果它不存在,我该如何制作它?

shell parameter command

3
推荐指数
1
解决办法
246
查看次数