Articles of bash

使用bash按第5列对csv文件进行sorting

该文件看起来像 5.1,3.5,1.4,0.2,Banana 4.9,3.0,1.4,0.6,Apple 4.8,2.8,1.3,1.2,Apple 我需要拥有它 4.9,3.0,1.4,0.2,Apple 4.8,2.8,1.3,1.2,Apple 5.1,3.5,1.4,0.2,Banana 我一直在尝试使用 sort -t, -k5 file.csv > sorted.csv 它所做的就是做到这一点 5.1,3.5,1.4,0.2,Banana 4.8,2.8,1.3,1.2,Apple 4.9,3.0,1.4,0.6,Apple 我如何做到这一点? 它似乎没有把它sorting。

如何检查sed命令是否replace了一些string?

这个命令用旧的stringreplace旧的string(如果存在的话)。 sed "s/$OLD/$NEW/g" "$source_filename" > $dest_filename 我如何检查replace是否发生? (或者发生了多less次?)

列出目录1中但不是目录2中的文件,反之亦然?

嘿,我开始bash shell脚本,我试图做一个脚本分配,当你进入两个目录,它会检查它们是否存在,并根据错误信息显示,如果两个目录存在,它会列出之间的差异当前目录。 $ cd dir-1 $ myshellscript . dir-2 (comparing . aka dir-1 against dir-2) 输出: Files that are in . but not in dir-2 -rw——- 1 ddddd users 1 2011-03-1 01:26 123123123 Files that are in dir-2 but not in . -rw——- 1 ddddd users 1 2011-03-1 01:26 zzzzzzzzzzzz 我到目前为止似乎没有检测到目录是否存在,也没有列出差异: dir-1=$1 dir-2=$2 if [ […]

在Bash中以stringforms执行命令

我正在testing一个简短的bash脚本。 我想执行一个string作为命令。 #!/bin/bash echo "AVR-GCC" $elf=" main.elf" $c=" $main.c" $gcc="avr-gcc -mmcu=atmega128 -Wall -Os -o $elf$c" eval $gcc echo "AVR-GCC done" 我知道这是丑陋的,但不应该执行avr-gcc命令? 错误如下: ./AVR.sh: line 4: = main.elf: command not found ./AVR.sh: line 5: = .c: command not found ./AVR.sh: line 6: =avr-gcc -mmcu=atmega128 -Wall -Os -o : command not found

standard_init_linux.go:178:exec用户进程导致“exec格式错误”

docker工人开始抛出这个错误: standard_init_linux.go:178:exec用户进程导致“exec格式错误” 每当我运行CMD或ENTRYPOINT的特定docker集装箱时,不考虑对其他文件的任何更改,然后删除CMD或ENTRYPOINT。 这里是我一直在工作的docker文件,完美的工作,直到大约一个小时前: FROM buildpack-deps:jessie ENV PATH /usr/local/bin:$PATH ENV LANG C.UTF-8 RUN apt-get update && apt-get install -y –no-install-recommends \ tcl \ tk \ && rm -rf /var/lib/apt/lists/* ENV GPG_KEY 0D96DF4D4110E5C43FBFB17F2D347EA6AA65421D ENV PYTHON_VERSION 3.6.0 ENV PYTHON_PIP_VERSION 9.0.1 RUN set -ex \ && buildDeps=' \ tcl-dev \ tk-dev \ ' \ && apt-get update && […]

在文本文件中查找最长的单词

我试图做一个简单的脚本find最大的单词和它的数量/长度在文本文件中使用bash。 我知道当我使用awk它的简单而直接,但我想尝试和使用这种方法…让我知道,如果a=wmememememe ,如果我想find长度,我可以使用echo {#a}它的话我会echo ${a} 。 但是我想在下面应用它 for i in `cat so.txt` do 如果so.txt包含文字,我希望它是有道理的。

当一个信号来到时,杀死bash脚本前台儿童

我正在用这样的bash脚本包装一个fastcgi应用程序: #!/bin/bash # stuff ./fastcgi_bin # stuff 由于bash仅在前台脚本结束时执行信号陷阱,所以我不能仅仅kill -TERM scriptpid因为fastcgi应用程序将保持活跃状态​​。 我试过把二进制文件发送到后台: #!/bin/bash # stuff ./fastcgi_bin & PID=$! trap "kill $PID" TERM # stuff 但是,如果我这样做,显然标准input和标准输出没有正确的redirect,因为它不与lighttpds mod_fastgi连接,前台版本确实工作。 编辑:我一直在看问题,这是因为bashredirect/标准错误,当程序在后台启动,所以任何避免这种方式应该也解决了我的问题。 任何提示如何解决这个问题?

完整性检查SSH公钥?

我已经向用户询问了他们的公共“id_rsa.pub”ssh密钥,然后我把它放在“/home/theiraccount/.ssh/authorized_keys”,这样他们就可以通过SSHlogin服务器了。 我想自动化这个过程。 反正有理智检查他们给我的string(以编程或其他方式)? 我想validation,sshd可以读取文本,而且它看起来像一个有效的公钥(并没有被损坏)? 换句话说, id_rsa.pub文件的格式是什么? 如果有人在字段中input,我可以在表单处理程序脚本中写什么来validation它是否完整和正确?

在bash中打开默认的文本编辑器?

我正在写一个shell脚本,遇到了一个问题。 有没有办法使用用户指定的文本编辑器打开文件?

如何从PHP cli获得Linux控制台$ COLUMNS和$ ROWS?

我目前正在为PHP创build一个新的整齐的CLI库,我想弄清楚它正在运行的控制台的宽度/高度。 我已经尝试了很多东西,比如挖掘$ _ENV,exec(“echo $ COLUMNS”)等,但没有结果,而如果在bash命令行中inputecho $ COLUMNS或$ ROWS,它会整齐地显示值。 我需要做什么才能从PHP访问这个值? 我正在使用这样的.sh脚本: #!/usr/bin/php -q <?php require_once('lib.commandline.php'); class HelloWorld extends CommandLineApp { public function main($args) { echo('O, Hai.'); } } 更新最终解决scheme public function getScreenSize() { preg_match_all("/rows.([0-9]+);.columns.([0-9]+);/", strtolower(exec('stty -a |grep columns')), $output); if(sizeof($output) == 3) { $this->settings['screen']['width'] = $output[1][0]; $this->settings['screen']['height'] = $output[2][0]; } }