Shell 命名:BEGIN~END vs LIVE~邪恶的块结构语言

花括号语言是众所周知的:() 其他编程语言可能具有BEGIN~END vs LIVE~邪恶的块结构。乙二醇 A) 开始~结束,执行~结束,如果~结束如果-示例: , , 等等 B) 如果~FI,DO~OD,CASE~IN~OUT~ESAC- 示例:, 等等 区分两种不同风格的区块结构的官方(或合理)名称是什么?我担心答案可能会令人不满意。我只听说过花括号编程语言和非花括号编程语言:)我担心答案可能不令人满意。我只听说过花括号编程语言和非花括号编程语言:) 自由贸易协定: 花括号或括号编程语言使

在shell脚本中使用cut

我有一个文件名foo。该文件包含一些文本(如下所示)。请告诉我如何将字符串“我没有创建主页”输入变量。我正在使用命令variable='catfoo | cut-d'>“-f3'。它输出“我还没有创建主页”,里面有很多新行。请让我知道,如果你能告诉我一种方法来获得字符串没有任何换行符。非常感谢 <HTML> <HEAD> <META HTTP-EQUIV="Content-Type" CONTENT="text/html> <META HTTP-EQ

Shell 正在检查参数的正确数目

如何检查参数的正确数量(一个参数)。如果有人试图调用脚本而没有传入正确数量的参数,并检查以确保命令行参数确实存在并且是目录 #!/bin/sh if [ "$#" -ne 1 ] || ! [ -d "$1" ]; then echo "Usage: $0 DIRECTORY" >&2 exit 1 fi 转换:如果参数的数量(数字)不等于1,或者第一个参数不是目录,则将用法输出到stderr,并以失败状态代码退出 更友好的错误报告: #!/bin/sh if [ "$#

如何在shell条件中设置退出代码?

我有以下资料: [root@alexandra SCB]# cat test_exit.sh #!/usr/bin/ksh if [[ -e "test_exit.sh" ]]; then echo "No existential crisis here" fake_command if [[ $? -ne 0 ]] ; then echo "You can't run fake commands" exit 256 fi else echo "WT

用于在KornShell的目录和子目录上使用dos2unix的Shell脚本

dos2unix将文件名作为参数。我需要使其通用化,以便它可以获取文件或目录,然后在目录中递归搜索,并将树结构中的所有文件从dos转换为Unix。我正在使用KornShell(ksh)。 请帮忙 谢谢。使用查找: find file-path -type f -exec dos2unix {} \; 使用查找: find file-path -type f -exec dos2unix {} \; 我在Sunos5.10上用KornShell试了试约翰王子的答案,但没有成功 显然,因为dos

Shell 将不同输入文件上的相同命令应用于不同输出文件

我在做什么 $ cut -f 1,5,6 myfile1.csv > myoutput1.csv $ cut -f 1,5,6 myfile2.csv > myoutput2.csv $ cut -f 1,5,6 myfile3.csv > myoutput3.csv 假设我有400个文件,我只想为400个文件编写一个命令,cut似乎不支持指定输出文件名? 我肯定我这里缺少一个命令,但我猜不出这里如何使用xargs,有什么想法吗 for i in `seq 1 3`; do

Shell 如何将输出多个值的程序通过管道/重定向到只接受一个值的程序中,每个值对所有输出执行一次

我正在尝试处理来自traceroute的IP地址,它会将IP地址写入磁盘上名为td的文件中,然后执行 grep-o'[0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]*[0-9]*[0-9]'td|uniq 获取唯一IP地址的列表。接下来,我可以通过 lynx-dumphttp://api.hostip.info/get_html.php?ip=8.8.8.8 但是现在我如何将第一个文件的多个输出馈送到第二个文件,而不需要写入磁盘上的另一个文件 顺便说一句,我想知道是否可以完全删除

solaris 5.10上shell脚本中的回溯日期

我在Solaris 5.10上使用bash shell。每天我都会收到一些名称模式为yyyy_mm_ddlike 2012_12_21的文件。我只保留了3天的文件,并删除了其余的文件。现在我需要3天的回溯日期来删除它。请建议我如何在shell脚本中获取回溯日期。标准解决方案是使用find。如果你真的喜欢重新发明这个特殊的轮子,date-d会在3天前打印请求的日期 find . -name '...' -mtime +3 -exec rm \+ 直到找到为止-名称“…”-mtime+3,其余的我

