Articles of 脚本

如何在bash中优雅地存储和回显多行?

我试图把一块文本捕捉到一个variables中,保持新行,然后回显它。 但是,当我捕捉文本或显示文字时,换行符似乎不被保留。 任何想法如何我可以做到这一点? 例: #!/bin/bash read -d '' my_var <<"BLOCK" this is a test BLOCK echo $my_var 输出: 这是一个testing 期望的输出: 这个 是 一个 testing

如何使用Windows PowerShell的正则expression式删除一个文件名末尾的一个或多个空格?

我有一个目录包含了很多文件格式错误的文件名。 其中一些在文件名末尾有“空格”。 其他人在文件名string的末尾有一些在文件名中网格化的关键字。 例如“xxx xxx xxx somewordEng .txt” 即时通讯试图摆脱他们使用这个脚本,但它不会做。 文件名(基本名称)末尾的空格仍然存在,“Eng”关键字也是以前添加到该单词中的: dir | Rename-Item -NewName { $_.BaseName.replace("Eng$","").replace(" {2,}"," ").replace("\s$","") + $_.Extension } .replace("Eng$","") is supposed to remove the "Eng" keyword if it appears at the END of the filename (basename), seems not working so far. .replace(" {2,}"," ") is supposed to replace 2 or more following […]

如何创build一个批处理脚本,在达到文件夹大小限制时删除最旧的文件

我发现很多类似的问题的解决scheme,但我不知道是否有可能创build一个脚本,删除最旧的文件一旦达到预设的文件夹大小限制?

Windows批处理脚本从文件名删除括号中的文本?

我在一个文件夹中有一堆文件,我想通过一个.bat或.vbs脚本(或类似的)复制和重命名。 这些文件被命名为: ABC-DE-(XXX)SomeNameHere.dat 我想复制这些文件并重命名它们,删除(XXX)部分,只留下: ABC-DE-SomeNameHere.dat 有一种类似的问题在这里回答,但我不能修改它为上述文件名模式工作,也只是重命名文件,不复制它们。 任何帮助深表感谢! 非常感谢。 编辑:张贴( 可怕的! )下面的代码。 可能最好忽略这个; _; @ECHO OFF FOR %%F IN ("ABC-DE-(*)*.dat") DO CALL :process "%%F" GOTO :EOF :process SET oldname=%1 SET "newname=%~nx1" SET "newname=%newname:*] =%" RENAME %oldname% "%newname%"

在batch file中使用空格?

我需要运行batch file来设置许多文件夹的权限。 我们有以下文件夹结构 然后在每个客户端文件夹中,我们有几个子文件夹,例如Folder1 \ Client1 \ SubFolder1 Folder1 \ Client1 \ SubFolder2 Folder1 \ Client1 \ SubFolder3 我需要重置上面示例中所有子文件夹的权限,并在名为permissions.bat的文件中包含以下代码 for /f %%g in ('dir "f:\temp\" /ad /b') do for /f %%a in ('dir %%~fg /ad /b') do icacls "%%~fg\%%a" /grant:r domain\mygroup:(OI)(CI)M 这工作正常,但对于包含空格的客户端和子文件夹不起作用。 例如 Folder1\Client1\Sub Folder 1 会显示为 Folder1\Client1\Sub\ 紧跟着系统找不到指定的文件错误。 有任何想法吗? 顺便说一下,这是在2003服务器上运行。

使用通配符(*)将文件复制到bash脚本中的文件夹 – 为什么它不工作?

我写一个bash脚本创build一个文件夹,并将文件复制到该文件夹​​。 它从命令行工作,但不是从我的脚本。 这里有什么问题? #! /bin/sh DIR_NAME=files ROOT=.. FOOD_DIR=food FRUITS_DIR=fruits rm -rf $DIR_NAME mkdir $DIR_NAME chmod 755 $DIR_NAME cp $ROOT/$FOOD_DIR/"*" $DIR_NAME/ 我得到: cp: cannot stat `../food/fruits/*': No such file or directory

Awksearch文件的string

我已经实现了一个函数来search一个文件中的一个string,它运作良好。 我想知道如何修改它以searchstring中的所有列? awk -vs=$1 -vc=$2 '$c ~ s { print $0 }' $3 谢谢

如何在bash中间接地分配一个variables来从Standard In,File和执行输出中获取多行数据

我在这里和其他地方发现了许多片段,回答了这个问题的一部分。 我甚至设法以低效的方式在很多步骤中做到这一点。 如果可能的话, 我真的很想find执行这个任务的单行执行 ,而不是分配给一个variables,并复制它几次来执行任务。 例如 executeToVar () { # Takes Arg1: NAME OF VARIABLE TO STORE IN # All Remaining Arguments Are Executed local STORE_INvar="${1}" ; shift eval ${STORE_INvar}=\""$( "$@" 2>&1 )"\" } 总的来说,如果$ executeToVar SOME_VAR ls -l * #实际上会填充SOME_VAR和从其余参数中取出的ls -l *命令执行的输出。 但是,如果命令在最后输出空行,(对于例如- echo -e -n '\n\n123\n456\n789\n\n'应该在开始和结束处具有2个新行)这些被bash的子执行过程所剥夺。 我在其他类似的post中看到,通过在stream的末尾添加一个标记“x”来解决这个问题,例如将子执行转化为如下forms: eval ${STORE_INvar}=\""$( "$@" 2>&1 ; echo […]

Bash IP IF THEN ELSE声明

我需要从几台机器上运行一个脚本,但是每台机器都需要执行独特的命令。 我以为bash脚本能够做到这一点,但是我对这个部门不太了解。 我需要的代码看起来类似于下面的代码(或将它)。 我知道,这是远远不够完美或function,但它真的只是有助于expression我在找什么。 有人可以帮我用这个脚本? #/bin/bash IP= ifconfig eth0 | grep inet | grep -v inet6 | cut -c 7-17 If [$IP -eq 192.168.32.1] then mkdir IPFolder-1 more code… else if [$IP -eq 192.168.32.2] then mkdir IPFolder-2 more code… else if [$IP -eq 192.168.32.5] then mkdir IPFolder-5 more code…

Bash脚本创build符号链接到共享库

我认为这个问题对于你的shell脚本怪物是相当容易的。 我正在寻找最优雅和最简单的方式来创build符号链接到Unix的共享库通过bash shell脚本。 我需要的是从“libmythings.so.1.1,libotherthings.so.5.11”等共享库文件列表开始,获取创build的符号链接,例如: libmythings.so -> libmythings.so.1 -> libmythings.so.1.1 libotherthings.so -> libotherthings.so.5 -> libotherthings.so.5.11 库文件位于包含其他文件(如其他shell脚本)的目录中。 编辑 :好,“ldconfig -nN”。 可以正常工作,但是我还需要链接,没有在“.so”之后附加的库的主要编号,至less有一个库,因为一个或多个库是来自Java的JNI调用的入口点,所以当一个库通过System.loadlibrary(“libraryname”)的方式实例化,它期望一个名为“libraryname.so”的库,而不是“libraryname.so.X”。 只有ldconfig -nN的解决scheme可以工作,如果有Java部分的解决方法。