我想重命名几个文件的格式
libabc-x86_64-gnu-linux.a
libasdfgh-x86-gnu-linux.a
全部按格式
libabc.a
libasdfgh.a
使用Bash。我已经编写了regex (libpj[^-]*).*,它应该将有趣的部分保留在捕获组1中。
for i in `ls *.a`; do mv "$i" "${i/(lib[^-]*).*/\1}"; done
但是Bash给出了许多形式上的错误
mv: 'libabc-x86_64-gnu-linux.a' and 'libabc-x86_64
如果没有在我的Linux系统上安装Emacs,Bash命令行编辑默认模式仍然是Emacs。在没有Emacs的情况下,这是如何工作的?
我试着搜索Bash源代码,但还是无法理解。Bash是否将Emacs集成在自己的内部?
$ set -o
allexport off
braceexpand on
emacs on
: :
vi off
xtrace off
我在下面的世界里做错了什么?根据我对手册的解读,它看起来应该能工作。
A‘’?(不在括号之间)匹配任何单个字符。
$ touch file.txt file.text
$ ls file.*
file.text file.txt
$ ls file.te?xt
ls: cannot access 'file.te?xt': No such file or directory
$ bash --version
GNU bash, version 5.0.3(1)-release (x86_64-pc-linux-gnu)
在某些脚本中,我希望使用当前文件夹中文件夹的名称。我想得到文件夹名,我只会把有问题的部分放在这里的一个例子中。如果我从终点站运行这个,我会得到:
$ for D in */; do echo ${D%%+(/)} ; done
galaxya8
iphone6s
motog6
motog7
$ echo ${0}
/bin/bash
$ bash --version
GNU bash, version 4.4.19(1)-release (x86_64-pc-linux-gnu)
但是,如果将其放入文件并运行该文件,则会得到带有尾斜杠的名称:
$ echo 'for D in */
我已经创建了一个Dockerfile,内容如下: FROM ubuntu:bionic as builder
ARG DIGITALOCEAN_ACCESS_TOKEN
RUN apt-get update
RUN apt-get install -y curl
WORKDIR /app
RUN curl -L https://github.com/digitalocean/doctl/releases/download/v1.41.0/doctl-1.41.0-linux-amd64.tar.gz | tar xz
RUN curl -LO https://storage.goo
我不知道什么#?意思是,我什么也没发现
完整文件:
goplat=( darwin windows linux )
# Supported CPU architectures: amd64
goarc=( amd64 )
# Supported database tags
dbtags=( mysql mongodb rethinkdb )
for line in $@; do
eval "$line"
done
version=${tag#?}
if [ -z "$version" ]; then
# Get last git tag as re
在Linux上,我想用powershell替换bash脚本。脚本需要测试一个文件,以确定它是否是一个符号链接。在bash中,可以使用-L操作符:
if [[ -L "/tmp/mysteryfile" ]] ; then ; echo "It is a link" ; fi
我如何在Linux上的powershell中也这样做呢?
string="<tag>First Tag</tag>Some random text <tag>Second Tag</tag>More random text<tag>Third Tag</tag>"
pattern='<tag>(.*?)<\/tag>'
if [[ $string =~ $pattern ]]; then
parsedMatch=${BASH_REMATCH[1]}
echo -e "$parsedMatch&
我正在编写Makefile,需要访问HOSTNAME环境变量。没有可用的环境变量。这是Makefile:
all:
echo $(HOSTNAME) "b"
输出为:
echo "b"
b
我在虚拟机中的ubuntu 14.04上运行。gmake版本:
make -v
GNU Make 3.81
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warra
这些是我的样本文件
user@linux:~$ ls -l | cut -d ' ' -f 10-
01. old Name.txt
02. old Name.txt
03. old Name.txt
test.txt
user@linux:~$
这就是我想做的。
user@linux:~$ for output in *'old Name'*; do echo $output; done
01. old Name.txt
02. old Name.txt
03. old Name.txt
user@linux:~$
因为实际的代码多次使用old Name
当我执行逗号时,会发生以下错误
docker run -it --entrypoint=/bin/bash ld_mmdet:2.4.0 /bin/bash
docker: Error response from daemon: oci runtime error: container_linux.go:247: starting container process caused "exec: \"/bin/bash\": stat /bin/bash: no such file or directory".
然后我检查这些图像,发现cmd是空的,如下所示
&
长话短说,把我的问题缩小到一条线上:
for a in {a..z}; do echo "-$a" | grep "\-$a"; done
这个打印除了-e和-n以外的所有字母。
看起来像Linux版本,bash版本,标志到grep (-P,-E)等等都没关系!
经测试的环境:
GNU,版本3.2.57(2)-release (x86_64- SUSE - Linux -gnu) on SUSE 11 SP4
GNU,版本4.4.12(3)-release (x86_64-未知- Cygwin ) on cygwin (base-cygwin 3.8-1
我试着遵循这个链接来构建自己的JDK:
重述这些步骤如下:
hg克隆 YourOpenJDK
cd YourOpenJDK
bash ./get_source.sh .get
bash ./配置
使所有
在最后一步中,它显示了如下错误:
*** This OS is not supported: Linux compitition2 4.15.0-32-generic #35-Ubuntu SMP Fri Aug 10 17:58:07 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
/home/jon/Downloads/Open
我需要一个bash脚本,以便在Linux终端中使用,该脚本应该如下所示:
#!/bin/bash
for textgrid_file in ./*.TextGrid and for wav_file in ./*.wav
do
praat --run pitch.praat "$textgrid_file" "$wav_file" >> output.txt
done
也就是说,我需要通过扩展名为.textgrid和.wav的文件对进行迭代,因为在我的Praat脚本pitch.praat中,我有两个参数要传递。我如何通过bash脚本实现它