草庐IT

bash-trap

全部标签

linux - 这是 bash 中的错误吗?(向上箭头)

众所周知,按向上箭头键可以显示历史命令,但我发现以空格开头的命令不会显示在“向上箭头”的历史记录中:$ls$(按向上箭头键)bash将显示:$ls但是:$ps$ls(注意这个命令以空格开头)现在我按向上箭头键,它会显示'ps'而不是'ls':$ps这是bash中的错误还是特定功能?:) 最佳答案 来自bash(1):HISTCONTROLAcolon-separatedlistofvaluescontrollinghowcommandsaresavedonthehistorylist.Ifthelistofvaluesinclude

linux - 如何让 bash 将 undefined variable 视为错误?

请注意:本站有很多关于如何测试单个shell变量的问题。这个问题是关于测试任何undefinedvariable的脚本。您可以在bash中使用undefinedvariable而不会在执行时看到任何错误:#!/bin/bashecho${UNDEF_FILE}ls-l${UNDEF_FILE}exit0我发现这很容易出错。如果我想在大型脚本中更改变量的名称,或删除该变量,所有以前的陈旧引用都会导致脚本出错。有时这对调试来说并不明显,或者您发现时为时已晚。为什么允许这样做?有什么方法可以标记undefinedvariable吗? 最佳答案

linux - 如何让 bash 将 undefined variable 视为错误?

请注意:本站有很多关于如何测试单个shell变量的问题。这个问题是关于测试任何undefinedvariable的脚本。您可以在bash中使用undefinedvariable而不会在执行时看到任何错误:#!/bin/bashecho${UNDEF_FILE}ls-l${UNDEF_FILE}exit0我发现这很容易出错。如果我想在大型脚本中更改变量的名称,或删除该变量,所有以前的陈旧引用都会导致脚本出错。有时这对调试来说并不明显,或者您发现时为时已晚。为什么允许这样做?有什么方法可以标记undefinedvariable吗? 最佳答案

bash - 循环输出到文件

我正在尝试让for循环将文本输出到文件10次。这是我所拥有的:for((i=1;itestforloop.txtdone这会将HelloWorld输出一次到文件testforloop.txt。如果我不输出到文件,它会在屏幕上打印10次HelloWorld。 最佳答案 您正在使用>重定向,它会在循环内清除文件的现有内容并将其替换为命令的输出。所以这会删除之前的内容10次,每次替换为一行。没有>,或者用>/dev/tty,它会转到您的显示器,其中>无法删除任何内容,因此您会看到所有十份副本。你可以使用>>,它仍然会打开文件十次,但每次都

bash - 循环输出到文件

我正在尝试让for循环将文本输出到文件10次。这是我所拥有的:for((i=1;itestforloop.txtdone这会将HelloWorld输出一次到文件testforloop.txt。如果我不输出到文件,它会在屏幕上打印10次HelloWorld。 最佳答案 您正在使用>重定向,它会在循环内清除文件的现有内容并将其替换为命令的输出。所以这会删除之前的内容10次,每次替换为一行。没有>,或者用>/dev/tty,它会转到您的显示器,其中>无法删除任何内容,因此您会看到所有十份副本。你可以使用>>,它仍然会打开文件十次,但每次都

linux - 在 bash 中的每个命令后执行命令

我想在我运行的每个bash命令后打印日期。这可以帮助我了解当我离开键盘时执行命令需要多少时间。我知道我能做到`DATE=`date+%d/%m/%Y\%H:%M:%S`&&echo$DATE`获取日期,但我不知道如何在bash上执行每个命令后运行此命令,甚至不知道是否可以运行此命令。我也有兴趣在每个命令之前运行相同的命令,这样我就可以知道命令花费了多长时间。这可能吗?我应该编辑什么文件?例如:$wgetgoogle.com15/07/201723:40:05如果我还能介绍以下功能,我会很高兴:$wgetgoogle.com15/07/201723:40:0515/07/201723:4

linux - 在 bash 中的每个命令后执行命令

我想在我运行的每个bash命令后打印日期。这可以帮助我了解当我离开键盘时执行命令需要多少时间。我知道我能做到`DATE=`date+%d/%m/%Y\%H:%M:%S`&&echo$DATE`获取日期,但我不知道如何在bash上执行每个命令后运行此命令,甚至不知道是否可以运行此命令。我也有兴趣在每个命令之前运行相同的命令,这样我就可以知道命令花费了多长时间。这可能吗?我应该编辑什么文件?例如:$wgetgoogle.com15/07/201723:40:05如果我还能介绍以下功能,我会很高兴:$wgetgoogle.com15/07/201723:40:0515/07/201723:4

linux - bash shell 中的 '$$' 是什么?

我是bashshell编程的初学者。你能告诉我bashshell中的“$$”符号吗?如果我尝试以下操作#>echo$$它打印#>18756你能告诉我这个符号的用途和时间吗? 最佳答案 它是bash进程本身的进程id。您可以使用它来跟踪整个过程的生命周期-使用ps-p要查看它是否仍在运行,请使用kill向其发送信号(例如暂停进程),使用renice更改其优先级,等等。进程ID通常会写入日志文件,尤其是当脚本的多个实例同时运行时,以帮助跟踪性能或诊断问题。这是thebashdocumentation概述特殊参数。BASHPID,由gho

linux - bash shell 中的 '$$' 是什么?

我是bashshell编程的初学者。你能告诉我bashshell中的“$$”符号吗?如果我尝试以下操作#>echo$$它打印#>18756你能告诉我这个符号的用途和时间吗? 最佳答案 它是bash进程本身的进程id。您可以使用它来跟踪整个过程的生命周期-使用ps-p要查看它是否仍在运行,请使用kill向其发送信号(例如暂停进程),使用renice更改其优先级,等等。进程ID通常会写入日志文件,尤其是当脚本的多个实例同时运行时,以帮助跟踪性能或诊断问题。这是thebashdocumentation概述特殊参数。BASHPID,由gho

linux - 仅当非零时才在 bash 提示符中显示作业计数

bash中的典型提示符如下:PS1="\u@\h:\w\$"您可以使用\j显示后台作业的数量,例如:PS1="\u@\h:\w[\j]\$"这很有用,因为我时不时会忘记我有一个停止的工作,只有在我手动从shell中注销时才会注意到它的提示。然而,在95%的情况下,后台作业计数为0,在提示中显示它是多余的。如何在提示中显示作业数,但前提是它非零? 最佳答案 例如,您可以做这样的事情:PS1='\u@\h:\w$([\j-gt0]&&echo[\j])\$' 关于linux-仅当非零时才在b