Articles of shell

grep只有一个发生

我试图抓取一些内容,但在同一行中有多个实例。 我正在使用这个命令。 grep -o -m 1 -P '(?<=sk).*(?=fa)' test.txt | head -1 但是,search在第二次/最后一场比赛结束后结束。 在Ubuntu 14.04.2上运行它 test.txt: skjahfasdkl aklsdj laks skjahfasdkl aklsdj laks Current Output: jahfasdkl aklsdj laks skjah Desired output: jah

在bash命令中调用一个自定义函数

我有以下bash脚本: #!/bin/bash find . -maxdepth 1 -mmin +1 -type f -name "240*.ts" | xargs -L 1 bash -c 'mv "${1}" "$(get_crtime${1} | awk '{print $5}').ts"' \; 这个想法是find比一个特定模式匹配一​​分钟以上的文件(在我的例子中,以'240'开始的文件),并将它们从原始名称(240-1458910816045.ts)重命名为所需的格式(15: 00:16.ts)。 在脚本里面,我使用了get_crtime命令,它是/etc/bash.bashrc中包含的自定义函数,具有以下实现: get_crtime() { for target in "${@}"; do inode=$(stat -c '%i' "${target}") fs=$(df "${@}" | awk '{a=$1}END{print a}') crtime=$(sudo debugfs -R 'stat <'"${inode}"'>' "${fs}" 2>/dev/null | grep […]

奇怪的bash脚本exception – 什么是anaconda-ks?

我试图写一个简单的bash脚本打印一堆随机字符: for i in {1..100000} do echo -n $(printf \\$(printf '%03o' $(( ( RANDOM % 220 ) + 35 )))) done 这样做没问题,但是,由于一些神秘的原因,一堆不随机的angular色出现: DU▒▒2D@I▒▒▒lb;▒.lO▒c▒˕#M〜<▒ڃ▒wp▒▒]▒2▒US 栃y▒)▒▒|▒ߎD▒▒l▒8▒T▒℘6▒wh;▒▒7▒h▒▒ωӕ▒$▒йa▒▒▒▒깅-▒+▒1▒0ıC▒▒▒j1▒▒Ph=fm;▒▒6;;▒▒▒▒kL(%<▒▒o▒anaconda-ks.cfg Desktop Documents Downloads install.log install.log.syslog Music Pictures Public Templates timesynch.err timesynch.log timesynch.sh Videos▒▒5y#▒▒ΖsbA1vi_▒▒b▒▒ظ▒>▒▒k۹▒Ysɂ▒▒▒(▒▒▒G▒Դ▒▒cՋ▒=▒I▒ڰ벫▒l▒P▒▒KԽ▒▒lk▒anaconda-ks.cfg Desktop Documents Downloads install.log install.log.syslog Music Pictures Public Templates timesynch.err timesynch.log timesynch.sh Videos▒-▒ÇR▒▒▒C▒▒+w▒M▒{@س▒▒Dž▒j'q▒n'▒Tp▒▒lh▒▒.▒▒▒▒▒▒▒▒c▒N▒ܳ▒j▒▒▒▒▒▒s@=▒j▒$h▒U▒▒&▒3▒/▒+W▒▒۠^▒▒N)▒oz▒▒▒▒1}΃▒▒▒B4▒▒▒/U▒▒▒▒~▒:▒▒▒▒▒'▒▒.|▒pߺ▒▒+▒c▒▒▒Iɔ▒▒▒▒▒ϞTm&▒▒<Bo&▒т▒▒VH▒2m▒▒;▒O'▒▒؜▒⊞q▒Ǧ▒▒▒O▒▒▒▒틈▒▒▒$ྕ▒▒ф▒ַ▒▒n<6▒▒▒N@f▒▒▒)[▒▒y1'▒n▒UзkB'▒▒]z&u8▒▒D▒▒7_▒▒|\▒▒eEy▒2ʉؕF▒▒zٹ▒)X▒▒▒?▒▒h▒▒l▒▒0▒▒L▒R:▒▒▒X▒▒▒wz▒▒6▒/▒oTڣ3d\n▒7iX 栃y▒)▒▒|▒ߎD▒▒l▒8▒T▒℘6▒wh;▒▒7▒h▒▒ωӕ▒$▒йa▒▒▒▒깅-▒+▒1▒0ıC▒▒▒j1▒▒Ph=fm;▒▒6;;▒▒▒▒kL(%<▒▒o▒anaconda-ks.cfg Desktop Documents Downloads install.log […]

如何通过shell脚本知道目标计算机使用的操作系统的IP?

