小编Ala*_*ith的帖子

使用shell脚本计算文件和目录

我正在学习bash脚本,并编写了一个脚本来计算作为参数提供的目录中的文件和目录.我让它工作的方式对我来说很奇怪,我想知道是否有更简单的方法.

我已经注释掉了可行的代码,但将其作为比较.我试图让for-loop工作,而是使用其中的if语句来检测给定位置中的项是文件还是目录.

编辑:我刚刚发现注释的代码也计算了给定位置的子目录中的所有文件和目录!有没有办法防止这种情况,只计算给定位置的文件和目录?

#!/bin/bash

LOCATION=$1
FILECOUNT=0
DIRCOUNT=0

if [ "$#" -lt "1" ]
then
    echo "Usage: ./test2.sh <directory>"
    exit 0
fi

#DIRS=$(find $LOCATION -type d)
#FILES=$(find $LOCATION -type f)

#for d in $DIRS
#do
#   DIRCOUNT=$[$DIRCOUNT+1]
#done

#for f in $FILES
#do
#   FILECOUNT=$[$FILECOUNT+1]
#done

for item in $LOCATION
do
if [ -f "$item" ]
    then
         FILECOUNT=$[$FILECOUNT+1]
    elif [ -d "$item" ]
        then
         DIRCOUNT=$[$DIRCOUNT+1]
fi
done

echo "File count: " $FILECOUNT
echo "Directory count: " …
Run Code Online (Sandbox Code Playgroud)

unix linux bash shell scripting

14
推荐指数
3
解决办法
6万
查看次数

如何使用shell脚本自动化dos2unix?

我在一个目录中有一堆xml文件需要对它们执行dos2unix命令,并且每隔一段时间就会添加新文件.我不是每次都在每个文件上手动执行dos2unix命令,而是希望使用脚本自动完成所有这些操作.在我的生活中,我甚至都没有看过shell脚本,但到目前为止,我从一些教程中读到了这些内容:

