小编Ben*_* W.的帖子

在Bash中提取文件名和扩展名

我想分别获取文件名(没有扩展名)和扩展名.

我到目前为止找到的最佳解决方案是:

NAME=`echo "$FILE" | cut -d'.' -f1`
EXTENSION=`echo "$FILE" | cut -d'.' -f2`
Run Code Online (Sandbox Code Playgroud)

这是错误的,因为如果文件名包含多个.字符,它将不起作用.如果,让我们说,我有a.b.js,它会考虑ab.js,而不是a.bjs.

它可以在Python中轻松完成

file, ext = os.path.splitext(path)
Run Code Online (Sandbox Code Playgroud)

但是如果可能的话,我宁愿不为此启动Python解释器.

有更好的想法吗?

string bash filenames

1969
推荐指数
26
解决办法
143万
查看次数

杀死分离的屏幕会话

我从某个地方学到了一个独立的屏幕可以被杀死

屏幕-X -S [会话#你要杀]杀

你可以从哪里得到[你要杀的会话#]

屏幕-ls.

但这不起作用.哪里不对了?什么是正确的方法?

linux gnu-screen kill

864
推荐指数
11
解决办法
130万
查看次数

如何清除/删除终端中的当前行?

如果我正在使用终端并为命令输入一行文本,是否有热键或任何方式来清除/删除该行?

例如,如果我当前的行/命令非常像:

> git log --graph --all --blah..uh oh i want to cancel and clear this line <cursor is here now>
Run Code Online (Sandbox Code Playgroud)

是否有热键或命令从上面到:

>
Run Code Online (Sandbox Code Playgroud)

通常我会按下键,如果我的当前行是历史上的全新行,那将清除它.但是如果我通过键查看命令历史记录并开始编辑或使用这些命令,则只会将提示更改为历史记录中的下一个最新命令,因此除非我按多次,否则它不起作用.

bash terminal

723
推荐指数
11
解决办法
26万
查看次数

"猫<< EOF"如何在bash中运作?

我需要编写一个脚本来输入程序的多行输入(psql).

经过一段谷歌搜索后,我发现以下语法有效:

cat << EOF | psql ---params
BEGIN;

`pg_dump ----something`

update table .... statement ...;

END;
EOF
Run Code Online (Sandbox Code Playgroud)

这正确地构造了多行字符串(从包含BEGIN;END;包含),并将其作为输入进行管道输入psql.

但是我不知道它是如何/为什么有效的,有人可以解释一下吗?

我主要是指cat << EOF,我知道>文件的输出,>>附加到文件,<从文件读取输入.

究竟做<<了什么?

它有一个手册页吗?

linux bash scripting heredoc

548
推荐指数
9
解决办法
82万
查看次数

如何在Bash中加入数组元素?

如果我在Bash中有这样的数组:

FOO=( a b c )
Run Code Online (Sandbox Code Playgroud)

如何用逗号连接元素?例如,生产a,b,c.

arrays bash

382
推荐指数
15
解决办法
20万
查看次数

如何从Bash中的路径字符串中删除文件后缀和路径部分?

给定一个字符串文件路径/foo/fizzbuzz.bar,如何使用bash只提取fizzbuzz所述字符串的一部分?

string bash filenames

366
推荐指数
8
解决办法
31万
查看次数

在Bash中的命令中扩展变量在单引号内

我想从一个bash shell脚本运行一个命令,该脚本在单引号和变量中有单引号和一些其他命令.

例如 repo forall -c '....$variable'

在此格式中,$进行转义并且不扩展变量.

我尝试了以下变化,但他们被拒绝了:

repo forall -c '...."$variable" '

repo forall -c " '....$variable' "

" repo forall -c '....$variable' "

repo forall -c "'" ....$variable "'"
Run Code Online (Sandbox Code Playgroud)

如果我用值代替变量来执行命令就好了.

请告诉我哪里出错了.

variables bash shell quotes

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

使用sed删除空行

我试图使用sed删除空行:

sed '/^$/d'
Run Code Online (Sandbox Code Playgroud)

但我没有运气.

例如,我有这些行:

xxxxxx


yyyyyy


zzzzzz
Run Code Online (Sandbox Code Playgroud)

我希望它像:

xxxxxx
yyyyyy
zzzzzz
Run Code Online (Sandbox Code Playgroud)

应该是什么代码?

unix linux sed

312
推荐指数
9
解决办法
43万
查看次数

在每行的开头添加前缀字符串

我有一个文件如下:

line1
line2
line3
Run Code Online (Sandbox Code Playgroud)

我想得到:

prefixline1
prefixline2
prefixline3
Run Code Online (Sandbox Code Playgroud)

我可以写一个Ruby脚本,但如果我不需要它会更好.

prefix将包含/./opt/workdir/例如,这是一条道路.

linux scripting text-processing

310
推荐指数
9
解决办法
33万
查看次数

如何使用'cut'找到最后一个字段

使用sed使用awk,当字段数量未知或每行更改时,如何获取最后一个字段? cut

linux bash cut

266
推荐指数
7
解决办法
22万
查看次数