标签: bash

如何将文件与 bash 中的单独数据连接起来?

因此,可以使用 cat 轻松地在 bash 中加入文件:

cat *.txt > all.txt
Run Code Online (Sandbox Code Playgroud)

但是如果想在输入文件之间插入一些东西,比如换行怎么办?

bash

10
推荐指数
2
解决办法
5625
查看次数

grep 文件的开头?

在 linux shell 中,我想确保一组特定的文件都以 开头<?,具有确切的字符串并且开头没有其他字符。我怎样才能 grep 或使用其他一些来表达“文件开头”?


编辑:我是通配符,并head没有在同一行给出文件名,所以当我 grep 它时,我看不到文件名。此外,"^<?"似乎没有给出正确的结果;基本上我得到这个:

$> head -1 * | grep "^<?"
<?
<?
<?
<?
<?
...
Run Code Online (Sandbox Code Playgroud)

所有的文件实际上都很好。

bash grep command-line

10
推荐指数
2
解决办法
7689
查看次数

删除或重命名以 \r 作为文件名的文件

我有一个讨厌的小文件,它的名字似乎是单个字符,而那个字符是 \r

我怎样才能删除这个?

这是我得到的ls -bl

-rw-rwxr--+   1 root             snapplewriters        0 Aug 29  2011 \r
Run Code Online (Sandbox Code Playgroud)

ls -l 只是显示它“?”

linux bash filesystems

10
推荐指数
3
解决办法
4512
查看次数

裸 &lt; 有什么作用?

bash 如果您运行类似的命令,似乎不会抱怨

$ < some-file-that-exists
Run Code Online (Sandbox Code Playgroud)

似乎什么都没有发生。

你也可以使用

$ <<<"any string"
Run Code Online (Sandbox Code Playgroud)

甚至过程替换。

那么这到底是做什么的,为什么允许这样做。它对任何事情都有用吗?

bash

10
推荐指数
2
解决办法
764
查看次数

在 zsh 中,如何运行为 bash 编写的脚本

我已切换到 zsh,如何运行为 bash 编写的脚本?

我不想修改脚本以将 #!/bin/bash 放在脚本的开头,因为它是受版本控制的。

还有其他方法吗?

有问题的脚本行是:

for f in `/bin/ls v/*/s.sh v/*/*/v.sh d/*/*/v.sh 2> /dev/null`
Run Code Online (Sandbox Code Playgroud)

bash zsh

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

使用“源”运行脚本时如何正确恢复设置?

我正在编写一个需要使用 执行的脚本source,因为它的任务是修改环境。在脚本期间,我想使用set -e以便任何错误停止脚本。该脚本如下所示:

#!/bin/bash
set -e
# do something
cd somewhere
source anotherScript
Run Code Online (Sandbox Code Playgroud)

问题是set -e在脚本完成后自然保持有效。set当脚本停止时(以任何方式 - 成功完成或出错),我如何确保更改的选项正确恢复到其先前的值?

script bash bash-scripting

10
推荐指数
2
解决办法
3438
查看次数

如何使用 chmod 仅为用户添加 +x?

chmod +x file 将文件从 rw-r--r-- 更改为 rwxr-xrx 但实际上我只想要 rwx-r--r-- 这可能吗?

linux bash command-line chmod

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

我在“vi 模式”下使用 Bash。使用外部编辑器编辑当前命令行的热键序列是什么?

Bash的“Emacs 模式”( set -o emacs) 中,我可以在我最喜欢的外部 $EDITOR 中编辑当前命令行。我所要做的就是按Ctrl+X然后Ctrl+ E

但是,因为我已经切换到 Bash 的“vi 模式”( set -o vi),所以这个按键序列没有任何作用。在“vi 模式”下,如何启动外部编辑器以编写更长的命令?

bash vi key-binding text-editors readline

10
推荐指数
2
解决办法
2561
查看次数

仅替换 sed 中匹配模式的一部分

对于具有相同结构的数万行,我想(例如)从这里开始:

abcd 12345 qwerty asdfg
Run Code Online (Sandbox Code Playgroud)

...到这里:

abcd 12345,qwerty asdfg
Run Code Online (Sandbox Code Playgroud)

...和

sed 's/[0-9]\ [A-Z]/,/g'
Run Code Online (Sandbox Code Playgroud)

我可以匹配 rigth 空间加上其周围的字符 (5 q),但在替换中我得到(显然):

abcd 1234,werty asdfg
Run Code Online (Sandbox Code Playgroud)

另外,我更喜欢在 linux shell 中执行此操作

我怎么能只匹配和替换每一行前面有一个数字后跟一个字母的空格?你会建议我使用另一种工具(甚至方法)来完成这项工作吗?

bash regex sed

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

用 [AJ] 替换 [0-9] 不适用于 sed

我正在处理一个命令,该命令将 sed 中的所有数字 0-9 替换为其相应的字母。我知道我做错了什么,但 sed 并没有将替换正则表达式解释为字符串文字以外的任何东西。

我正在使用的命令是 sed -r 's/[0-9]/[A-J]/g' log > ~/output.txt

这对我来说似乎很简单,但我已经坚持了大约一个小时。我收到的输出只是用字符串“[AJ]”替换了 0-9

linux bash regex sed command-line

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