FILES=/tmp/testFiles/*
for f in $FILES
do
  fname=`basename $f`
  dos2unix *.xml $f $fname
done
Run Code Online (Sandbox Code Playgroud)

但是我一直在显示'使用'输出.我认为问题是我没有正确分配新文件的名称(fname).谁能帮忙.

谢谢,艾伦

bash shell dos2unix

7
推荐指数
1
解决办法
1万
查看次数

如何在 sed 中仅获取第一次出现的连字符?

例如,我有一个字符串home/JOHNSMITH-4991-common-task-list,我想取出大写部分和中间有连字符的数字。我回显字符串并将其通过管道传递给 sed 像这样,但我不断收到我不想要的所有连字符,例如:

echo home/JOHNSMITH-4991-common-task-list | sed 's/[^A-Z0-9-]//g'
Run Code Online (Sandbox Code Playgroud)

给我:

JOHNSMITH-4991---
Run Code Online (Sandbox Code Playgroud)

我需要:

JOHNSMITH-4991
Run Code Online (Sandbox Code Playgroud)

如何忽略除第一个连字符之外的所有连字符?

regex bash sed

6
推荐指数
2
解决办法
775
查看次数

使用 Puppet 配置 ulimit

我想知道如何使用 Puppets exec 类型运行 ulimit 命令。ulimit 的问题似乎是它不是二进制文件,因此必须在其前面使用 /bin/bash 来调用它。我正在尝试将核心文件大小更改为无限制。我有这个,但不识别 ulimit。

exec {"ulimit":
        command => "/bin/bash ulimit -c unlimited",
}
Run Code Online (Sandbox Code Playgroud)

我可以在命令行中执行“ulimit -c unlimited”,它会毫无问题地更改值。问题是通过 Puppet 来做到这一点。任何帮助都会很棒。

puppet ulimit

5
推荐指数
1
解决办法
1万
查看次数

Bash:如何记录 bash 脚本执行期间的最高内存/CPU 消耗?

我在 bash 脚本中有一个函数,它执行一个名为 runBatch 的长进程。基本上 runBatch 接受一个文件作为参数并将内容加载到数据库中。(runBatch 只是加载文件内容的数据库命令的包装函数)

我的函数有一个如下所示的循环,其中我当前正在将进程的开始时间和经过的时间记录到变量。

for batchFile in `ls $batchFilesDir`
do
     echo "Batch file is $batchFile"  
     START_TIME=$(($(date +%s%N)/1000000))
     runBatch $batchFile
     ELAPSED_TIME=$(($(($(date +%s%N)/1000000))-START_TIME))
     IN_SECONDS=$(awk "BEGIN {printf \"%.2f\",${ELAPSED_TIME}/1000}")
done
Run Code Online (Sandbox Code Playgroud)

然后我将每个批次的一些信息(例如时间等)写入我生成的 html 页面中的表中。

当 runBatch 运行时,我将如何记录最高内存/CPU 使用率以及时间等?

任何帮助表示赞赏。

编辑:我设法完成了这件事。我在该脚本周围添加了一个包装脚本,该脚本在后台运行该脚本。我用 $! 传递它的 PID!到包装器脚本中的另一个脚本,该脚本每秒监控进程的 CPU 和内存使用情况。当 PID 不再有效时,我最后将所有内容编译成 html 页面。望各位指点。

linux bash shell

5
推荐指数
1
解决办法
1289
查看次数

JSF ajax验证与"正常"验证

我有这个小形式,并试图理解在JSF验证中使用ajax.这是表格.(支持bean只是一个带有两个变量firstName和lastName的简单bean.)

<h:form>
    <h:outputLabel for="firstName" value="First Name: " />
    <h:inputText id="firstName" value="#{userBean.firstName}">
        <f:validateLength minimum="5" />
        <f:ajax event="keyup" render="firstNameMsg" />
    </h:inputText>
    <h:message id="firstNameMsg" for="firstName" style="color: red" />
    <br />
    <h:outputLabel for="lastName" value="Last Name: " />
    <h:inputText id="lastName" value="#{userBean.lastName}">
        <f:validateLength minimum="5" />
        <f:ajax event="keyup" render="lastNameMsg" />
    </h:inputText>
    <h:message id="lastNameMsg" for="lastName" style="color: red" />
    <br />
    <h:commandButton value="Submit">
        <f:ajax execute="firstName lastName" render=":greeting" />
    </h:commandButton>
    <br />
</h:form>
<h:outputText id="greeting" value="#{userBean.greeting}" />
Run Code Online (Sandbox Code Playgroud)

我有一个附加到我的按钮的ajax,它在提交时使用名字和姓氏呈现outputText标记,这很好.我的问题是,为什么我需要使用f:ajax标签f:validateLength,以验证这两个领域的标签?我的理解是ajax执行渲染响应阶段的所有生命周期阶段,即它包括验证.无论是否来自ajax请求或常规提交/操作请求,验证阶段是否都不会重新呈现带有消息的页面?如果我删除附加到输入字段的ajax标记,则验证消息不会显示,但如果我完全删除ajax并且只使用commandButtons动作事件使用常规提交,它们就会显示.

谢谢,艾伦

ajax jsf

3
推荐指数
1
解决办法
6193
查看次数

有条件地基于selectOneMenu值渲染组件

有没有办法根据用户从selectOneMenu组件中选择的当前值渲染组件?我的selectOneMenu组件填充了一个由两个值组成的枚举,吸烟者和非吸烟者.如果用户选择了吸烟者,我想在其下方呈现一个复选框,让用户检查他们每天抽烟的次数10,20,30 +等.如果用户选择非吸烟者,我也希望相反的工作即复选框不会渲染/消失.

jsf selectonemenu conditional-rendering

2
推荐指数
1
解决办法
9140
查看次数