Articles of bash

为什么期望让过程打开它的STDERR?

我想为一个进程设置超时,这是我的shell。 我使用期望来做到这一点,以避免其他软件包的依赖。 test.sh #!/bin/bash # $1 timeout in seconds # $2 command timeout() { time=$1 shift # start the command in a subshell to avoid problem with pipes # (spawn accepts one command) -noecho command="/bin/sh -c \"$*\"" expect -c "set echo \"-noecho\";set timeout $time; spawn -noecho $command; expect timeout { exit 1 } eof { […]

Bash脚本来读取文件

不知道为什么最后一行不切“从脚本: #!/bin/bash FILENAME=$1 while read line do cut -d '"' -f2 echo $line done < $FILENAME $ cat file "1" test "2" test "3" test "4" test "5" test 如果我用下面的命令运行这个脚本: $ ./test file 2 3 4 5 "1" test

如何从Bash中的string中删除重复的字符?

我有一个string cabbagee 我想删除重复的字符。 如果我使用tr -s,它将删除序列中的重复字符。 但是我的期望输出是 cabge 感谢任何人都可以帮助我。 提供的答案是正确的,但我不能使用awk,所以我用: #!/usr/bin/bash key=$1 len=${#key} mkey="" for (( c=0; c<len; c++ )) do tmp=${key:$c:1} echo $mkey | grep $tmp >/dev/null 2>&1 if [ "$?" -eq "0" ]; then echo "Found $tmp in $mkey" else mkey+=$tmp fi done echo $mkey

networking掩码validation似乎不工作在bash脚本中使用正则expression式,而IPvalidation工作正常

我写了一个简单的脚本来validationIP地址和networking掩码如下 #!/bin/bash validFormatIP() { echo $1 | grep -w -E -o '^(25[0-4]|2[0-4][0-9]|1[0-9][0-9]|[1]?[1-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)' > /dev/null if [ $? -eq 0 ] then echo "Valid ipaddress" else echo "Inalid ipaddress" fi } validNetMask() { echo $1 | grep -w -E -o '^(254|252|248|240|224|192|128)\\.0\\.0\\.0|255\\.(254|252|248|240|224|192|128|0)\\.0\\.0|255\\.255\\.(254|252|248|240|224|192|128|0)\\.0|255\\.255\\.255\\.(254|252|248|240|224|192|128|0)' > /dev/null if [ $? -eq 0 ] then echo "Valid netmask" else echo "Invalid […]

有没有办法看到一个path的所有中间目录的权限..?

我有一个文件path..是否有任何单一的命令来查看path中的所有中间目录的文件/目录权限..?

Linuxpipe道(convert – > pdf2ps – > lp)

好的,我可以打印一个PDF文件, pdf2ps file.pdf – | lp -s 但是现在我想用convert来合并几个PDF文件,我可以这样做: convert file1.pdf file2.pdf merged.pdf 它将file1.pdf和file2.pdf合并到merged.pdf中 ,target可以replace为' – '。 题 我怎么可以pipe转换成pdf2ps ,然后再转换为lp ?

如何recursion删除具有不同扩展名的多个文件?

我正试图编写一个命令,从当前目录及其所有相关的子目录recursion地删除具有不同扩展名(* .extension1,* .extension2等)的几个文件。 到目前为止,我从另一篇文章中得到了这个命令,但是我不能在同一个命令行中修改多个文件。 find . -name "*.extension1" -type f -delete 是否如下简单? find . -name "*.extension1";"*.extension2" -type f -delete 正如一个侧面说明 ,这些都是我不需要的输出文件,但不是所有的都必须始终输出,所以一些扩展可能不存在。 这只是一般的清理命令。

在vim中显示所有不可见的字符

我知道关于这个在stackoverflow上有一些线程,但是当我在编辑器中编写“:set list”时,它似乎显示隐藏的字符,但它不会在我们遇到问题的代码中显示隐藏的字符。 有些时候,我们的代码中有一些不可见的符号,如果循环中断,我不知道符号如何到达那里,除了一些奇怪的键盘组合很多被意外键入。代码本身看起来是正确的,但看不见的符号打破。 我已经在网上search这个,但所有我能find似乎是在VIM的“:设置列表”命令,除了必须改变隐藏的字符的颜色,但虽然这似乎显示一些隐藏的字符,它不会显示问题那些。 我们得到两个象征十字架的符号,一个看起来像手枪。 我们也尝试在崇高的文本中添加“draw_white_space”设置,但是这似乎只是显示,好吧,像这样的空白,但结果显示在谷歌显示隐藏字符,所以我试了一下。 通过DiffMerge工具,我们能够看到符号的位置的唯一方法是在其他编辑器中看不到这些符号,但是我们实际上已经能够将符号复制到它自己的文件中,并且通过所有的grep带有-f grep选项的文件可以工作,但是在vim中显示字符比使用键绑定更容易。 有人有什么build议吗? 当问题是一个不可见的符号时,这导致我们使用更多的时间来debugging代码。

在bash脚本中使用屏幕

我正在远程服务器上运行游戏服务器,我使用分离的屏幕实例使其运行。 我现在正在创build一个脚本,可以用来closures服务器,备份所有重要的文件并重新启动,但是我在处理屏幕时遇到了一些困难。 我认为我可以通过在脚本中调用screen -r来切换到脚本中的分离屏幕(在服务器已经closures之后)。 但是,这似乎并没有工作,因为如果我从外部屏幕运行脚本它只是在该会话中启动服务器。 screen -r cd ~/servers/StarMade/ sh StarMade-dedicated-server-linux.sh screen -d 这是我认为会做的伎俩,但事实并非如此。 也许有人可以帮我在这里。 我不是一个bash专家。 事实上,这是我的第一个bash脚本,不包括“Hello World”。 谢谢。

Shell Bash脚本以升序打印数字

我真的是新的shell Bash脚本。 我需要按照用户input的给定任意数字,按照升序列印数字。 #!/bin/bash declare nos[5]=(4 -1 2 66 10) # Prints the number befor sorting echo "Original Numbers in array:" for (( i = 0; i <= 4; i++ )) do echo ${nos[$i]} done # # Now do the Sorting of numbers # for (( i = 0; i <= 4 ; i++ )) […]