Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
 Shell_IT技术博客_编程技术问答 - 「Fatal编程技术网」

Shell 第三方windows命令行程序?

正在寻找更好的Windows XP命令行界面。VisualStudio命令提示符不如Linux/OSX终端好 想法 编辑: 回答:Sourceforge上的控制台和Windows Powershell。谢谢,我去把它们挖出来评估一下。 Cygwin包的开销太大,无法满足我的需求 edit2: 现在看起来像是Windows Powershell。它的复制和粘贴功能不是很好,但MS支持它 看看控制台2 它的特点是: “多个选项卡、文本编辑器(如文本选择)、不同的背景类型、alpha和颜色键透明度、可

Shell while read循环+在while循环中创建一个进程

以下测试脚本有问题。当我在脚本中添加sleep5&行时,whileread循环不会从文件中读取所有行,而是只打印第一行 但是当我从脚本中删除sleep5&时,脚本会打印文件中定义的所有行 为什么睡眠会导致这种情况 如何解决这个问题?我想创建一个新的进程,睡眠只是while循环中的一个例子 $ more test #!/bin/ksh while read -r line ; do echo $line ( sleep 5 )& RESULT=$! sleep 1 kill $

Shell 更改文件名后缀(使用sed?)

我想更改files的文件名后缀(使用bash脚本),但有时有些文件有一个句点,有些文件有两个句点 现在我用这个: new_file=`echo ${file} | sed 's/\(.*\.log.*\)'${suf}'/\1.'${num}'/'` 其中,“new_file”是新文件名,“file”是原始文件名,${suf}是文件的后缀,${num}是一个新数字 因此,some.log必须变成some.log.1,some.log.1必须变成some.log.2。在我的代码中,some.lo

Shell 如何仅从字符串中获取数字?

假设我有这样一个字符串: blah=-Xms512m 我希望输出为512 我知道我可以在Linux上使用grep获得它,如下所示: echo$blah | grep-o-e[0-9]\\+ 但这在Solaris上不起作用 有什么好的解决方案可以在Linux和Solaris上兼容吗? 或者至少在Solaris上?如果您知道这些数字会这样组合在一起: pax> echo 'blah=-Xms512m' | sed 's/[^0-9]//g' 512 它基本上用零替换所有非数字字符。当然,它不

shell脚本中的passwd命令

我正在制作一个自动创建用户的shell脚本,但我想不出如何在shell脚本中使用passwd命令,我应该如何将它与shell脚本一起使用--stdin选项对我不起作用试试。一些passwd的实现具有--stdin标志,您可以这样使用: passwd --stdin user <<<"SoMePasSw0rd" passwd--stdinuser在Debian上为我工作 echo -e "$NEWPASS\n$NEWPASS" | passwd $USER

Shell 使用rot13和tr命令获得加密的电子邮件地址

我在网上读了很多关于“tr”命令用法的教程。 但是,我无法理解如何用shell脚本加密电子邮件地址,并使用rot13转换字符。任何人都可以给出一个链接或一个例子吗?不确定您想如何使用它,但这里有一个基本的例子可以让您开始: echo 'fooman@example.com' | tr 'A-Za-z' 'N-ZA-Mn-za-m' 为了简化操作,您可以在.bashrc文件中将tr命令别名为: alias rot13="tr 'A-Za-z' 'N-ZA-Mn-za-m'" 现在你可以打电话:

Shell 如何一次运行多个Unix命令?

我还是Unix新手。是否可以一次运行多个Unix命令?比如把我想运行的所有命令写在一个文件中,然后在我调用该文件后,它会运行该文件中的所有命令?或者有没有我不知道的方法(或更好的方法) 感谢您提供所有的意见和建议,我将不胜感激。简短的回答是,是的。这个概念被称为shell脚本,或bash脚本(一种常见的shell)。为了创建一个简单的bash脚本,请创建一个文本文件,顶部有: #!/bin/bash 然后将命令粘贴到其中,一行一行 保存文件,通常扩展名为.sh(但不是必需的),您可以像以下方式

