Questions tagged «shell-script»

有关shell脚本,由shell解释的可执行文件(bash,zsh等)的问题。

4
在OS X中修复或替代mktemp
我正在查看其他人使用的bash脚本mktemp: TEMP=`mktemp --directory` 但是,此行在我的机器(OS X 10.6)上不起作用。 我将如何修复此行,使其与跨un * x平台兼容?编辑:替代命令也将足够。

7
如何监视我的计算机上的所有传出请求/连接?
我的机器是服务器,因此我想忽略与服务器的连接(例如,当有人访问我的网站时)。我希望看到只有连接/请求被我的服务器到其他地方做。 我如何仅查看那些传出的连接? 编辑:我是这些类型的东西的新手。我要尝试做的只是查看是否从服务器发送了除Web应用程序数据以外的任何内容。例如,如果有人访问了我的网站,则显然我的服务器会将数据发送到客户端的浏览器。但是,假设我的Web应用程序框架中还有代码将统计数据发送到我不知道的其他地方。我希望看到服务器将数据发送到的那些位置(如果有)。可能不太可能,但是假设您决定使用未编写的php或nodejs框架:很有可能它会在某处发送某种类型的数据。如果是这样,那就是我想要看到的。

10
在目录列表中显示文件大小总和
Windows dir目录列表命令的末尾有一行,显示列出的文件占用的空间总量。例如,dir *.exe显示.exe当前目录中的所有文件,文件大小以及文件大小的总和。我希望dir在bash中使用别名具有类似的功能,但是我不确定该怎么做。 目前,我有alias dir='ls -FaGl'我的.bash_profile,显示 drwxr-x---+ 24 mattdmo 4096 Mar 14 16:35 ./ drwxr-x--x. 256 root 12288 Apr 8 21:29 ../ -rw------- 1 mattdmo 13795 Apr 4 17:52 .bash_history -rw-r--r-- 1 mattdmo 18 May 10 2012 .bash_logout -rw-r--r-- 1 mattdmo 395 Dec 9 17:33 .bash_profile -rw-r--r-- 1 mattdmo 176 …
71 bash  shell-script  awk  ls 

6
如何检测外壳是否由SSH控制?
我想从shell脚本(更具体地说是.zshrc)中检测它是否通过SSH控制。我尝试了HOST变量,但它始终是运行Shell的计算机的名称。我可以访问SSH会话来自的主机名吗?比较两者将解决我的问题。 每次我登录时,都会显示一条消息,说明上次登录时间和主机: Last login: Fri Mar 18 23:07:28 CET 2011 from max on pts/1 Last login: Fri Mar 18 23:11:56 2011 from max 这意味着服务器具有此信息。
69 ssh  shell-script  zsh 


9
以pdf分割页面
我有一个扫描的pdf文件,已在一个虚拟页面(pdf文件中的页面)上扫描了两页。 分辨率良好。问题是我必须在阅读时进行缩放并从左向右拖动。 是否有一些命令(convert,,pdftk...)或脚本可以将此pdf文件转换为普通页面(书中的一页= pdf文件中的一页)?

13
正确锁定外壳脚本?
有时,您必须确保同时运行一个Shell脚本实例。 例如,通过crond执行的cron作业本身并不提供锁定(例如,默认的Solaris crond)。 实施锁定的常见模式是这样的代码: #!/bin/sh LOCK=/var/tmp/mylock if [ -f $LOCK ]; then # 'test' -> race begin echo Job is already running\! exit 6 fi touch $LOCK # 'set' -> race end # do some work rm $LOCK 当然,这样的代码具有竞争条件。在一个时间窗口中,两个实例的执行都可以在第3行之后在一个实例能够触摸$LOCK文件之前进行。 对于cron作业,这通常不是问题,因为两次调用之间的间隔为几分钟。 但是事情可能会出错(例如,当锁文件位于NFS服务器上时)会挂起。在这种情况下,几个cron作业可以在第3行上阻塞并排队。如果NFS服务器再次处于活动状态,那么您将听到大量并行运行的作业。 在网上搜索时,我发现了锁运行工具,这似乎是解决该问题的好方法。使用它可以运行需要锁定的脚本,如下所示: $ lockrun --lockfile=/var/tmp/mylock myscript.sh 您可以将其放入包装器中,也可以从crontab中使用它。 lockf()如果可用,它将使用(POSIX),然后回退到flock()(BSD)。并lockf()支持NFS上应该是比较普遍的。 有替代品lockrun吗? 那其他的cron守护程序呢?有普通的crond支持健全的锁定吗?快速浏览Vixie …

