我正在编写一个安装程序。 用户将转到目标目录并运行安装脚本,因此第一个操作应该是检查是否有足够的空间。 我知道DF将报告所有的文件系统,但我想知道是否有一种方法来获得目标目录所在分区的可用空间。 编辑 – 我想出来的答案 df $PWD | awk '/[0-9]%/{print $(NF-2)}' 有点奇怪,因为DF似乎格式化其输出,以适应terminal,所以与一个长安装点名称的输出是下移一行
在bash中迭代范围的方法是 for i in {0..10}; do echo $i; done 用一个步骤迭代序列的语法是什么? 说,我想在上面的例子中只有偶数。
我想在bash中找出我的环境variables。 他们存储在什么地方?
假设你有一个txt文件,同时查看文件的前10行和后10行的命令是什么? 即如果文件长度为200行,则一次查看1-10行和190-200行。
所以我试图设置一个cron作为一个守护进程,作为我创build的一个守护进程。 如果守护进程错误,并失败,我希望cron作业定期重新启动它…我不知道这是多么可能,但我读了几个cron教程,并找不到任何事情,将做我所正在找… 我的守护进程从一个shell脚本开始,所以我真的只是寻找一种方法来运行一个cron工作只有当该作业的上一次运行还没有运行。 我发现这个post ,它提供了一个解决scheme,我正在尝试使用locking文件,而不是我不确定是否有更好的方法来做到这一点… 谢谢你的帮助。
我有以下简单的脚本,我正在运行一个循环,并希望保持一个COUNTER 。 我无法弄清楚为什么柜台没有更新。 是由于subshell创build? 我怎样才能解决这个问题? #!/bin/bash WFY_PATH=/var/log/nginx WFY_FILE=error.log COUNTER=0 grep 'GET /log_' $WFY_PATH/$WFY_FILE | grep 'upstream timed out' | awk -F ', ' '{print $2,$4,$0}' | awk '{print "http://domain.com"$5"&ip="$2"&date="$7"&time="$8"&end=1"}' | awk -F '&end=1' '{print $1"&end=1"}' | ( while read WFY_URL do echo $WFY_URL #Some more action COUNTER=$((COUNTER+1)) done ) echo $COUNTER # output = 0
我比任何其他语言都知道,每当我需要一些小东西的时候,我都会通过Googlesearch“学习”Bash。 因此,我可以拼凑出一些似乎可行的小脚本。 然而,我并不知道发生了什么,我希望能更正式地介绍Bash作为一种编程语言。 例如:什么是评估顺序? 什么是范围规则? 什么是打字纪律,例如,一切都是一个string? 程序的状态是什么 – 它是variables名string的键值赋值; 有没有比这更多,例如堆栈? 有堆吗? 等等。 我以为这种洞察力参考了GNU Bash手册,但似乎并不是我想要的。 它更像是一个句法糖的清单,而不是对核心语义模型的解释。 网上的百万个“bash教程”只会更糟。 也许我应该先研究sh ,然后把Bash理解为一个语法糖呢? 不过,我不知道这是否是一个准确的模型。 有什么build议么? 编辑:我被要求提供什么理想的例子我在找。 我认为“forms语义学”的一个极端例子就是关于“JavaScript的本质”的文章 。 Haskell 2010报告也许是一个稍微不太正式的例子。
首先,我知道~/是主目录。 CD到~或~/带我到主目录。 不过, cd ~X把我带到了一个特殊的地方,那里的X好像是什么东西。 在bash中,如果我点击“ cd ~ ”并点击tab,它会显示一堆可能的~X选项,比如~postgres和~postgres和~ssh 。 去那些文件夹,做一个pwd显示我这些文件夹不在主目录; 他们都在这个地方。 他们不是别名。 我查过了 他们不env. variables,否则他们会需要一个$ 。 什么是设置这些链接,我在哪里可以find这些设置?
Bash命令的输出是否存储在任何寄存器中? 例如类似于$?东西$? 捕获输出而不是退出状态。 我可以将输出分配给一个variables: output=$(command) 但是这是更键入…
我试图findUNIX或bash命令连接到ssh服务器后运行一个命令。 例如: ssh name@ip "tmux list-sessions" 上面的代码工作,它列出了会议,但它立即断开连接。 把它放在服务器端的sshrc上,但我需要能够在客户端input。 我希望能够运行命令,login,打开窗口,然后运行我设置的命令。 我试过了 [command] | ssh name@ip ssh name@ip [command] ssh name@ip "[command]" ssh -t name@ip [command]