标签: bash

使用 ETA 复制 Linux 文件?

我正在磁盘之间复制大量文件。大约有 16 GB 的数据。我想从命令行查看进度信息,甚至估计完成时间。

有什么建议吗?

linux bash command-line-interface cp copying

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

基于grep结果的回声

无论 grep 是否找到任何结果,我都需要一个显示“是”或“否”的衬里。

我玩过grep -c,但没有成功。

scripting bash grep

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

测试正在等待标准输入的脚本

有没有办法确定脚本是否正在等待 stdin 并在检测到命令时退出?

这是一个例子,我正在执行的命令需要很长时间才能运行,但它也会在启动 w/oa 提示之前提示输入。我想知道该命令实际上是在做某事,而不仅仅是在等待。

提供了以下名为 ./demo 的脚本

#!/bin/bash

read
Run Code Online (Sandbox Code Playgroud)

有没有办法检测读取正在等待标准输入?就像是

failifwaitingonstdin | ./demo
Run Code Online (Sandbox Code Playgroud)

一旦检测到读取命令,它将立即返回。

更新:

人们已经建议了诸如expect 和yes 之类的程序。在深入研究 yes 之后,我看到他们如何能够支持这种交互方式。他们不断地使用 fputs 将“y”写入标准输出。我可以简单地在 fputs 在写入标准输出时返回时立即返回错误,而不是无限地执行此操作。

scripting bash stdin

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

Bash:对 FIND 的结果执行命令

我正在尝试调整使用 FIND 命令找到的所有文件的大小(它们都是目录及其子目录中的所有文件)。我尝试了很多选择,但每次都遇到不同的错误。这是我最后一次尝试:

find /my/folder/ -name '*jpg' -exec 'mogrify -resize 900">"{}' \;
Run Code Online (Sandbox Code Playgroud)

我尝试了许多其他方法,但无济于事。出了什么问题?

bash find

7
推荐指数
2
解决办法
1717
查看次数

vim、less 等上的 GNU 屏幕清除。出口

我对 screen 很陌生,但已经根据我在互联网上找到的各种建议配置了我的 ~/.screenrc 文件。我有一个问题,但我确信可以很容易地解决它;我认为这是一个termcap设置..?

在独立 bash(在 Mac OSX 10.6 上)中使用 less、vim、top 或其他程序后,退出这些程序时,终端的缓冲区将清除,当前命令行上方的行将是我输入的上一个命令。
但是,对于屏幕,当我退出这些程序中的任何一个时,屏幕缓冲区不会清除/刷新,我仍然会看到我在该程序中看到的内容..有意义吗??

例如在独立的 bash(没有屏幕)中:-

hostname:~ auser$ vim afile 
[do stuff in file, then :q to exit]
Run Code Online (Sandbox Code Playgroud)

退出后我会看到:-

hostname:~ auser$ vim afile 
hostname:~ auser$
Run Code Online (Sandbox Code Playgroud)

但在屏幕上:-

bash-3.2$ vim afile
[do stuff in file, then :q to exit]
Run Code Online (Sandbox Code Playgroud)

退出后,我会看到整个屏幕:-

~  # [Empty lines in vim are represented by these tilda characters. ]
...
~  # [ Every line on the screen is one of these tildas ]
bash-3.2$   # [ This …
Run Code Online (Sandbox Code Playgroud)

bash gnu-screen

7
推荐指数
2
解决办法
7701
查看次数

linux上的非递归查找

我正在尝试查找直接位于当前目录内且早于特定年龄的所有目录。诀窍是,我只想考虑当前目录的直接后代的年龄,而不是递归搜索它们。

用法示例用于文件的每日备份 - 每天都会创建一个新目录,但放置在该目录中的文件保留其时间戳并且通常较旧。我希望能够在不删除更新快照中的旧文件的情况下清理旧备份。

看起来find可能无法做到这一点,您推荐什么 unix 工具(或它们的组合)?

linux unix backup bash find

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

如何使用uuid获取U盘的挂载点?

我是 ubuntu linux 的初学者,我需要编写简单的 bash 脚本,该脚本可以使用该分区的 uuid识别必要的闪存驱动器(仅包含一个vfat分区),并获取该闪存驱动器的挂载点。/etc/fstab文件不包含此驱动器的 mountig 规则。例如,让分区 uuid 为 7DCD-9380 使用 readlink 工具我可以在/dev目录中获取设备链接:

teddy@st1:~$ readlink -f /dev/disk/by-uuid/7DCD-9380  
/dev/sdc1
Run Code Online (Sandbox Code Playgroud)

但是我如何获得/dev/sdc1设备的挂载点?

linux ubuntu partition bash uuid

7
推荐指数
2
解决办法
4916
查看次数

自动安装包的脚本

我想编写一个 bash 或 perl 脚本来在我的基于 debian 的机器上安装一些软件包。

我希望它是这样的:

aptitude install package1 
aptitude install package2
Run Code Online (Sandbox Code Playgroud)

但是,我不知道如何在提示下通过脚本自动说“是”以确认您要安装该软件包。有人可以给我一个 perl 和 bash 的例子吗?

格拉茨!

linux debian bash perl

7
推荐指数
3
解决办法
1832
查看次数

如何保护 shell 脚本免于失控?

我最近有一次编写 shell 脚本的经历,该脚本通过消耗所有资源使服务器崩溃(并损坏了分区)。它连接到一个 cron 作业,运行时间似乎比执行之间的间隔时间更长,随着时间的推移,滚雪球失控。

现在,我已经修改了它以记录其运行状态,并且不会同时运行多次。我的问题是:还有其他简单的方法可以保护脚本免受伤害吗?是否有一个标准的脚本应该做的事情列表,以确保正常运行、不消耗太多资源、优雅地失败、提醒正确的人等?

基本上:我应该避免哪些其他陷阱?

scripting resources bash process

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

如何编写仅作用于新日志条目的脚本

我觉得这应该是一件简单的事情,但我很难弄清楚。

我正在尝试编写一个脚本来监视其中一个 apache 日志文件并采取一些特定的操作。但是我应该如何监视日志文件?

每次将新行写入日志时,我都希望检查该条目以查看它是否与我要查找的内容匹配,以及是否发生了 x。当我手动执行此操作时,我使用了 cat 或 tail -f。我不想通过 cron 每 30 秒运行一次脚本并浏览整个日志(甚至最后 5 行),找出自上次脚本运行以来哪些行是新的,然后是一些事情。

有没有办法只检查日志中的单个新条目?

scripting monitoring bash logging apache-2.2

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