我有一个unix命令序列,它类似于:
command1 | command2 | command3 | wc -l
现在我有了行数,如果行数不等于某个特定的数字,我想做一些事情(运行一个没有输入的特定命令)。我的shell脚本非常陈旧(自从我做了很多Unix工作以来,可能已经10年或更长时间了),所以我不知道如何将这种条件添加到命令序列中。有人知道吗?您需要捕获wc命令的输出,并使用if运行另一个命令,如果它不等于您想要的行数,例如:
numberOfLines=$(command1 | co
我正在使用一个脚本,通过WGET在一个需要身份验证的URL上提取一些XML数据
在此过程中,我的脚本为访问的每个url(IP和主机名已更改以保护用户)生成以下输出:
为什么WGET抱怨在成功连接之前访问URL失败了两次?有没有办法在第一次尝试时关闭它,或者让它正确连接
作为参考,以下是我用来调用WGET的线路:
wget --http-user=USERNAME --password=PASSWORD -O file.xml http://host.name.com/file.xml
这似乎是
下面是一个示例字符串。我想以指定的格式从中获取输出
字符串:
/vob/TEST/@@@main/ch_vobsweb/1/vobsweb/main/ch_vobsweb/4/VobsWebUI/main/ch_vobsweb/2/VaultWeb/main/ch_vobsweb/2/func.js
文件名;文件路径
func.js;VOBSWeb/VosWebUI/VaultWeb/func.js
文件名列在整个字符串的末尾,它的路径应该使用每个数值后面的字符进行剥离(例如/1/VOBSWeb
我为什么要学习Shell编程呢?在现实世界中可以用它做什么?你能给我展示一些可以用它完成的功能强大的东西或一些特殊的功能,让我相信我应该马上开始学习shell编程吗?shell编程对于一些仍然可以完成很多工作的快速单行命令非常有用。最大的优点是不必保存代码
但是,您可以很容易地用python命令行来代替shell编程。大多数人使用shell脚本的第一件事是自动化一个简单的任务,比如备份。我的第一个脚本只是在玩Rsync。然后用cron调用脚本
其他有趣的事情:也许你需要搜索一堆文本,并在多个文件
我经常使用生成LaTeX文档,其中某些块是通过执行R代码动态生成的。这工作得很好——但是是否也可能有以不同方式执行的代码块,例如通过在shell中执行代码,或者通过运行Perl,等等?如果能够将这些东西混合起来,那会很有帮助,因此我可以运行一些shell命令来获取一些数据,运行一些perl命令来预处理数据,然后运行R命令来分析数据
当然,我可以使用所有的R块,并使用system()作为穷人的替代品,但这并不能使文档中的阅读非常愉快。除了通过R的外语接口(可能通过内联,如果支持的话)或系统()之外
我想用sed-e替换文件中的多个短语。问题是我想用一个字符串替换某些短语,是否有这样做的方法?因为当我使用
sed -e 's/foo/$bar/' -e 's/some/$text/' file.whatever
那么它就没有任何效果了…当你用字符串说话时,我相信你的意思是用变量。如果是这种情况,只需在sed命令周围加上双引号,而不是单引号。前者允许可变扩展,后者则不允许
sed -e "s/foo/$bar/" -e "s/some/$text/" file.whatever
仅当使用-
我是Unix环境的新手。请帮我解决这个问题。提前谢谢
我为我的id创建了新的.profile。通过输入。在此之后,我的bash提示符从$bash>更改为类似以下内容的mkis11@:/home/mkis11>
我试过cd。。cd/cd。这一切都涉及到mkis11@://>,甚至包括关闭和重新打开的会话。尽管如此,我还是得到了相同的mkis11@://>,有人能告诉我如何将其返回到$bash>
问候,,
UvanPS1=“\s-\v\\$”是默认的bash提示符(shell版本[$\35;]),例
我想在创建shell时处理shell的每个标准输出行。我想获取test.sh的输出(一个很长的过程)。我目前的做法是:
./test.sh >tmp.txt &
PID=$!
tail -f tmp.txt | while read line; do
echo $line
ps ${PID} > /dev/null
if [ $? -ne 0 ]; then
echo "exiting.."
fi
done;
但不幸的是,这将打印“退出”,然后等
我有很多日志,我需要每周压缩一次,这是每个星期六。我设法做了一个oneliner来做到这一点,但我不想重新压缩已经压缩的文件。例如:
ls myDir/
test1 test2 test3
在第1周的星期六,我将有:
ls myDir/
test1.bz2 test2.bz2 test3.bz2
在第2周,我会:
ls myDir/
test1.bz2 test2.bz2 test3.bz2 newTest1 newTest2
在第2周的星期六,我希望:
这是:压缩文件,但不重新压缩已
我有两个过程P1和P2。第二个进程P2无限运行。当第一个进程将要运行时,第二个进程将进入等待状态,直到第一个进程未完成
你能提供最简单的方法来处理这种情况吗
谢谢 你的问题不是很清楚。但这里有一些选择:
kill -s SIGSTOP $P2 #P2 - process id of P2
这将暂停P1运行时可以使用的P2,然后执行以下操作以继续:
kill -s SIGCONT $P2
或者在流程P2中使用等待:
wait $P1
这将等待P1结束
是否可以像下面那样拆分和对齐CSV行
ID Value
========
1 10
--------
2 20
--------
3 14
--------
请考虑以上作为CSV,无需关注第二栏(值)。
我想拆分第一列(ID)并将结果保存/存储到另一个文件中
输出应为:1,2,3
awk '!/^[-=]/ && NR!=1{str=str","$1}END{print substr(str,2)}'
测试您的问题没有明确说明,但对于您的特定示例,您可以:
{ awk
我一直在使用
grep -o string file | wc -l
获取字数,但我有一个文件的格式
help
help
help
how
how
luke
mark
我想知道是否有一个命令会返回:3,2,1,1
您可以使用
sort input.txt | uniq -c
哪个会输出
3 help
2 how
1 luke
1 mark
您可以从中继续处理输出。如果您已经知道相同的条目在一个连续的行块中,您当然可以跳过排序,直接使用uniq,这也将保留顺序。您可
我有一个shell文件,我想像这样使用它
./flow.sh connect localhost login user password
连接成功后,将等待下一个命令,
然后我将输入第二个命令,如
deploymenet xxxx.xml
现在我的问题是如何将2命令转换成1命令行,因为我想在ruby文件中调用它。
我在ruby中调用shell的方式类似于“%x[command1;command2]”。但它会出错,因为comand2将被视为shell命令,而不是cammand1之后的输入
如何
我想知道是否有一种方法可以调用Rsync,这样它1)可以向终端生成很好的详细输出,就像添加--progress标志时发生的那样;2)创建一个单独的摘要报告(减去详细的详细信息),这是使用--stats标志时得到的
这样我就可以在运行时看到它的状态,而不是创建一个怪物日志文件
也许这是不可能的,但我想我会问
谢谢
Dan我查看了手册页,无法找到解决方案,但您可能想尝试一下新的、更广泛的记录rsync 3.1产品的可能性,看看它们是否能让您更接近您的目标。
我试图找到在给定文件路径中创建的最新目录
ls-t根据文件或目录的时间戳对内容进行排序。但是我只需要目录。您可以使用这样一个事实:目录的信息开头有一个d
因此,您可以:
ls -lt /your/dir | grep ^d
这样,最后创建的目录将显示在顶部。如果您希望它是相反的,最旧的在顶部,最新的在底部,请使用-r:
ls -ltr /your/dir | grep ^d
您可以使用这样一个事实:目录的信息开头有一个d
因此,您可以:
ls -lt /your/dir | grep ^d
我有两个名为file1和file2的文件,现在我想从file1中选取值并在整个file2上搜索它,如果找到记录,则对file1记录应用操作,否则对file1记录应用其他操作
文件1
a
s
d
f
g
文件2
q
e
r
a
g
早些时候我用的是下面这样的
awk -F'|' '{if($1="abc" || $1="a") print ......}' file1
现在我有多个值要比较,我已经把这些值放在文件abc,a。。。。。
但我不知道如何使用它
请帮助执行此操作的常用方法是将正在
出于我的项目目的,我想编写一个shell脚本程序,它在后台运行,充当指定avi文件的侦听器。当从终端播放该avi文件时,我的脚本文件在播放该avi文件之前应得到通知并执行某些命令。我可以借助trap命令或其他一些技巧来实现这一点。我不认为trap能做你认为它能做的事。这种功能超出了shell脚本的范围。你到底想解决什么问题?也许有更好的方法可以做到这一点。这有嗅探用户行为的味道……这最终是特定于平台的,但在linux上,您可以使用inotify机制。还有一些工具包括python包装器和OSX
请指导我在unix中创建一个shell脚本,该脚本将文件从unix文件夹(例如:ABC/Users/FP.xls)复制到Windows共享文件夹/目录?假设已提供Windows共享目录访问。请分享你对此的想法 您需要smbclient,它是一个用于访问windows共享的命令行UNIX客户端,语法类似于FTP。在linux系统上,您还可以创建到的远程装载点。或者,在Windows上安装。你想要哪个?@Peter…我不想从windows共享驱动器访问文件。我只是想将一个文件从Unix复制到Wind
我有一个包含大量绝对路径字符串的xml文件(例如/home/matt/somefolder/somefile.c)。我想将它们全部替换为相对地址(/somefile.c)。我的脚本看起来像这样,它似乎没有替换路径字符串
tmp=`pwd`
cat a.xml | sed 's/$tmp/.' > a.xml
这应该可以做到:
tmp=$(pwd)
sed "s#$tmp#.#" a.xml > a2.xml
请注意双引号,以确保替换了$tmp。由于路径包含斜杠,因此最好为sed使
我想把变量命名为a_${v}
例如:v可以是2013年或2014年
我现在向a_${v}
a_${v}=hI # a_2013 should be Hi
v=2014
因此,a{v}=Hello#a{2014应该是Hello
我尝试使用eval命令,尽管它在赋值时没有抛出错误,但我无法提取变量名的值
$ v=2013
$ eval a_${v}=Hi
$ v=2014
$ eval a_${v}=Hello
echo ${a_${v}}
不工作..:(
我正在使用bash,不想更
我有一个带有文件参数的作业,我想按计划运行该作业。我想上传一次文件,让jenkins继续在将来的所有版本中使用这些文件。如果不编写自己的插件,这是可能的吗?我知道托管脚本插件,这并不能满足我的需要。关键是能够让用户将文件上传到工作区,并将其设置为按计划运行。更简单的方法是在构建步骤中运行上传的文件。有这样的插件吗
为了清楚起见,我想上传shell脚本,并在计划作业的构建步骤中使用它们。设置一个文件参数是我能得到的最接近的参数,但是在每次构建之后,该参数都会被删除,并且必须重新上传该文件。我使用J
我在工作中使用Windows上的GNU makefiles,并尝试边学习边学习。给我带来这么多麻烦的配方是
$(SED) -n "/Format ID $(def_format_id)/,/End Format ID $(def_format_id)/ p" "$(def_format_altsec_header)" > "$(def_format_file)"
对于C:/GNU1_06/bin/sed:-e表达式#1,char 7:unterminated address regex,
我希望有人能帮我一把。我刚刚开始学习使用Bourne shell在Unix中编写shell脚本,但遇到了一个问题
我正在尝试制作一个脚本,它获取一个包含一系列数字的文件,并通过while循环读取它,然后检查数字是否大于30。如果是,它将增加一个计数器。最后,它反映了一个大于30的数字的多少倍
该文件看起来与此类似,但更大
0107
0027
0110
这是我的密码
#!/bin/sh
count=0
while read p;do
if ["$p" -ge 30 ]
then
count=`
我是shell脚本的初学者,我正在尝试从文件中删除一些文本
abcdefghijk:12
如何将:替换为空白,我尝试了sed,但我的方法似乎没有任何作用?
之后,使用cut切割第一列是否正确
目前唯一有效的方法是调用该文件
while read line
do
name=$line
echo"Lines read - $name"
done < $1
您可以使用sed的替换命令s来执行此操作
sed 's/:/ /g' file.txt
结尾的g表示它将在每一行上用空格替换所有
我正在开发一个具有10个节点的并行系统(Bewoulf集群)。启动NFS服务器后,我使用ssh连接到每个节点,然后使用下面的命令在每个节点上分别装载NFS文件夹
$ sudo mount 192.168.1.100:~/mpi ~/mpi
ssh到每个节点并运行命令,有点耗时
是否有其他方法运行一个命令或shell脚本;因此,将在每个节点上自动执行“mount命令”并装载共享文件夹?一个非常简单的方法是在每个节点上使用ssh
for host in $(cat hosts); do
ss
在shell脚本中,我必须运行一个命令,我需要确定返回代码是什么,但结果是命令的输出转到stderr,并输出用户的密码(不幸的是,这是命令的一个参数;我知道是错误的)
我至少希望过滤passwd,使其不会显示回来
cmd ${OPTIONS}
RETURNCODE=$?
给我命令的返回码
cmd ${OPTIONS} 3>&1 1>&2 2>&3 | sed "s:${PASSWD}:******:"
RETURNCODE=$?
已成功筛选PASSW
为了说明上下文,我对我们在这个线程中的coleague@JOB有同样的怀疑:,好了,问题解决了。
我有一个问题与之相关:为什么当我们在环境Linux上时,从命令TSO OMVS,我们不能看到我们的数据集,PDS?
或者这是可能的?您必须了解z/OS数据集和OMVS文件生活在两个不同的世界中:
z/OS数据集确实有一个由一系列限定符组成的名称,但实际上并不是以分层的方式组织的,它们分布在一个(虚拟)磁盘集群上,您有几个目录可以再次找到它们。没有目录这样的东西:虽然您可能有一个名为MY.COOL.D
我有一个CSV文件,它似乎是用UTF-8正确编码的
iconv -f UTF-8 file.csv -o /dev/null # returns 0
当我尝试将文件重新编码为cp1250(尝试过重新编码/iconv甚至Perl)时,生成的文件以iso-8859-1编码——至少根据
file -i resulting_file.csv
resulting_file.csv: text/plain; charset=iso-8859-1
服务器上的区域设置为
LANG=
我从spark shell中调用了take()RDD[LabeledPoint]方法,这对spark来说似乎是一项艰巨的工作
火花壳显示一个进度条:
进度条一次又一次地填满,我不知道如何根据上面的数字合理估计所需的时间(或总进度)
有人知道这些数字是什么意思吗
提前感谢。数字显示正在运行的Spark阶段、阶段中已完成、正在进行的任务数和总任务数。(见
有关进度条的详细信息。)
Spark阶段并行运行任务。在您的情况下,目前有5个任务并行运行。如果每项任务花费的时间大致相同,这应该会让您了解需要
我希望maven将shade插件创建的uber jar与all_files目录中的shell脚本结合起来
项目结构如下所示:
all_files/
mvn_script.sh
projB-shaded.jar
maven_project/
guide/
parent-pom.xml
projA/
pom.xml
projB/
pom.xml
jar由
我正在尝试编写一个shell脚本,以便在Ubuntu 14.04上找到替换这行代码的方法
//Code before script runs
/*define('FS_METHOD','direct');*/
//Code after script runs
define('FS_METHOD','direct');
sudo sed -i "s@/*define('FS_METHOD','direct');*/@define('FS_METHOD,'direct');@g" /home
我想写一个expect脚本,它可以完成一些任务,并最终更改目录并将控制权交给用户。我试着用
spawn cd path\to\dir
互动
但我仍然在同一个目录中。
关于如何使用expect完成此任务的任何线索?要更改expect脚本中的目录,您不需要使用关键字“spawn”,没有它也可以工作。
您可能有点困惑,因为在执行脚本的终端中,您将停留在同一目录中,但脚本更改了它执行操作的目录。我想您已经生成了一些命令(如ssh、bash),并且生成的命令仍在运行。最后你可以这样做:
send "cd
如何使用日期格式设置以下输出。。!?
日期命令输出应如下所示:
Mon Oct 24 12:01:32 SGT 2016:
这将提供预期的输出 你试了什么?你有没有试着找到答案?我知道了。。!日期+%a“%b”%d“%T您自己接受答案,在问题解决后标记(或)删除问题。并使用以下内容保存一些击键:date+%a%b%d%T%Z%Y”
date +%a" "%b" "%d" "%T" "%Z" "%Y
这是我的NDM脚本:
#!/bin/bash -x
#/cdunix/ndm/bin/ndmcli -x -e 4 << _EOF_
#sub maxdelay=unlimited statemnt process snode=$DEST_NODE
export NDMAPICFG=/home/drone/ndmscripts/ndmapi.cfg
NDM_FILE=$1
DEST_FILE=`basename $1`
DEST_NODE=XXX
/cdunix/ndm/bin/nd
我想自动化将大型gzip文件拆分为较小的gzip文件的过程,每个拆分包含10000000行(最后一次拆分将剩余,并且将少于10000000行)
下面是我目前的做法,我实际上是通过计算剩余行数来重复
gunzip -c large_gzip_file.txt.gz | tail -n +10000001 | head -n 10000000 > split1_.txt
gzip split1_.txt
gunzip -c large_gzip_file.txt.gz | tail -n
我有一个源代码:
#!/bin/bash
CLASSPATH=Test/bin/
java -cp ${CLASSPATH} "test.shell.com.RunTest"
该代码返回错误,内容如下:错误:找不到或无法加载主类test.shell.com.RunTest
但当我将其更改为:
#!/bin/bash
java -cp Test/bin/ "test.shell.com.RunTest"
它返回RunTest类的正确结果。
我尝试将CLASSPATH更改为其他名称,但仍然出错。
我正在制作一个应用程序tiny PHP网站,将我的AirBnB客人信息发送给警察,这是我必须做的事情——这是他们在酒店里做的事情,当他们在办理登机手续时拿走你的护照
该应用程序需要生成一个包含客人数据的文件,然后通过数字签名电子邮件发送给捷克警察局。第一部分已经完成了,但我还得和马特再呆一天
我的目标是发送一封S/mime签名的电子邮件,带有一个带有shell脚本的附件,无需任何用户交互。比如说:
mutt -s 'My mail ' abc@gmail.com -a report1.txt &
我有一个日志文件,它每秒钟都在更新。我想获取最后10分钟的数据。我试过这样的awk:
awk \ -v time1="$(date +"%F %R" --date=@$(expr `date +%s` - 600))" \
-v time2="$(date "+%F %R")" \
'$0 ~ time1, $0 ~ time2' \ filename
但它不起作用。有人能帮忙吗?给出文件的示例数据,清楚地提到存储时间的列和预期输出。空格前的所有反斜杠是什么?170605 01405005 x
当我按如下方式进行wget时,文件名为sample.txt?st=2017-07-19T06%3A00%3A00Z“
我不想像下面这样使用,因为它不适合我的场景
wget -O $filename -q "https://sample.blob.core.windows.net/test/sample.txt?st=2017-07-19T06%3A00%3A00Z"
但我想在使用wget命令下载时将文件名另存为sample.txt。如何实现这一点?如果我的理解是正确的,下面的脚本应该可以工作
结果表明:
- name: check process is running or not
shell: ps -ef |grep abcd |grep defg
register: result
ignore_errors: yes
- debug: msg="{{ result.stdout }}"
但如果我登录到该机器并直接运行:
TASK [debug] ***********
ok: [52.35.61.9] => {
"msg": "ec2-user 28932
我想通过bash脚本运行org模式命令。例如,在我定义的项目下,我有几个组织模式文件要导出为html。然后我将文件同步到web服务器等。出于这个原因,在不打开emacs并将文件导出为html文件的情况下,我希望从bash脚本执行此操作
如何运行组织模式命令,如
M-x org-publish-project
然后输入项目名称,比如说,试用项目。如何在shell脚本中执行此操作?您可以编写一个elisp函数,打开必要的缓冲区,然后进行导出。然后,如果您的emacs正在运行,您可以使用EmacCl
我在AWS上有一个RDS DB,它有你的基本用户表,包括名字、姓氏和电子邮件地址。
我的公司需要发送大量电子邮件,我们的服务器,或者基本上是gmail的别名。
我的问题是:
我如何构建一个模板电子邮件,它将从gmail发送出去,但是通过遍历RDS上的用户表,输入大量电子邮件的名字、姓氏,并将电子邮件地址放入电子邮件的收件人框中?有很多简单而强大的工具可以为您发送大量电子邮件-,MailChimp,活动监视器、自动驾驶仪和其他一些功能。rds的风格是什么?sql server,postgres?更
我们需要写一个脚本,输入包含行数的文件,
其中一条管线上有5个测力计(1 | 2 | 3 | 4 | 5)
假设文件有3行,如
20 | 30 | 10 | 40
40 | 50 | 60 | 70
5 | 3 | 2 | 1
我们需要逐行读取文件,并检查第二个delimeter值是否大于第三个值(即30>10)。如果为真,则打印整行,以及打印第二个值>第三个值的所有行
需要任何人的帮助
提前感谢。这里有一种方法。将文件读入一个循环中,对于每一行,将其拆分为一个数组,如果arr[1]>arr[2
显然,,,和
大家好
我刚刚删除了我的内部启动驱动器,并从MacOS10.10.5升级到MacOS10.14.3
;-)
我有一个备份驱动器(diskutil list追加在我的sig下面)。只要我打开它,它就会很好地装载,但是如果我使用Finder或Terminal卸载驱动器,Terminal就无法重新装载它。这是终端的两条线路:
ME$ diskutil mountDisk disk2
One or more volume(s) failed to mount
(引导时,我也无法使用cmd-r进入恢复卷
我想每1分钟检查一次NGINX是否正在运行。
我的shell脚本是:
#!/bin/sh
ps auxw | grep nginx | grep -v grep > /dev/null
if [ $? != 0 ]
then
echo "NGINX is not running"
/etc/init.d/nginx start
else
echo "NGINX is running"
fi
使用sh launch.sh正确运行脚本(如果NGINX未运行,请运行NGINX)。
问题是,当我
我有一个CSV文件中的数据如下
Emailid Storeid
a@gmail.com 2000
b@gmail.com 2001
c@gmail.com 2000
d@gmail.com 2000
e@gmail.com 2001
我期待下面的输出,基本上找出每个商店有多少个电子邮件ID
StoreID Emailcount
2000 3
2001 2
到目前为止,我试图解决我的问题
IFS=","
while re
我正在编写一个Python脚本,处理不同shell脚本的退出代码
当我通过命令提示符调用shell脚本并使用echo$?请求退出代码时,我得到一个1。
当我通过python脚本调用shell脚本时,我假设值为1,但结果却是256
发生了什么事
这是我测试相机的shell脚本:
#!/bin/bash
#cam.sh
if [ -r /dev/video0 ]
then
#taking a picture
ffmpeg -f video4linux2 -s 640x480 -i
我有一个像下面这样的文件
first line
second line
third line
fourth line
fifth line
如何使用shell命令删除匹配行和前两行?例如,我想匹配第四行并删除第四行、第三行和第二行。我知道我可以使用sed-I'/second/q“filename删除匹配行后的行,但是如何实现删除珍贵行?请您尝试使用GNUawk中显示的样本编写并测试以下内容。使用要在该特定行中匹配的字符串更改$0==“第四行”
tac Input_file |
awk -v
标签: Shell
commandfile-copyingmeson-build
我测试了C和shell源文件。介子将从构建目录运行。从我的C源代码编译的二进制文件会自动复制到构建目录中(指定为executable()),如何复制这些shell脚本
或者我应该从源目录运行/source它们,例如
test = join_paths(meson.source_root(), 'tests/run.sh')
run_command(test, "--foo", "bar")
还是使用
好的,在系统路径中搜索,因此不适合。将文件复制到生成目
上一页 1 2 3 4 5 6 7 8 9 ...
下一页 最后一页 共 437 页