4
在bash中,是否可以在for循环的循环控制中使用整数变量?
我有以下bash脚本: #!/bin/bash upperlim=10 for i in {0..10} do echo $i done for i in {0..$upperlim} do echo $i done 第一个for循环(在循环控制中没有变量upperlim)可以正常工作,但是第二个for循环(在循环控制中具有变量upperlim)不能正常工作。有什么方法可以修改第二个for循环以使其起作用?谢谢你的时间。
65 bash  shell  shell-script  for 

16
即使使用--passphrase,gpg也会要求输入密码
我希望以下命令在不要求输入密码的情况下提取gpg文件: gpg --passphrase 1234 file.gpg 但它要求输入密码。为什么? 这也具有相同的行为: gpg --passphrase-file passfile.txt file.gpg 我将Ubuntu与gnome 3结合使用,并记住它在Fedora中正常工作
65 shell-script  gpg 

9
脚本可以执行但不可读吗?
如果没有读取脚本的权限,是否可以执行该脚本?在root模式下,我创建了一个脚本,并且希望其他用户执行此脚本但不读取它。我确实chmod禁止读写,但允许执行,但是在用户模式下,我看到了以下消息:权限被拒绝。

7
Shell脚本失败:语法错误:“(”意外
我一直在研究一个脚本,该脚本可以自动为Raspberry Pi开发设置开发环境(有关工作的逐步详细信息,请参见此处)。该脚本已在该文章中链接,但为方便起见,您也可以在此处找到它。现在,当运行此脚本时,将安装并正确设置环境,但是由于sudo的默认超时值,您必须多次输入sudo密码。因此,我开始进行实验,删除所有sudo行,然后在命令行通过sudo运行整个脚本,如下所示: kemra102@ubuntuvm:~$ sudo ./pi_dev_env_install.sh 这可以按预期工作,并且可以完成大部分工作: ./pi_dev_env_install: 68: ./pi_dev_env_install.sh: Syntax error: "(" unexpected 现在,当不使用sudo运行整个脚本时,此行以前可以正常工作。以sudo运行的这条线没有什么可以阻止它工作,据我所知,有人有任何想法吗?


5
无法缩进Heredoc以匹配嵌套的缩进
如果有一个“第一世界问题”来编写脚本,就是这样。 我要更新的脚本中包含以下代码: if [ $diffLines -eq 1 ]; then dateLastChanged=$(stat --format '%y' /.bbdata | awk '{print $1" "$2}' | sed 's/\.[0-9]*//g') mailx -r "Systems and Operations <sysadmin@[redacted].edu>" -s "Warning Stale BB Data" jadavis6@[redacted].edu <<EOI Last Change: $dateLastChanged This is an automated warning of stale data for the UNC-G Blackboard Snapshot …


9
如何测量程序执行时间并将其存储在变量中
为了找出Bash(v4 +)脚本中的某些操作需要花费多长时间,我想time“单独” 解析命令的输出,并(最终)将其捕获到Bash变量(let VARNAME=...)中。 现在,我正在使用time -f '%e' ...(或者command time -f '%e' ...由于内置的​​Bash而已),但是由于我已经重定向了已执行命令的输出,因此我对如何捕获time命令的输出一无所知。基本上这里的问题是到输出分离的time从执行的命令(或多个)的输出。 我想要的功能是计算从开始命令到完成之间以秒为单位(整数)的时间。它不一定是time命令或相应的内置命令。 编辑:给定以下两个有用的答案,我想添加两个说明。 我不想抛弃已执行命令的输出,但是最终以stdout还是stderr结束并不重要。 我更喜欢直接方法而不是间接方法(即直接捕获输出而不是将其存储在中间文件中)。 date到目前为止使用的解决方案接近我想要的。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.