Shell 读到空间

我要读取文件的第二行: $(sed -n 2p $file) 这很好,但我只想读这行,直到第一个空格。 有什么办法吗?这个怎么样: $ sed -n 2p $file | cut -d " " -f1 您可能想尝试以下方法: $(sed -n '2s/ .*//p' $file) 它与您的类似,只是s命令将空格及其后的任何内容(*)替换为零,即删除行的其余部分。您可以将行拆分为一个数组,然后一次读取一个字 while IFS=" " read -a word; do # storing t

Shell 在程序内自动执行命令

我有一个dnapars程序 我从命令行执行程序,如下所示: /德纳帕 然后,程序会以用户菜单的形式提示我一些消息,我必须从中选择一系列选项(按R U Y R的顺序),然后将输出文件(输出文件)复制到另一个结果文件中。 我编写了下面的脚本,但是执行挂起在应该执行R选项的地方 for i in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 do cp ../../../EditDistanceRandomParsimonator/RAxML_p

Shell 比较for循环中的两个变量

我需要做一个for循环,但我对shell比较陌生。我想要相当于: For i = 1 to limit 正如在Visual basic中一样,“limit”是一个变量,设置为我希望for循环持续多长时间。for I,单位为$(seq 1 limit);做完成如果: limit=10 然后在zsh中使用: for i in {1..$limit}; do echo $i; done 在bash中,使用jordanm或Lars Kotthoff建议的答案,或使用以下内容: for i in $

Shell 从目录中查找文件(如果存在或不存在)

我有一个包含多行文件的文件。我还有一个目录,其中包含所有文件,现在我想通过shell脚本查找文件中列出的文件是否存在于目录中。迭代并测试 cat filelist.lst | while read filename do if [ -f directory/$filename ] then echo File $filename exists # build up a list exists="$exists directory/$filename"

Shell Solaris上参数10及以上的错误替换错误