( 不使用NMAP )我使用TTL值来确定用户inputIP时在目标计算机上使用的操作系统。 实际上,我必须在Case语句中硬编码TTL值。 所以我的问题是: TTL是我们了解正在使用的操作系统的唯一途径吗? 如果TTL不是唯一的方法,那么你能build议/解释在input的IP的基础上可以使用哪些其他方法来检查在目标计算机上使用的操作系统吗? 在networking上searchTTL表时,我发现许多操作系统具有相同的TTL值。 那么有什么办法指出确切的操作系统? 有什么办法可以确定有关操作系统的更多信息,例如是32位还是64位? 如果是的话,哪个领域和什么基础? 以下是我使用TTL值确定正在使用的操作系统的示例代码: #!/bin/bash echo "Enter IP to find it's OS" read ip a=`ping -c 1 $ip|grep -w "ttl" | cut -c 41-47 | tr -d ' '` echo $a case "$a" in ttl=64) echo "Linux Based";; *) echo "other";; esac

Shell脚本在成功执行后离开进程

我写了一个shell脚本,它使用nohup调用其他schell脚本。 脚本成功完成后,我仍然看到Linux进程正在运行我写的自定义脚本。 startAllComponents.sh的内容 start_Server() { SERVER_HOME=${1} NOHUP_LOG_FILE=${2} logmsg "Starting the server" /usr/bin/nohup `${SERVER_HOME}/bin/server.sh >> ${NOHUP_LOG_FILE} 2>&1 ` & sleep 5 PID=`ps -ef|grep ${SERVER_HOME}/jvm |grep -v grep| awk '{print $2}'` if [ "${PID}" = "" ] then logmsg "Couldn't get the PID after starting the server" else logmsg "****** Server started with PID: ${PID} ****** " […]

Bash – 在文件之前列出目录名称的所有子目录中的程序

我不需要在一行中做这个,但是到目前为止我只有一行。 find . -perm -111 +type f | sort -r 我想要做的是写一个bash脚本,将显示当前目录中的可执行文件(z到a)的所有文件的列表。 我希望脚本为所有子目录执行相同的操作。 我遇到的困难是在该目录/子目录中的可执行文件列表之前显示该子目录的名称。 所以,澄清,理想的输出可能是这样的: program1 program2 SubDir1 program3 SubDirSubDir2 program4 SubDir2 program5 我现在所拥有的(上面的代码)是这样做的。 它没有删除/path,它没有列出目录改变时新目录的名称。 ./exfile ./test/exfile1 ./test1/program2 ./test1/program ./first 希望这是明确的。

用sed添加一个内核参数到grub

我正在写一个bash脚本,以非交互方式在Linux系统上启用hibernate模式。 为此,我需要在该行的引号内插入一个包含斜线的shellvariables。 b编辑文件的相关部分如下所示: GRUB_DEFAULT=0 GRUB_TIMEOUT=5 GRUB_DISTRIBUTOR="Manjaro" GRUB_CMDLINE_LINUX_DEFAULT="quiet" GRUB_CMDLINE_LINUX="" 我需要将其更改为: GRUB_DEFAULT=0 GRUB_TIMEOUT=5 GRUB_DISTRIBUTOR="Manjaro" GRUB_CMDLINE_LINUX_DEFAULT="quiet resume=/dev/disk/by-partuuid/c5a552c2-fe8f-423a-9037-c35bf090d9c3" GRUB_CMDLINE_LINUX="" 增加的参数由一个shellvariables提供。 我试过这个: sed -i '\*^GRUB_CMDLINE_LINUX_DEFAULT* s*"$* '"$(grub_resume_boot_option)"'"*' /etc/default/grub 我正在瞄准的逻辑是:“寻找一个以模式”GRUB_CMDLINE_LINUX_DEFAULT“开始的行,并用给定的模式replace最后的”。 使用*作为分隔符来保留扩展variables中的斜杠。 但是,如果行尾有空格,则该命令将失败。 是否有任何方法可以使它不占用线路末尾的空格? 另外,如果有更简单或可读的解决scheme,我会非常感兴趣。

在shell中redirectinput和输出的代码

我已经创build了一个shell程序,可以或多或less地执行正常的linuxshell程序。 我的程序可以正确地redirectinput或输出,但不能同时redirect。 网上迄今为止的任何解决scheme,都没有对我有用。 例如 " echo hi kenny > kenny.txt " works " cat in.txt | less " works 但是,(假定in.txt是一个随机字母表文件) " sort -u < in.txt > out.txt " does not work for both, only for the input(<). 我的代码大致如下: int main(int argc, char* argv[]){ readLine(); if (lineHasSpecialSymbols()) { if(hasInput()){ inRedirection(); }else outRedirection(); } } 让我们假设这一切都需要。 没有pipe道等 […]

如何计算文件中的数字/字母的数量?

我尝试在Bash文件中计算数字和字母的数量。 我知道我可以使用wc -c file来计算字符的数量,但是如何将它修复为只有字母和数字?

在Python中的交互式shell程序包装

我试图通过python运行一个shell程序。 我需要运行一个命令,然后在它仍在运行并等待input继续的时候,我需要将程序接收到的输出作为string处理。 然后,我需要parsing一些数据到该程序,并模拟一个input按下。 什么是实现这个目标的最好方法?