标签: bash

Bash 文件重定向的工作方式与脚本不同

$ cat test.txt
foo
bar
Run Code Online (Sandbox Code Playgroud)

此 sed 命令将 text.txt 中的第一行替换为“baz”。它从命令行工作正常:

$ sed "1s%.*%baz%" "test.txt" > "test.txt"
$ cat test.txt
baz
bar
Run Code Online (Sandbox Code Playgroud)

我希望能够将该 sed 命令放入如下命名的脚本中test.sh

#!/bin/sh
sed "1s%.*%baz%" "test.txt" > "test.txt"
Run Code Online (Sandbox Code Playgroud)

但是,当我运行./test.sh它时,它会从 text.txt 中删除所有行(text.txt 被完全清空)?!

有任何想法吗?

bash sed

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

检查字符串是否等于 Bash 脚本中的星号?

我正在制作一个 bash 脚本来做基本的算术,当我这样做时:

if [ $2 == "*" ]
Run Code Online (Sandbox Code Playgroud)

这是行不通的。

如何检查星号?

linux bash shell-script

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

Shell 脚本,遍历文件夹

我的 Mac 上有大量子文件夹,每个子文件夹中都有随机数量的 csv 文件。我想要做的是将这些文件合并到每个目录的单个文件中。

到目前为止,我知道我可以将这些文件与 合并cat * > mergedfile.csv,但是我在遍历所有文件夹时遇到了问题。到目前为止,我以某种方式设法合并了各种各样的东西,但我似乎无法完全按照我的意愿去做。

关于做到这一点的最佳方法的任何想法?

for DIR in ./subfolder/*
do
    cat $dir/* > merged.csv 
done
Run Code Online (Sandbox Code Playgroud)

bash shell

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

文件中的 Cygwin 'grep' 需要永远

我尝试使用 Cygwin 来模拟一些很酷的 Linux 搜索功能,当我在文件(12 个文本文件 - 不大)中执行 grep 时,它需要很长时间。我用了

grep -rne word
Run Code Online (Sandbox Code Playgroud)

我可以手动更快地找到这个词(即使没有Ctrl+ F)。有什么原因这不起作用吗?如何解决?

PS:我使用 Cygwin 控制台。

linux cygwin bash grep windows-xp

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

Bash - 如何将命令的结果放入变量中?

例如,假设我想输入命令pwd

它给了我一个很长的路径到我所在的当前目录。

我真正想做的是让我可以进入一个完全不同的目录,并且仍然引用我所在的上一个目录,而不必记住上一个路径。

有没有办法做到这一点?

bash

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

Bash - 有没有办法在当前目录中搜索字符串(或模式)?

可能的重复:
在 linux Bash 中搜索文本模式
:有没有办法在文件目录中搜索特定字符串?

假设我在某个包含一堆文件的目录中,我正在尝试查找在其 content中包含字符串“string”的文件。有没有办法做到这一点?谢谢。

search bash

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

如何使“查找”仅匹配特定子目录中的文件

我在 Mac OS X 10.6.8 上使用 bash。

使用该find命令,我想搜索匹配*.XML. 但是,我只想匹配16xxxx子目录中的那些文件,而不是16yyyy某个基目录中的文件。

basedir/16xxxx/EX1.XML
basedir/16xxxx/EX2.XML
basedir/16yyyy/EX3.XML
basedir/16yyyy/EX4.XML
Run Code Online (Sandbox Code Playgroud)

我正在寻找的结果将是EX1.XMLEX2.XML(为清楚起见,排除了完整路径名)。

这是一个bash脚本这将使它方便,如果我能进入的背景下16xxxx/*.XML作为表达式传递给-namefind命令:

find basedir -name '16xxxx/*.XML'
Run Code Online (Sandbox Code Playgroud)

但是,这不会返回任何匹配项,因为 shell 与/字符不匹配。是否有一些参数要传递给find或一种方法来转义16xxxx/\*.XML将返回我需要的结果的表达式?

bash find macos

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

sed -e "s/-.*$//"

此命令中的 -.*$/ 是什么意思?请帮我破译这个。

echo -n full | sed -e "s/-.*$//" 
Run Code Online (Sandbox Code Playgroud)

我知道 sed 的作用以及所有这些,我只想知道 -.*$ 部分是什么。

linux bash shell sed

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

打开名称中带有单引号的目录

我必须从终端打开一个目录,但目录名称包含单引号,我该如何打开它?这是目录的名称

02. Setting Up 'Shop
Run Code Online (Sandbox Code Playgroud)

linux terminal bash filesystems

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

从 find 中转义文件和目录名

如何从find命令的结果中转义空格和其他符号?例如,如果结果中有空格和其他符号,这将不起作用:

find -maxdepth 5 -type d -print | xargs du -sk | sort -rn
Run Code Online (Sandbox Code Playgroud)

linux bash find

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

标签 统计

bash ×10

linux ×5

find ×2

sed ×2

shell ×2

cygwin ×1

filesystems ×1

grep ×1

macos ×1

search ×1

shell-script ×1

terminal ×1

windows-xp ×1