我需要在 chown 命令上使用通配符。例子:
# chown app:demo /opt/app/users/*/demo
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
chown: can not access "/opt/app/users/*/demo" ': No such file or directory
Run Code Online (Sandbox Code Playgroud)
但不起作用。我能做些什么?
嗯...我已经在 Windows\xc2\xa07 上安装了 MinGW32(我不知道版本 - 安装在名为 Git 2.4.4.2 的文件夹中),并且我想安装 ImageMagick 来运行一些脚本,如下所示:
\necho " Creating different dimensions of "$1" ..."\n\nconvert $1 -resize 67% dir1/$1\nconvert $1 -resize 50% dir2/$1\nconvert $1 -resize 33% dir3/$1\nmv $1 dir0/$1\n\necho " Done"\nRun Code Online (Sandbox Code Playgroud)\n据我在谷歌上搜索,没有明确的详细指南如何安装它。我下载了这个ImageMagick版本:ImageMagick-i686-pc-mingw32.tar.gz
\n从官方 ImageMagick 站点指南中,我进入第一步,使用以下命令解压发行版:
\ntar xvzf ImageMagick-i686-pc-mingw32.tar.gz\nRun Code Online (Sandbox Code Playgroud)\n结果我得到了一个文件夹 ImageMagick-6.8.5。\n到目前为止一切顺利。但下一步Next配置并编译ImageMagick:
\ncd ImageMagick-6.8.5\n./configure\nmake\nRun Code Online (Sandbox Code Playgroud)\n我得到bash: ./configure: 没有这样的文件或目录。
\n这是我的照片:
\n\n这是ls -l结果:
我该如何解决这个问题?
\n我只安装了 MinGw32,没有安装 MSYS(正如我在不太详细的指南中读到的那样)。
\n我正在运行perf stat命令./start-server.sh -f server-config.xml:
perf stat -e cache-misses ./start-server.sh -f server-config.xml
我想将perf结果保存到文件中,例如通过附加&>out.txt到命令,但是如果我将输出写入文件,那么我会同时捕获输出perf和start-server输出。有没有办法让我执行此命令,以便仅perf将输出写入输出文件?
尝试使用 sed 从代码中删除所有注释行:
1)/* ... */和/* \n \n \n */
尝试使用这种结构来隐藏显示里面的内容
sed -n '/^\/\*/,/\*\//!p'
Run Code Online (Sandbox Code Playgroud)
但它似乎隐藏了不同行之间的内容并省略了内联/* .... */
我的意思是它在这里工作:
/********
This readme is intented ...
......
....
....
************/
Run Code Online (Sandbox Code Playgroud)
但它在这里不起作用:
/* Just a small bug */
Run Code Online (Sandbox Code Playgroud)
它采用第一个找到的内容并在下一行中/*继续进一步搜索:*/
/* Just a small bug */
code
code
code
/*****
To sum up this shows us...
...
...
...
...
******/
Run Code Online (Sandbox Code Playgroud)
所以“/*只是一个小错误*/”下的所有代码都被隐藏了:(我非常想念这个:
code
code
code
Run Code Online (Sandbox Code Playgroud)
2) // 内联:前面不包括 http:// 和 https://,后面包括 if
我正在尝试删除包含以下内容的字符串和部分字符串//:
sed 's/\/\/.*//' …Run Code Online (Sandbox Code Playgroud) 我将主机名列表存储在名为 ssh_hosts.txt 的文件中。在 shell 脚本中,我循环访问 ssh_hosts.txt 中的主机名,并通过 SSH 在指定主机上执行命令。shell 脚本如下所示。
问题是脚本在处理第一个主机后退出。但是,如果我除了通过 ssh 在指定主机上执行命令之外执行其他操作,脚本将运行完成。
在下面的示例中,我注释掉了对 ssh 的调用,并将其替换为当前主机名的简单回显。这将运行直至完成。
我从 Windows 7 上的以下 Cygwin 版本下运行的 bash shell 执行此脚本:
$ uname -a
CYGWIN_NT-6.1 myHostname 1.7.16(0.262/5/3) 2012-07-20 22:55 i686 Cygwin
Run Code Online (Sandbox Code Playgroud)
涉及到的SSH版本有:
$ ssh -V
OpenSSH_6.0p1, OpenSSL 1.0.1c 10 May 2012
$ ssh myUsername@remoteHost 'ssh -V'
myUsername@remoteHost password:
OpenSSH_6.7p1 Debian-5+deb8u3, OpenSSL 1.0.1t 3 May 2016
Run Code Online (Sandbox Code Playgroud)
这是 shell 脚本:
#!/bin/bash
if [[ $# -ne 1 ]]; then
echo "Usage: $(basename $0) <user name>"
exit 1
fi
USER="$1" …Run Code Online (Sandbox Code Playgroud) 我遇到一个奇怪的问题,可能与硬件初始化有关。我正在开发一个基于 Java 的自动数据采集系统,该系统在带有 Ubuntu 16.04 的 SBC 上运行。数据采集程序目前是通过 cron 启动的,尽管我打算切换到 systemd。
如果我重新启动系统,它就会启动并运行良好。但是,如果断电并冷启动(这是正常方式),程序将崩溃并出现错误free(): corrupted unsorted chunks。如果我再次启动它,它似乎运行良好。我需要找出原因,希望能找出原因,但这可能需要一些时间,同时系统需要进一步测试,我需要一种解决方法,可以在崩溃时重新启动它。仅添加延迟并没有帮助。
我想做的是重新启动 Java 进程或从 bash 包装脚本重新启动系统,但前提是它崩溃了。如果它以零退出代码退出(或者,理想情况下,以预定的允许退出代码集中的任何代码退出),则不应重新启动它,并且脚本也应退出。
我尝试从 bash 文件在 2 个不同的 TMUX 窗格中运行 2 个脚本。问题是它们都是阻塞的,所以一旦我从一个窗格执行一个进程,我就无法移动到另一个窗格来执行另一个作业。
我怎样才能克服这个问题?
我将发布代码示例。
#! /bin/bash
tmux split-window -v
tmux select-pane -t 0
./blocking_script_1
tmux select-pane -t 1 #doesnt happen
./blocking-script_2 #doesnt happen
Run Code Online (Sandbox Code Playgroud)
谢谢
利亚姆
我试图在常规语法中的以下命令中使用反斜杠:
find /path/folder-* -type f -iname "file*" -exec rm -f {} \;
Run Code Online (Sandbox Code Playgroud)
当我尝试在 Jenkins 管道上构建此命令时,会出现有关此语法的错误。甚至在我执行此命令之前,Jenkins 表单字段上就会出现红色语法警告,提示意外字符:“\”。
我可以做什么来替换或修复这个反斜杠的错误?
Groovy 命令:
node ("instance") {
stage ("cleaning folders"){
sh '''
find /root/logfiles/instance* -type f -iname "file*" -exec rm -f {} \;
'''
}
stage ("instance1"){
sh '''
rm -f /root/logfiles/instance1/*
echo instance1;
scp 100.0.0.50:/var/log/file1.log /root/logfiles/instance1/file1.log;
scp 100.0.0.50:/var/log/file2.log /root/logfiles/instance1/file2.log;
'''
}
stage ("instance1"){
sh '''
rm -f /root/logfiles/instance2/*
echo instance2;
scp 100.0.0.51:/var/log/file1.log /root/logfiles/instance2/file1.log;
scp 100.0.0.51:/var/log/file2.log /root/logfiles/instance2/file2.log;
'''
}
}
Run Code Online (Sandbox Code Playgroud)
注意:rm -f目前我对所有情况都有。将全部替换rm …
当我学习编写 bash 脚本时,我使用反引号将命令的输出放入变量中,例如,
ALLPDFS=`find . -name \*.\[pP\]\[dD\]\[fF\]`
Run Code Online (Sandbox Code Playgroud)
但大多数“官方”脚本(在 Linux 软件包等中下载的脚本)使用带有美元符号和括号的表示法:
ALLPDFS=$(find . -name \*.\[pP\]\[dD\]\[fF\])
Run Code Online (Sandbox Code Playgroud)
有充分的理由选择其中之一吗?我猜第二个更符合其他 bash 语法。虽然我尝试过计时
time for (( i=0; i<10; i++ )); do a=`find . -name \*.\[pP\]\[dD\]\[fF\]`; done
time for (( i=0; i<10; i++ )); do a=$(find . -name \*.\[pP\]\[dD\]\[fF\]); done
Run Code Online (Sandbox Code Playgroud)
这没有任何区别。也许有一种更适合堆栈/堆使用吗?
所以我编写了一个简单的 bash 脚本来在每次打开新的终端窗口时运行一个名为“cmatrix”的程序。
我已经更改了文件的权限,因此每个人都可以接收它,并验证它在调用时是否会按照我想要的方式运行,但现在我不知道将脚本放在哪里,以便它在每个新的 bash 上运行终端启动。我知道如果我希望它在启动时运行,我会将其放置在 usr/local/bin 中,但我只希望它在打开新的终端窗口时运行。
非常非常简单:
cmatrix -bs -C cyan
Run Code Online (Sandbox Code Playgroud)
感谢任何和所有的帮助!
谢谢