标签: scripting

如何在脚本中使用 less 而不获得 ESC 转义字符?

当我less在命令行中使用时,输出就像 在此处输入图片说明

但是当我less在 bash 脚本中使用时,我得到: <code>[![在此处输入图片描述][1]][1]</code>

如何less在 bash 脚本中使用而不获取所有转义字符并使其像在交互式命令行中一样工作?

less scripting escape-characters

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

以编程方式向 crontab 添加内容(通过 ssh)

我有一个部署脚本,它必须向用户添加一些内容crontab(触发一个脚本每 XXX 天清理一次日志),但是这只能在第一次部署期间或需要更新时完成。

(我可以跑步xxx.py deploy envxxx.py update env

所以我必须这样做:

Check if my cronJob already exist
Put my cronJob if it does not already exist
or
update my cronjob if one of the parameter of the command is different
Run Code Online (Sandbox Code Playgroud)

我不知道如何在crontab不使用crontab -e或编辑crontab文件的情况下添加/检查/删除某些内容(下载、重写、重新上传)

PS:这是一个用户特定的cronjob,“webadmin”会这样做,他不应该使用sudo来做。

scripting cron

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

bash shebang的作用是什么?

  • bash shebang的作用是什么?
  • 使用./file或执行文件有什么区别sh file
    • bash 是如何理解的?

shell scripting bash shell-script

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

Linux支持直接通过inode号调用程序吗?

我\xe2\x80\x99m询问是因为字符串比较很慢,但索引很快,而且我编写的很多脚本都是在bash中,据我所知,bash对每个可执行调用执行完整的字符串查找。所有这些ls\xe2\x80\x99s 和grep\xe2\x80\x99s 会更快一点,而无需在每个步骤中执行字符串查找。当然,现在深入研究编译器优化。

\n

无论如何,有没有一种方法可以在 Linux 中仅使用其 inode 号直接调用程序(假设您只需在所有调用中查找一次)?

\n

filesystems scripting path inode

16
推荐指数
2
解决办法
4876
查看次数

如何完全 fork 使用重定向的 shell 命令

这些年来我写了很多 shell 脚本(但我肯定不是系统管理员),而且总是有一些事情给我带来麻烦:如何从Bash脚本中分出一个不受后台挂起影响的 shell 命令?

例如,如果我有这个:

command_which_takes_time input > output
Run Code Online (Sandbox Code Playgroud)

我怎样才能“nohup”并分叉这个?

以下似乎没有做我想要的:

nohup command_which_takes_time input > output &
Run Code Online (Sandbox Code Playgroud)

我正在寻找的语法是什么,我不明白什么?

scripting bash nohup fork

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

是否可以在不设置解释器二进制文件的情况下在脚本中使用功能?

现在我cap_net_bind_service MY_USERNAME在 /etc/security/capability.conf 中使用。
现在我只需要设置cap_net_bind_service+i我最喜欢的脚本语言的解释器,就可以通过 libcap[-ng]添加CAP_NET_BIND_SERVICE有效集。

这工作正常,但我想知道是否有一种方法可以在不为解释器二进制文件设置任何大写的情况下实现相同的目标。虽然这不是一个大问题(其他用户帐户没有上限,因此即使在解释器二进制文件上设置了位也无法使用它),但有点烦人,因为每次解释器运行时我都必须重新设置标志更新。

linux scripting executable setcap capabilities

15
推荐指数
1
解决办法
4639
查看次数

如何使用一行向 sftp 发送多个命令

以下命令将一个命令发送到sftpusing 一行:

sftp -o PasswordAuthentication=no user@host" <<<"lcd /home"
Run Code Online (Sandbox Code Playgroud)

如何将多行发送到sftp使用一行。有没有办法插入回车或其他东西来实现这一点,例如:

sftp -o PasswordAuthentication=no user@host" <<<"lcd /home\n cd /myhome\n get file"
Run Code Online (Sandbox Code Playgroud)

这个想法是不使用sftp -b加载外部文件列表命令的选项。

scripting sftp

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

如何从文件中删除多个空行?

我有一些用于做笔记的文本文件 - 只是纯文本,通常只使用cat >> file. 有时我会使用一两个空行(只需返回 - 换行符)来指定一个新的主题/思路。在每个会话结束时,在使用Ctrl+关闭文件之前D,我通常会添加大量 (5-10) 空行(返回键)以分隔会话。

这显然不是很聪明,但它为此目的对我有用。我不过最终了很多很多不必要的空行,所以我在寻找一种方式来删除(大部分)的额外线。是否有一个 Linux 命令(剪切、粘贴、grep、...?)可以直接与几个选项一起使用?或者,是否有人对 sed、awk 或 perl(实际上是任何脚本语言,尽管我更喜欢 sed 或 awk)脚本有什么想法可以做我想做的事?用 C++ 写一些东西(我实际上可以自己做),看起来有点矫枉过正。

案例#1:我需要的是一个脚本/命令,它可以删除两个以上(3 个或更多)连续的空行,并将它们替换为两个空行。虽然如果它也可以调整以删除多于一行(2 或更多)和/或仅用一个空行替换多个空行,那就太好了。

案例#2:我也可以使用一个脚本/命令来删除两行文本之间的单个空行,但保留多个空行(尽管删除其中一个空行也是可以接受的)。

scripting sed awk perl filter

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

BASH中两个数组的交集

我有两个这样的数组:

A=(vol-175a3b54 vol-382c477b vol-8c027acf vol-93d6fed0 vol-71600106 vol-79f7970e vol-e3d6a894 vol-d9d6a8ae vol-8dbbc2fa vol-98c2bbef vol-ae7ed9e3 vol-5540e618 vol-9e3bbed3 vol-993bbed4 vol-a83bbee5 vol-ff52deb2)
B=(vol-175a3b54 vol-e38d0c94 vol-2a19386a vol-b846c5cf vol-98c2bbef vol-7320102b vol-8f6226cc vol-27991850 vol-71600106 vol-615e1222)
Run Code Online (Sandbox Code Playgroud)

数组未排序,甚至可能包含重复元素。

  1. 我想使这两个数组相交并将元素存储在另一个数组中。我该怎么做?

  2. 另外,如何获取出现在 B 中但在 A 中不可用的元素列表?

scripting bash array

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

用于二进制处理的类似 shell 的环境

这个问题之前问过我几次,现在是为了 回答在/sf/ask/69540411/ 中给出的Bash Answers 中的标准输入中循环二进制数据块的问题 -as-perl-is-to-text也不令人满意。

我正在寻找一种专门用于处理二进制文件 I/O 的脚本环境。我知道我可以使用一种成熟的编程语言(c/Python/...),但它们有巨大的初始化和编码开销(c 中的分配和 fread/fwrite,Python 中的位串......)更不用说它们不太适合编写脚本(从中调用其他应用程序)。Perl 的unpack功能、面向字符串的操作和愚蠢的语法也好不到哪里去。

类似于od,但作为一种语言。

我的期望:

  1. 使用单个开关/命令设置或更改字节序。
  2. 请求类型的简单的规范(像延伸的bashread varint32 varfloat var等)。
  3. 通过管道处理二进制文件,跳过指定数量的字节。
  4. 我们习惯的标准脚本流控制(for/if/...)。

我想像检查 ASCII 文件一样轻松和深入地处理原始数据(摄影、科学数据、未知和记录不佳的格式)。我现在正在使用c,但它不是临时脚本的最佳选择,并且不能进行交互。

有人知道这样的工具吗?请不要使用可点击的 GUI 软件,它需要通过 ssh、其他脚本等工作。“不存在”是一个可以接受但令人沮丧的答案。

scripting binary files

15
推荐指数
1
解决办法
1114
查看次数