标签: scripting

如何制作将输出发送到进程的 shell 脚本

我目前正在屏幕上运行服务器控制台程序,因为我需要阅读它并偶尔发送命令。

我想在后台将应用程序作为守护程序运行(使用 init 启动/停止它)。

我可以tail -f记录日志,但这不会让我向进程发送输入。

有什么方法可以设置它以便我可以读取和发送输入,但仍然让它在后台运行?

我还希望能够将来自不同进程的输入发送到守护程序(例如,可以发送“停止\n”命令的 shell 脚本)。

scripting shell-script tail

11
推荐指数
1
解决办法
4132
查看次数

压缩文件时排除目录

我有一个 bash 脚本,它执行如下操作:

zip -0 ../backup/backup.zip \
-r ./* \
-x \*CVS\* \
-x *Thumbs.db* \
Run Code Online (Sandbox Code Playgroud)

它备份的目录是一个 SVN 归档文件(过去它曾经是 CVS)。我一直无法让它排除 .svn 及其内容。排除 .svn 的最干净方法是什么(递归遍历整个树)?

scripting bash zip

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

获取字符的数字 ASCII 值

我正在尝试编写一个 shell 脚本,它要求在 AZ 或 az 范围内输入一个 ASCII 字符并返回其等效的数值。例如,输出可能如下所示:

scarlet$ Please type a character between A and Z or between a and z:
scarlet$ A       
scarlet$ The decimal value of A is: 65 
Run Code Online (Sandbox Code Playgroud)

我的尝试:

#!/bin/bash
echo Enter a letter:
read A
echo -n ${A} | od -i | head -1 | cut -b 10- | tr -d " "
Run Code Online (Sandbox Code Playgroud)

scripting text-processing od

11
推荐指数
3
解决办法
2万
查看次数

如何在大文件夹层次结构中进行文本替换?

我想在一大组文件中搜索和替换一些文本,不包括某些实例。对于每一行,我想要一个提示,询问我是否需要替换该行。类似于 vim 的:%s/from/to/gc(带有cto 提示进行确认),但跨一组文件夹。是否有一些好的命令行工具或脚本可以使用?

scripting vim text-processing interactive

11
推荐指数
2
解决办法
1933
查看次数

加载用户桌面时如何从脚本中检测?

我有一个守护进程,在 bash 中实现并通过cron@reboot选项运行,它显示桌面处于非活动状态。脚本如下(为了测试目的,时间很短):

#!/bin/bash
P_STATE=0
while :
do
    sleep 5
    if [ $P_STATE == 0 ]; then
         [ `xprintidle` -ge 25000 ] && P_STATE=1 && wmctrl -k on
    else
         [ `xprintidle` -le 25000 ] && P_STATE=0
done
Run Code Online (Sandbox Code Playgroud)

问题:例如,如果用户仍然在登录屏幕中,xprintidle并且wmctrl由于桌面尚未加载而失败。为了避免这种情况,我将下一行放在脚本的开头:

while:
do
    sleep 10s
    [ -n `who | grep "$USER"` ] && break
done
Run Code Online (Sandbox Code Playgroud)

因此,脚本等待用户(在 crontab 文件中将 USER 变量设置为我的用户名)被记录。但是,如果用户开始,例如,终端会话(而不是像 KDE 或 GNOME 这样的图形会话),脚本也会继续。

如何确定用户是否已经处于能够“显示桌面模式”的“图形”会话中?此外,我如何确保“图形”会话已完全加载并且不在加载过程中或类似的东西?

我的解决方案: 我的(非正式)解决方案是在主循环中添加以下grep行:

WAIT_TIME=180

while:
do
    sleep $WAIT_TIME

    [ …
Run Code Online (Sandbox Code Playgroud)

scripting bash desktop session

11
推荐指数
1
解决办法
2455
查看次数

如何使用 wc 和管道查找某个目录中有多少个文件和目录?

如何使用字计数器 ( wc) 和管道来计算目录中有多少文件或/usr/bin目录?

scripting find wc file-types

11
推荐指数
2
解决办法
4万
查看次数

根据上次修改日期递归地对目录中的文件进行排序

根据上次修改日期递归地对目录中的文件进行排序

我修改了目录中的很多文件,想通过按上次修改日期对它们进行排序来了解这些文件是什么,并且我希望排除某些扩展名

在 svn 目录中,我也有很多 .svn 文件,我不想在排序中显示

shell scripting find sort

11
推荐指数
4
解决办法
3万
查看次数

如何设置 Ruby GEM_HOME 和 GEM_PATH

我是 Linux 的新手用户,使用 Linux mint 17.1

我在过去 3 天内为该问题重新安装了 Linux Mint 20 次,但无法修复它

我正在尝试使用 rvm 在 rails 上安装 ruby .

通过在过去 3 天内重新安装它超过 20 次,我也在网上搜索过。有人告诉我将环境变量放入/etc/environment我在该会话中回显的路径中并将其粘贴到/etc/environment文件中。

即使现在我也没有得到我安装的 gems

当我输入时rvm -v出现以下错误

Warning: PATH set to RVM ruby but GEM_HOME and/or GEM_PATH not set, see:
    https://github.com/wayneeseguin/rvm/issues/3212

Warning! PATH is not properly set up, $GEM_HOME is not set,
         usually this is caused by shell initialization files - check them for 'PATH=...' entries,
         it might also help to re-add …
Run Code Online (Sandbox Code Playgroud)

linux scripting ubuntu environment-variables linux-mint

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

bash:你如何返回文件扩展名?

我想编写一个脚本来仅返回输入文件名的扩展名。例如,textfile.txt 应该返回txt.

我是 Linux 和 bash 的新手,我正在尝试学习如何编写基本脚本。谢谢!

scripting bash

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

使用“邮件”从命令行读取电子邮件

我知道我们可以mail在终端中使用命令mail以交互模式开始使用程序。

但是,我想以mail非交互方式使用命令阅读电子邮件。

有没有类似的命令

$ mail -optionToReadMail -mailNumber 1;
Run Code Online (Sandbox Code Playgroud)

这将在 stdout 中显示电子邮件的内容?

scripting bash mailx

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