Shell 使用AWK合并两个数据集

我有两个数据文件:file01和file02。在这两个数据集中,字段是:(i)标识符;(ii)数字参考;(iii)经度;(iv)纬度。 对于file01中的每一行,我想用相同的数字引用搜索file02中的数据,然后在file02中找到距离file01中的标识符最近的标识符 如果我使用以下代码手动将file01中的值传递给awk程序,则可以得到此结果: awk 'function acos(x) { return atan2(sqrt(1-x*x), x) } BEGIN {pi=3.14159;

Shell 后台任务是否有办法通知终端打印新的提示?

我想写一个可以作为后台任务运行的程序(即我的东西&),并在必要时漂亮地提供相关输出 然而,对于打印到终端的后台任务,总是有这样一个恼人的小进展: bash-3.2$我的东西&▏ bash-3.2$我的东西& bash-3.2$--你好,我的东西 --现在让我开始做我最擅长的… ▏ …请注意,我们现在在光标前没有提示,更不用说还有一个丑陋的错误提示,我的程序在打印提示时吐出了输出 因此,我想要三件事,其中只有一件我不知道该怎么做: 检测我的程序是否在后台运行,并相应地更改我的输出/操作(即

Shell 如何在源文件中搜索采用相同参数的两个特定函数?

我在C中有一个很大的源代码树,我感兴趣的是在源文件中搜索对两个特定函数sin()和cos()的调用,并将相同的参数传递给这两个函数。 举几个例子: double t = sin(1.2) + cos(1.2); //match y = sin ( x/a ); //match z = cos(x / a ); j = sin(x) + cos(y); //no match if (something) { x = sin(x); // match y = cos(x); }

Shell 复制标准输入,运行两个任务,同时保留输出行的顺序?

我想编写一行命令,用同一个stdin副本执行两个任务。以下是一个例子: % echo "Victor\nHugo" | tee >(wc -l) | grep "V" 结果将最终保存到一个文件中,由我的程序进行处理。我希望得到的是: 2 Victor 但是,有时,如果wc恰好较慢,输出顺序可能会颠倒: % echo "Victor\nHugo" | tee >(sleep 1s; wc -l) | grep "V" Victor 2 也许我不应该这样使用tee?您有什么建议吗?

用于垂直翻转画布的Shell脚本

我有M1.jpg M2.jpg。。。。。。。M100.jpg in/Users/KanZ/Desktop/Project/Test/ 我想翻转它们,保存和替换它们,而不是旧文件。如何编写此问题的脚本?您可以使用编写脚本,只需提供一点帮助,就不必编写循环: find /Users/KanZ/Desktop/Project/Test/ -type f -name "M*.jpg" -exec convert {} -flip {} \; 说明: find/Users/KanZ/Desktop/P

Shell 我正在尝试从类似“windows”的文件中删除windows文件路径\abc\";但我不确定在unix中需要使用哪个命令

我正在尝试从类似“\abc\”的文件中删除windows文件路径,但我不确定在Unix中需要使用哪个命令 我尝试了tr-d'\abc\',但它不起作用。我还可以使用其他命令吗?使用sed: echo 'c:\path1\abc\dir 2\file.txt' | sed 's/\\abc//' 以下方法通常有效。bash中有一个名为basename的函数,它会自动删除除文件名以外的所有内容 filename=$(basename "$fullfile") 范例 basename('C:/te

Shell 打印逗号,Awk中最后一行除外

我有以下脚本 awk '{printf "%s", $1"-"$2", "}' $a >> positions; 其中,$a存储文件名。我实际上是在一行中写入多个列值。但是,仅当我不在最后一行时,我才想打印逗号。我会在运行脚本之前找到行数,例如使用coreutils和bash: awk -v nlines=$(wc -l < $a) '{printf "%s", $1"-"$2} NR != nlines { printf ", " }' $a >>positio

chsh:尝试将shell更改为zsh时,目录节点不支持该操作

我正在尝试安装zsh作为我的shell 我用curl来获取文件 curl -L https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh | sh 但当它改变外壳时,它给了我 chsh: Operation is not supported by the directory node. Operation is not supported by the directory node. chsh: no cha

Shell 如何正确处理Capistrano中的输入提示?

处理由我通过Capistrano运行的命令触发的输入提示的正确方法是什么 一个例子是我使用aptitude安装的iptables persistent包。尽管有--no gui标志,仍然会出现一个提示,要求我确认如何配置 有没有一种方法可以通过命令行传递参数来避免此类提示?我发现并能够通过以下输入法实现这个非常有用的handle\u命令: 这些代码都不是我的。格雷西亚斯·奈斯奎纳 def handle_command_with_input(local_run_method, shell_com

Shell 将第一个字从第一个文件的每一行复制到第二个文件

我有两个行数相等的文件。我必须把第一个文件中每行的第一个字放在第二个文件中每行的开头。我想知道如何使用vi编辑器或任何其他脚本语言来执行此操作?一种方法是使用粘贴: $ cat file1 one file 1 two file 1 three file 1 four file 1 five file 1 $ cat file2 1 file 2 2 file 2 3 file 2 4 file 2 5 file 2 $ paste -d' ' <(awk '{print $1}' f

Shell脚本,使可执行文件成为本机命令

我在linux中编写了一个名为cleanup的shell脚本。我是新来的,我正在从一本书中学习。它告诉我将文件保存在/usr/local/bin/中,但是当我运行以下命令时,我得到了这个错误: cp:无法创建常规文件“/usr/local/bin/cleanup”:权限 否认 我不知道如何把文件写到那个文件夹里。以下是清理代码: #!/bin/bash # Proper header for a Bash script. # Cleanup, version 2 # Run as root, o

从YYYY-MM-DD格式获取年份、日期和月份的shell脚本

我正在运行一个shell脚本,它接受“YYYY-MM-DD”格式的日期。从该日期输入中,如何分别获取年、月和日 感谢您提前回复。试试这个: dt="2011-2-3" arr=( $( date --date=$dt "+%Y %m %d") ) echo "Year > $arr" echo "Month > ${arr[1]}" echo "Month > ${arr[2]}" 除了将字符串作为文本处理(使用grep/sed/awk/cut/…),您还可以使用date

Shell Ubuntu终端vi编辑器中For循环的语法错误 for((i=0;i

那种类型的for循环是一个bash扩展,在POSIX shell中不受支持。如果您使用sh运行脚本,而该脚本不是bash的链接,您会遇到这个错误。我确实在脚本开头添加了“#!/bin/bash”,现在它给我一个错误提示“bubble.sh:2:bubble.sh:语法错误:循环变量无效” for (( i=0; i<=5; i++ )) do echo "$i Echoed" done

Shell 独唱主题';s选择文本颜色与iterm2中的背景太相似

我在iterm2中使用了solorized深色,但选择文本的颜色与背景太相似,我如何更改它?谢谢您将在“首选项”|配置文件|-选择您的配置文件-|颜色:终端2.4(326): 打开您的终端首选项(终端>首选项…)->“设置”选项卡->“文本”部分->“选择”颜色选择器 “设置”选项卡->文本部分->选择“颜色选择器”>

如何使用shell脚本从网站中查找最新的文件名

我对Shell脚本比较陌生,并面临以下问题。我想从网站下载最新的freebase转储文件。我知道文件名格式-freebase-rdf-.gz,例如freebase-rdf-2014-01-12-00-00.gz 我进行了检查,“wget”命令获取文件。然而,我的问题是,我需要找出最新的数据转储,然后运行wget命令从站点下载文件。我检查了wget命令是否不接受正则表达式 有人能帮我解决这个问题吗?您可以使用wget的时间戳功能: 存储您的最新下载,wget会关注更新一次 或者您可以获得一个目录

Shell 使用前缀Unix批量重命名目录

我正在尝试在Unix中使用前缀批量重命名目录。像abc这样的前缀- 所以如果当前目录是123,我想把它改成abc-123,等等 我试过了 for d in $(find . -name '*' -type d) ; do mv $d $(echo $d | sed 's/$d/abc-$d/g') done 但这不起作用。很少编写shell脚本,因此我们将非常感谢您的帮助。 重命名命令不可用 谢谢大家! 试试看: for d in $(find . -depth -type d); do

Shell 基于第一列的第二列总和

基于第一列(小时值)的第二列之和,我有一个文件,第一列是小时,第二列是计数。 我是根据小时数计算总数的 Input 01:01,15 01:02,16 01:03,6 02:01,44 02:02,33 02:05,22 14:01,55 14:02,06 Output: 01,37 02,99 14,61 我能够通过以下步骤创建所需的输出 创建唯一的小时文件,下面是示例代码, 当IFS=“:”读取f1和f2时 做 然后从转换后的文件中,计算列值。但是这个过程会生成24个转换文件,有没有一种

Shell 如何使用Ansible自动化一次性任务?

我正在使用Ansible为我们的一些构建环境自动化VM配置,例如设置路径和代理环境变量,安装global Node.js工具等。这非常有效,并且可以轻松地在多台主机上自动化常见的安装任务。所有的任务都在Ansible角色上进行了分解,以分离责任和额外的可重用性 现在,我遇到了以下问题:安装了一个新软件包后,我需要更改PATH环境变量-它不再需要以前作为Ansible设置的一部分添加的条目 因此,我很自然地继续并更新了Ansible任务,该任务用于为新环境设置PATH变量,并删除了自定义条目(我使

连接到多个数据库的Shell脚本

我想创建一个shell脚本,它将连接到多个oracle数据库并执行insert语句。我应该能够在一个单独的.txt文件中提供DB列表,并在shell脚本中调用它。也许使用FOR循环。请帮助……您可以执行以下操作 while read line do db=$(echo $line | awk '{print $1}') ## Your isql line done < db_list.txt 读取行时 做 db=$(echo$行| awk'{print$1}

Shell <&燃气轮机;在语言规范中?

在阅读如何使用某些命令时,我遇到了包装在中的项目。我理解括号表示可选,但这些是什么意思 'git pull'[选项][…]] 此处,仅表示命名占位符-如果有多个参数是可选的或名称包含空格,则这些占位符很有用 它基于,感谢@Eturdu指出这一点 这种符号是从okay中派生出来的,但是这些是选项吗?选项参数?只是争论?我觉得如何解释此规范还不清楚,在网上几乎找不到关于如何阅读的信息。@bmcentee148:占位符可以在任何地方使用。如果您看到,通常意味着您需要将其替换为特定的“foo”(不管“f

Shell 为什么我的代码中总是说语法错误?

在这个shell代码中,我不知道为什么总是说我有语法错误,我使用这个函数来计算行数的中间值和平均值 rows() { echo -e "Average:\tMedian:"; while read line do array=($line) lineavg=0; linemed=0; medpos=0; for((i=0;i<${#array[@]};i++)) do let "lineavg+=${array[$i]}

Shell 如何在hbase外壳中显示utf-8字符?

在hbase shell中使用get命令时,如: hbase(main)> get 't1','00003ab' 结果是: PATHID:path0 timestamp=1463537742385, value={"pathSign":"\xE5\x8C\x97\xE5\xAE\x89\xE9\x97\xA8\xE8\xA1\x97"} //hexadecimal utf-8字符显示为十六进制它应该显示什么?@Whitefret普通字符,您可以识别它\xE5\x8C\x97

Shell groovy执行进程不工作

我有以下groovy,由于某些原因,它似乎没有执行。如果我将命令直接粘贴到控制台上,那么该命令运行良好并给出结果 def process = "find . -name '*.java' -o -name '*.jsff' -o -name '*.jspx' -not -path '*/noship/*' | xargs grep '${finalStr}'".execute() process.text.eachLine{ println it } 这里

如何在shell脚本中正确设置pv大小

我正在编写备份脚本,希望看到tar的正确进度。 脚本的主要部分: backup_file="root-backup-$(date +%Y.%m.%d-%H.%M.%S).tar" sudo -v sudo mount /dev/vg/root /mnt time sudo sh -c "cd /mnt; tar --xattrs -cf - . | pv -s $(du -sb | grep -o '[0-9]*') > /backup/${backup_file}" 但pv显示快速填充

Shell 使用脚本修改侦听器文件

下面是我的侦听器条目 SID\u LIST\u DG\u LISTENER= (SID\u列表= (SID_DESC= (GLOBAL\u DBNAME=abc) (ORACLE\u HOME=abc) (SID_NAME=abc) (服务名称=abc) ) ) 我需要一个可以添加新SID DESC块的shell命令 SID\u LIST\u DG\u LISTENER= (SID\u列表= (SID_DESC= (GLOBAL\u DBNAME=abc) (ORACLE\u HOME=abc)

Shell 我怎样才能删除“^@&引用;文件中的字符?

我试图重定向isql(Sybase)的输出,文件在行尾返回奇怪的字符^@。我需要删除完整文件的这个字符。我不能在查询中使用输出重定向,因为我的BBDD没有实现此功能 例如: Node:SNMP_ALU_FTTH:INACT:Rack_1_SubRack_1_Slot_5_PON_4_ONT_34^@;Network Fail^@;1487336303; 只有重定向到以下文件时,才会发生这种情况: ./script.pl > result.txt 系统信息: Linux XXXXXXX

如何根据shell中以逗号分隔的内容批量重命名文件?

我有数百个后缀为.txt的文件。txt文件在带有分隔符的列中包含来自其他列的id[0-9]。我想要的是自动一个接一个地提取id[0-9]作为相应文件的文件名,有什么想法吗 例如:ben.txt,cotains: aa、bb、cc、id2233、kk 还有很多像这样的文件 那么,如何使用shell或其他方法提取id2233以将ben.txt替换为id2233.txt 谢谢。生成脚本以重命名文件 # old.names: generate files with old and new names #

如何替换Shell脚本中的精确匹配词?

我只是想替换shell脚本中的一些预定义字符串: 字符串如下所示: #! /bin/bash CONTENT="DEAR [NAME]" 我想用约翰代替[名字]。 我使用了以下代码: #! /bin/bash CONTENT="DEAR [NAME]" echo "$CONTENT" | sed -r 's/[[NAME]]+/John/g' 得到以下结果; 亲爱的[NAMJhon] 我需要这样的结果“亲爱的Jhon”。你必须避开[]s: $ echo $CONTENT | sed 's

Shell 计算文件中一行中的字数,但忽略Enter键

我使用下面的命令来计算行中的字数,但它给出了字数加1作为输出 awk '{ print length($0); }' abc.txt 如何在计算一行中的字数时忽略最后一个字符或输入键?不提供字符数 awk '{ print length($0); }' abc.txt 如果字段分隔符为单个空格,则不提供字 awk '{ print NF; }' abc.txt 也许您可以像这样使用awk中的NF变量 echo "this is a test" | awk '{print NF}' 打

Shell 将逗号分隔的单元格(不同的条目)分隔为新行

我有一个包含两列的.txt文件(制表符分隔)。第一列有多个逗号分隔的值。输入格式 a,b,c x a y c,d,e z 期望输出为 a x b x c x a y c z d z e z 逗号分隔的条目数在1-40之间变化。我尝试了以下awk命令,但它仅在第一列中有两个逗号分隔的条目时才起作用: awk 'BEGIN{FS="[ ,]"} {print $1, $NF; print $2, $NF}' input 如何修改上述命令(或任何新命令)以完成此任务。谢谢。a

Shell SED或AWK用另一个文件中的模式替换所有模式

我正在尝试使用SED脚本进行模式替换,但它不能正常工作 sample\u content.txt 288Y2RZDBPX1000000001dhana JP2F64EI1000000002d EU9V3IXI1000000003dfg1000000001dfdfds XATSSSSFOO4dhanaUXIBB7TF71000000004adf 10Q1W4ZEAV18LXNPSPGRTTIDHBN1000000005egw patterns.txt 1000000001 9000000003

Shell 在bash中做什么!(感叹号)在命令之前是什么意思?

我只是把命令发错了 git status 与 控制台显示它已开始将上次克隆的存储库克隆到文件夹状态 我的问题是,这个命令是什么意思?它有什么用途吗?在bash中,如果您键入后跟一个命令名,它将用历史记录中以该名称开头的最后一个命令替换它 所以在你的情况下!git被替换为git clone somerepo,因此整行代码被翻译为git clone somerepo status请阅读:这里的问题不是git命令,而是开始时的感叹号,我知道这是个愚蠢的问题,但我想知道发生了什么。。。如果我不知何故损

通过jenkins中的shell脚本将ipa上载到hockeyapp

我正在编写以下shell脚本,用于使用jenkins将.ipa上传到曲棍球应用程序 curl \ -F "status=2" \ -F "notify=1" \ -F "notes=Testing manual upload using cURL" \ -F "notes_type=0" \ -F "ipa=/Users/Shared/Jenkins/Home/workspace/jenkinadhocIPA/build/Release-iphoneos/

Shell 使用Hazel执行ffmpeg(通过自制软件安装)脚本,将视频转换为.gif

我想做的是将Hazel设置为观看我创建的新视频的文件夹,然后在匹配时,一个嵌入式FFMPEG脚本将视频转换为gif 我已经完成了匹配标准, 我已经做好了食谱 ffmpeg -ss 5.0 -t 2.5 -i $1 -r 15 -filter_complex "[0:v] fps=15, scale=500:-1, split [a][b];[a] palettegen [p]; [b][p] paletteuse" $1.gif 但当我将ffmpeg配方放入“嵌入式脚本”对话框时,匹配运行时

Shell 如何安全地处理敏感的环境变量?

我曾经开发过一个Java应用程序,它将shell脚本作为输入参数并执行它。我正在使用以下块准备环境: ProcessBuilder pb = new ProcessBuilder("/bin/bash", scriptFile); Map<String, String> env = pb.environment(); env.putAll(environmentVariable); Process awk = pb.inheritIO().start(); awk.waitFor

Shell 将文本粘贴为按键

有没有一种简单的方法可以像我无法粘贴到远程计算机上的许多机器一样,通过按键发送复制的文本 我正在使用windows 10工作站连接到VMWare player Linux来宾,然后通过VPN连接到远程站点的另一台windows 7计算机。我可以从Linux计算机粘贴到windows计算机,但只能将击键传递到VMware player,不能进行复制和粘贴。我还被阻止允许VM访问本地网络。我使用16GB的USB驱动器来回传递文件。如果我理解正确: 工作站W10->Linux虚拟机?->W7虚拟机 如

Shell tux有没有办法让状态栏在不同的客户端上显示不同的内容?

我编写了一个简单的shell脚本,以帮助tmux在状态栏中显示所有会话,但是,tmux的状态栏总是在不同的客户端中显示相同的内容。 我的剧本如下 #/usr/bin/env bash session=`tmuxls | cut-d”“-f1 | tr-d:“| tr”\\n”` #附件|计数=`tmux ls | grep-n\(附件)| cut-d:'-f 1` 活动会话=`tmux显示消息-p'#S'` #session_start=“#[fg=brightblack,bg=black,no

Shell 使用[:行:未知运算符获取输出

我有这个if条件shell脚本的一段代码,对于true情况,它工作正常;对于false情况,输出即将到来,但得到[:rows:unknown操作符 ut=$(echo -ne "set heading OFF\n select user_type from usertype where acm_login = '$acmlogin';" | sqlplus -s ${ORA_UID_PSWD}) if [ $ut != "no rows selected" ] t

Shell 如何让ffmpeg在特定时间开始下载流?

如果我知道livestream将在几个小时后启动,并且我知道livestream的url。如果流当前正在发生,我可以使用ffmpeg将流保存到文件中。然而,我目前正在网络上寻找是否有一种方法可以让我安排将来执行的命令。我曾尝试使用“at”,但目前似乎仍在运行该命令。我想知道“at”是我的问题的答案还是别的什么?多谢各位 我尝试过使用at命令,并在MacOS上寻找其他应用程序来调度命令 下面是一个ffmpeg命令的示例,当我目前在命令行中键入它时,它非常适合我的意图。我希望的是,我可以让ffmpe

如何使用shell转换为日期格式(DD-MMM-YYYY)?

我在一个文件中有数据,其中一列是日期列,其日期格式如下: 2021-05-10T18:25:00.000+0100 2021-05-14T18:25:00.000+0100 2021-05-19T18:25:00.000+0100 预期输出为: 10 MAY 2021 14 MAY 2021 19 MAY 2021 while -r read line do year=`echo $line | awk '{ print $1 }' ` month=`echo $line |

上一页 1 2 ...  6   7   8   9    10   11   12  ... 下一页 最后一页 共 444 页