标签: scripting

是否有一个 unix 命令可以给出两个数字的最小值/最大值?

我正在寻找一个命令来限制从stdin.

我为此编写了一个小脚本(欢迎批评),但我想知道是否没有针对此简单且(我认为)常见用例的标准命令。

我的脚本找到了两个数字中的最小值

#!/bin/bash
# $1 limit

[ -z "$1" ] && { echo "Needs a limit as first argument." >&2; exit 1; }

read number

if [ "$number" -gt "$1" ]; then
        echo "$1"
else
        echo "$number"
fi
Run Code Online (Sandbox Code Playgroud)

scripting numeric-data

54
推荐指数
6
解决办法
9万
查看次数

检查系统是否在 BASH 中使用 systemd 或 sysvinit 的便捷方法?

我正在定义要在不同发行版中使用的通用 bash 文件。我需要一种方法来检查系统是使用 systemd 还是 sysvinit (/etc/init.d/)。我需要这个,所以我运行适当的命令来启动服务。检查这个的安全方法是什么?我目前检查 systemctl 命令是否存在,但这真的是一个选项,因为可能存在 systemctl 命令可用的情况,但这并不一定意味着实际使用了 systemd?

这是我当前 bash 脚本的摘录:

#!/bin/sh
if [ command -v systemctl >/dev/null ]
then
    systemctl service start
else
    /etc/init.d/service start
fi
Run Code Online (Sandbox Code Playgroud)

linux scripting systemd sysvinit

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

将图像从剪贴板复制到文件

是否可以从剪贴板中获取图像并将其输出到文件(使用 X)?

我可以很容易地用文本做到这一点:

$ xclip -selection c -o > file.text
Run Code Online (Sandbox Code Playgroud)

但是当我用图像尝试上述操作时,什么也没有写。


我想这样做的原因是我没有安装图像编辑器,这让我思考是否可以在不安装的情况下做到这一点。

scripting x11 clipboard images

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

确定特定 ARM 体系结构字符串的简单命令行方法?

我正在尝试编写一个脚本,该脚本将根据机器的架构确定操作。我已经uname -m习惯收集架构线了,但是我不知道有多少个ARM架构,也不知道一个是armhf, armel, 还是arm64.

由于这是需要这种脚本来确定脚本的部分是否可以运行或不,我试图找到一个简单的方法来确定该架构armhfarmelarm64。是否有可用于输出或者任何单行或简单的命令armhfarmelarm64

该脚本是专门为 Debian 和 Ubuntu 系统编写的,我正在考虑这一点(如果您不在这些发行版之一上,它会自动退出,但是如果命令存在)


编辑:最近了解到 armel 已死,并且 arm64 软件构建器(PPA 或基于虚拟的)并不是最稳定的。所以我有一个通配符搜索查找arm*和假设 armhf,但仍然有必要找出一个返回三个之一的一个 liner - 无论是 Ubuntu/Debian 命令还是内核调用或其他东西。

scripting ubuntu debian architecture cpu-architecture

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

通用 Node.js 服务?

Node.js现在非常流行,我一直在用它编写一些脚本。不幸的是,兼容性是一个问题。正式地,Node.js 解释器应该被称为node,但 Debian 和 Ubuntu 提供了一个名为的可执行文件nodejs

我想要 Node.js 可以在尽可能多的情况下使用的可移植脚本。假设文件名是foo.js,我真的希望脚本以两种方式运行:

  1. ./foo.js如果nodenodejs在 中,则运行脚本$PATH
  2. node foo.js还运行脚本(假设调用了解释器node

注意: xavierm02 和我自己的答案是多语言脚本的两种变体。如果存在,我仍然对纯粹的shebang解决方案感兴趣。

scripting compatibility node.js

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

正确使用 setuid 位

我有一个由普通用户运行时需要 root 权限的进程。显然我可以使用“setuid 位”来完成此操作。在 POSIX 系统上执行此操作的正确方法是什么?

另外,如何使用使用解释器(bash、perl、python、php 等)的脚本执行此操作?

scripting setuid

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

shell find -delete "目录不为空"

我尝试删除 Synology NAS 上超过 30 天的备份文件。这些文件位于从我的网络服务器下载备份文件期间创建的目录中。
下载后,我想检查 -mtime 然后删除旧文件。

脚本来了:

#!/bin/sh

## Datum auslesen
datum=`date +%Y-%m-%d_%H-%M`

## Mit wget die Datei AutoBackupDB-1.zip laden und in einem Ordner mit Datum uns Uhrzeit speichern 
wget -m -P /volume1/Austauschordner/backup_xyz/$datum/ ftp://backup:backup@domain.tdl/AutoBackupDB-1.zip
echo "Backup von xyz wurde erstellt! "

## finde alle Ordner in einem angegebenen Verzeichnis mit dem Suchnamen die älter als die angegebenen Tage sind und lösche diese
find /volume1/Austauschordner/ -type d -name 'backup_*' -ctime +30 -delete
Run Code Online (Sandbox Code Playgroud)

如果我运行这个脚本,它会告诉我“目录不为空”并且不会删除任何内容。

是否有一种简单的方法或选项可以删除目录中的所有内容?

shell scripting find

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

哪些 Unix 命令可以用作信号量/锁?

我想并行运行多个 Bash shell 脚本。但是,我想避免竞争条件。我可以为此目的使用哪些 Unix 命令真正具有原子性,我该如何使用它们?

scripting semaphore bash

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

将 xargs 与来自文件的输入一起使用

假设我有一个包含以下内容的文件

bob
john
sue
Run Code Online (Sandbox Code Playgroud)

现在这些直接对应(在本例中)URL 模式,例如http://example.com/persons/bob.tar, john.tar, sue.tar

我想使用这些线路并运行它们xargs。我不知道传递给正在执行的命令的内容是什么。我如何从提示符(比如我想简单地回显每一行cat file | xargs echo $PARAM)或从 bash 脚本访问参数。

scripting bash xargs

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

单行生成易于记忆的密码?

什么是生成易于记忆的密码的好单行代码,例如 xkcd 的正确马电池主食或比特币种子?

编辑 1

这与生成随机字符串不同,因为随机字符串根本无法记忆。与强制性的 xkcd 相比......

scripting password shell-script

44
推荐指数
5
解决办法
7930
查看次数