我需要在脚本中处理10个以上的参数。 我在第9个参数后声明并赋值,如下所示 param10=${10} param11=${11} param12=${12} 它在linux中运行良好,但在solaris中则不行。我得到了糟糕的替代 有谁能帮我读取10个以上的参数,这对solaris和linux都适用。可能已经过时,但根据: Bourne shell仅支持位置参数$0到$9。 要访问参数10或更大,必须使用“shift” 指挥部。班次将从$2移动到$1,从$3移动到$2,等等($0是 正在调用

Shell AWK脚本中的嵌套getline

请告诉我是否可以在AWK脚本中使用嵌套的getline,如: while ( ("tail -f log" |& getline var0) > 0) { while ( ("ls" | getline ) > 0) { } close("ls") while ( ("date" | getline ) > 0) { } close("date") } close("tail -f log") 我们可以利用嵌套

Shell 壳比较数

我试着比较两个数字,下面的代码有什么错误 filesize=$(stat -c '%s' ${FILENAME}) if [ $filesize -gt 12 ] ; then echo "Yes bigger "; fi 我没有收到任何错误,但我从未打印过“是的,更大”字样。解决了它。在比较之前,我重复了“文件大小” filesize=$(stat -c '%s' ${FILENAME}) if [ $filesize -gt '12' ] ;

Shell脚本:循环gunzip和grep语句

我正在尝试创建一个shell脚本: 将文件从我的日志目录复制到单独的目录以进行分析 Gunzips文件并查找文本模式 将该模式输出到文件以供进一步分析 删除所述文件 我正试着分阶段做这件事。到目前为止,我还没能离开地面。叹息 我从这里提取了这个示例,并开始修改它: #!/bin/bash FILES= `ls /opt/dir1/scripts/access_*.gz` for i in $FILES do cp $i /tmp/apache gunzip $i

如何使用awk/shell脚本来执行SQL Where子句和SQL连接,如筛选和合并行和列?

我有一个巨大的数据集,比如说15-20GB,它是一个制表符分隔的文件。虽然我可以用Python或SQL来完成,但用Shell脚本来避免移动csv文件会更容易、更简单 例如,采用管道分隔的文件输入: ---------------------------------------- Col1 | Col2 | Col3 | Col4 | Col5 | Col6 ---------------------------------------- A | H1 | 123 | abcd | a

Shell Unix脚本编写whoami/$USER未按预期工作

嗨,我有下面的脚本 if [[ 'whoami' -eq "test" ]]; then echo "test user" else echo "Not a test user" fi 这将返回测试用户,即使我的用户不是文本。如果有人能指出我愚蠢的错误,那就太好了。你用单引号代替反勾号: if [[ `whoami` -eq "test" ]]; then # Not 'whoami' 为了提高可读性和简化嵌套,如果适用,请使用 if [[ $(whoami) -eq

Shell Unix时间和闰秒

关于Unix(POSIX)时间,他说: 由于其对闰秒的处理,它既不是时间的线性表示,也不是UTC的真实表示 但是Unixdate命令实际上似乎并不知道它们 $date-d'@867715199'-utc 星期一6月30日23:59:59 UTC 1997 $date-d'@867715200'-utc 1997年7月1日星期二00:00:00 UTC 而1997年6月30日星期一23:59:60协调世界时应该有闰秒 这是否意味着只有date命令会忽略闰秒,而Unix时间的概念不会忽略闰秒?每天

Shell Unix:从文件中获取最新条目

我有一个文件,里面有名字和时间。我只想保留最新时间的条目。我该怎么做 例如: >cat user.txt "a","03-May-13 "b","13-May-13 "a","13-Aug-13 "a","13-May-13 我正在使用命令sort-u user.txt。它给出以下输出: "a","11-May-13 "a","13-Aug-13 "a","13-May-13 "b","13-May-13 但是我想要以下输出 "a","13-Aug-13 "b","13-May-13

Shell 确定是否安装了最新版本的PIP命令?

是否有pip命令来确定是否安装了最新版本的软件包 我正在编写一个shell脚本,需要确定是否安装了最新版本。如果没有,则我的脚本需要手动安装该包。(如果有人好奇,需要手动安装,因为libjpeg的标题和库位于非标准位置。) 介绍如何检索当前安装的软件包的版本,但我还需要可供下载的最新版本,以及比较版本的一些方法。'pip search'提供了这些信息。e、 g: $ pip search SOAPpy SOAPpy - SOAP Services for P

Shell 是否编写crontab条目,以便在每个月的第一个星期一打印报告文件/usr/aa1/finacc/bsheet?

有人建议我如何在每个月的第一个星期一运行cron作业吗 对吗 0 0 ? * 1# /usr/aa1/finacc/bsheet 这应该起作用: 0 0 1-7 * 1 /usr/aa1/finacc/bsheet 各栏: 第0分钟 第0小时 月日1-7中的任意一天 任何月份 星期一你可以说: 0 0 1-7 * * [ "$(date +\%A)" == "Monday" ] && /usr/aa1/finacc/bsheet 用于在一个月的第一个星期一午夜执行命

for循环中的变量在shell脚本中没有给出正确的输出

sh版本:1.14.7 #!/bin/sh cpu_to_eth1=10 cpu_to_eth2=20 cpu_to_eth3=30 cpu_to_eth4=40 i=0 for i in 1 2 3 4 do echo "value of the $i th varible is $cpu_to_eth$i" done 它工作不正常,输出应为 value of the 1 th varible is 10 value of the 2 th varible is 20 value of t

如何使用shell脚本访问所有子目录中的所有文件?

我希望对目录的所有文件以及该目录子目录中的所有文件执行以下命令: cat filename | col -b > filename 此命令将从文件中删除控件M或^M字符,并可用于单个文件。请帮忙。。。 我在命令下试过,但不起作用。它适用于单个目录,但不适用于子目录 for i in * do cat i | col -b > i done find-类型f-exec sed-i的/^M/'{} 请注意,通过按ctrl-V然后按ctrl-M来执行^M,而不仅仅是^M

Shell 仅打印文件A中而不是文件B中的单词

我有两个文件,我只需要打印第一个文件中的单词(不是完整的行),而不是第二个文件中的单词。我试过wdiff,但它打印完整的行,没有用 文件样本: وكان مكنيل وقتها رئيس رابطة مؤرخي أمريكا ـ كما فهمت - من شاهد الحادثة. ثم يصف كيف قدم مكنيل الرجلين الخصمين, فكانت له صرامته, إذ حدد عشرين دقيقة فقط لكل منهما أن يقدم رأيه وح

将唯一字符串解析为posix sh shell中的变量

我有一种奇怪的行为,我无法理解;在某些时候,我需要将一些标志传递给脚本,其中一个标志应该执行脚本中使用的一系列选项,例如,我调用脚本作为 sh script.sh --flag1="-options1=value1 -options2=value2" --flag2 结果是 -options1=value1 -options2=value2 1 ,因此,flag1神奇地显示为一个多行声明,发生了一些事情,我真的不明白这种行为背后的逻辑 这是完整的脚本 parse() { while [

使用shell脚本将脚本从一个文件复制到另一个文件

基本上,我想将几行代码从模板文件复制到脚本文件。 甚至可以使用sed复制一个包含与脚本交互的符号的字符串吗 我用了以下几句话: $SWAP='sudo cat /home/kaarel/template' sed -i -e "s/#pointer/${SWAP}/" "script.sh" 输出为: ./line-adder.sh: line 11: =sudo cat /home/kaarel/template: No such file or directory 该线路存在两个问题:

Shell脚本:计算单个文件夹中特定类型扩展名中的文件数

我是新的shell脚本。 我需要使用shell脚本在变量中保存具有特定扩展名(.properties)的文件数 我用过 ls |grep .properties$ |wc -l 但此命令打印文件夹中属性文件的数量。如何在变量中指定此值 我试过了 count=${ls |grep .properties$ |wc -l} 但它显示的错误如下: ./replicate.sh: line 57: ${ls |grep .properties$ |wc -l}: bad substitution

Shell 用多个字符替换新行

好的,所以我知道替换新行的最佳方法通常是执行类似于tr'\n'或类似的操作,但是这只适用于单个字符 我想做的是替换新行,但插入比单个字符更长的内容;在我的例子中,我实际上想添加一个时间戳,这样: foo bar [11:30] foo [11:30] bar 变成这样: foo bar [11:30] foo [11:30] bar 我需要通过替换新行字符本身来做到这一点,因为我不能保证最后一行输入将在我处理它时完成(例如,它可能是从printf“%s”的“foo”输出的,因此还没有行结

Shell 替换特殊字符

我有一个包含各种特殊字符的文档,例如éÆoºI 我编写了以下两个命令,它们都适用于“单一外观”字符,例如Ã±È 但是,这两种方法都不适用于上面列出的特殊字符 此命令使用两字节十六进制小数(用A替换A) 此命令使用utf8替换字符: CHARS=$(python -c 'print u"\u00a9".encode("utf8")') sed -i 's/['"$CHARS"']/A/g' $filename 这两个命令中的任何一个都可以工作,但两个命令都不能工作。看起来您正在将UTF-8

Shell 确保在远程服务器上成功执行脚本

我在本地系统上有一个脚本,它调用远程服务器(服务器a)上的脚本来执行。脚本中触发远程服务器脚本的命令如下所示 ssh <user>@<server ip> "bash -s < ./shell_backup_trx_db.sh" ssh@“bash-s/dev/null 2\>\&1 然后 #触发mysql和mongo的生产数据库。 ssh@“bash-s&2 出口1 fi 为什么要使用bash-s

Shell 两级';对于';自定义列表的循环

使用两级for循环和seq工作正常,代码 for i in `seq 0 3`; do for j in `seq 0 3`; do echo $i $j; done; done 给出了预期的输出: 0 0 0 1 1 0 1 1 但如果我想要一个更为定制的数字列表: for i in '-1 4.5'; do for j in '0 -2.2'; do echo $i $j; done; done 我得到输出 -1 4.5 0 -2.2 有没有一个简单的方法可以做到这一点 var a

传递星号的Shell脚本

我继承了一个shell脚本,它使用变量执行命令。 我已经添加了更多的细节,很抱歉我之前不清楚细节,我对Shell脚本不是很熟悉 #!/bin/sh ExecuteCommand () { Command=`echo -e ${2}` Comment=${4} echo "INFO: ${Comment}" echo "# ${Comment}" >> ${CommandsLog} echo "${Command}" | paste -s -d'

Shell 如何在fedora启动期间启动脚本或命令

我尝试了两三个小时,在Fedora23的引导过程中用脚本执行命令 我看到了一些关于chkconfig的教程,但在我的fedora上,我只有systemctl,chkconfig太旧了没有 我尝试创建服务,但即使在重新启动后执行:systemctl enable my_service时,也不会执行我的服务。手动systemctl启动我的\u服务工作 但更奇怪的是,服务启动是因为当我编写systemctl list unit files–type=service时,我看到我的iptablesvpn.

如何替换文本中的所有下划线,Unix Shell中特定单词或模式的下划线除外

我有一个包含很多下划线的文件,我必须用空字符串替换所有下划线,除了那些属于特定字符串usr_mstr的下划线。 我试过sed命令,它会替换下划线并排除我提供的单词,但它也会替换紧跟在下划线后面的字符!任何帮助都将不胜感激 echo "fname_sname_id_usr_mstr" | sed 's/_[^usr_mstr]//g' 预期产出: fnamesnameidusr_mstr 实际产量: fnamenamedusr_mstr (s和i被替换)[^usr\u mstr]是一个字符类

找不到Ansible shell命令“pod2man”

我正在尝试通过Ansible使用脚本安装pacaur: curl -s https://gist.githubusercontent.com/Tadly/0e65d30f279a34c33e9b/raw/pacaur_install.sh | bash 用ansible命令 ansible 192.168.1.2 -m shell -a "curl -s https://gist.githubusercontent.com/Tadly/0e65d30f279a34c33e9b/raw/paca

用于复制和重命名多个文件的Linux shell脚本

我有一段话: #!/bin/bash parent=/parent newfolder=/newfolder mkdir "$newfolder" for folder in "$parent"/*; do if [[ -d $folder ]]; then foldername="${folder##*/}" for file in "$parent"/"$foldername"/*; do filename="${file##*/}" newfilename="$foldername"_"$

Shell 以一定长度从unix批量读取文件

我有一个名为p.txt的文件。 它包含以下值: 201601 201602 201603 201604 201605 201606 201607 201608 201609 201610 我想一批一批地读这些记录。即 一个变量将有以下三个值 201601 201602 201603 在第一次迭代中。在第二次迭代中,它将有接下来的三行 201604 201605 201606 若数字并没有被3完全除掉,那个么迭代将被除掉+1 在unix中如何实现这一点 到目前为止,我所尝试的: PERD=

运行时shell的If命令条件

我想编写shell脚本,它允许我执行以下操作: #!/bin/sh if ( when "pbpaste" command has been launched by user ) then do something fi 用您自己的版本替换pbpaste,该版本首先执行某些操作,然后调用原始pbpaste。是否希望运行if语句以响应用户每次运行的pbpaste,还是仅在pbpaste进程正在运行时才运行?可能重复的

Shell 将黑色视频添加到带有声音的视频

我试图在一段视频的开头插入13秒的黑色视频,该视频使用ffmpeg播放声音,如下所示: ffmpeg -f lavfi -i "color=c=black:s=720x406:r=25:sar=1/1" -i input.mp4 -filter_complex \ "[0:v] trim=end=13,setpts=PTS-STARTPTS [blackstart]; \ [blackstart] [1:v] concat=n=2:v=1:a=0[out]" \ -map "[out]" -c

Shell 如何使用ls和xargs对连续文件进行操作?

我有一个满是文件的文件夹,其中: ls*101*| grep-v“放弃” 给我这个: test101v1.nc test101v2.nc test101v3.nc 现在,我需要连接这些文件,通常我可以使用以下方法: ncrcat test101v1.nc test101v2.nc test101v3.nc out.nc 如何在shell脚本中使用xargs 我可以使用for循环,但我想知道是否可以用更智能的方法来实现它?尝试类似于ls*101*| grep“discard”| xargs n

Shell 将列与多个可能的值进行匹配

我正在尝试使用awk从文件中过滤数据。现在,对于单个值,我使用如下命令 hadoop fs -text file:///a/b/filename.snappy awk -F'|' '$11 == 655' > filter_20180705.txt 我想在比较部分传递一个值列表,而不是传递$11==655,我想在(列表)中传递一个类似$11的列表。对此有任何想法都会有帮助 样本数据: karthick,bangalore,software,it,bfsi,spark,hadoop,b

Shell 读取文件行,执行web操作,并使用终端将输出存储为单独的文件

我需要读取input.txt中的行并忽略以“>”开头的行,然后读取下一行并使用web工具以fasta格式获取输出。我已经编写了代码,但到目前为止无法忽略'>'行,并且希望以一种更简单的方式更改行的名称,例如给定的示例(output_1.fasta) $i=0; 当读取行时: if line:do curl-s-d“dna_sequence=“$line”&output_format=fasta”https://web.expasy.org/cgi-bin/translate/dna2aa.cgi

使用shell脚本合并csv文件中具有相同值的行

我有一个csv文件,如下所示 a,123,xyz a,345,zyx b,123,xyz b,345,zyx a,123,xyz 345,zyx b,123,xyz 345,zyx 我想合并行中具有相同值的第一列。如下 a,123,xyz a,345,zyx b,123,xyz b,345,zyx a,123,xyz 345,zyx b,123,xyz 345,zyx 我已对文件进行了排序,并尝试计算值,但无法继续在shell脚本中执行所需的操作。您可以使用以下awk代码

Shell 使用awk对个人进行累积

我有以下数据文件,其中的值累积到某个点(直到第1行>第2行): 我希望打印所有单个值,而不考虑未定义的值(即-999) 我的愿望是: ofile.txt 6 1 3 24 -999 -999 0 2 2 4 4 0 -999 -999 -999 -999 12 1 2 我正在使用awk'{(如果$1!=-999&&[$1]>=[$2]),printf“%s\n”,在awk$1,$2。。。表示不同的列,而不是不同的行 考虑使用额外变量p跟踪上一个值,以反转累积值 awk ' # Save

Shell 将矩阵中的每两列一起打印

我有一个矩阵: $cat ifile.txt 2 3 4 5 10 0 2 2 0 1 0 0 0 1 0 3 4 6 2 0 2 0 0 0 0 1 2 3 0 0 0 2 3 0 3 0 3 1 2 3 1 0 此处共有14列,例如A1 B1 A2 B2 A3 B3 A4 B4 A5 B5 A6 B6 A7 B7。每个奇数列对应于A,偶数列对应于B 我想在一列中打印所有A,在一列中打印所有B。因此,我的愿望文件如

Shell 如何在上次成功后停止cronjob

我正在写一个crontab脚本,它将在每个星期六每15分钟运行一次。其思想是验证外部api状态=成功与否。如果它成功了,那么这一天的工作就不应该再触发了。 现在我正在尝试递归,但我认为这不是最好的解决方案。 是否有其他解决方案来实现这一点?我正在使用Shell脚本调用api 以下是现有的代码段: Cronjob: */15 * * * 6 validate.sh 脚本: status='curl -X GET "api"' if [[ $status == &quo