Articles of bash

用一个string代替shell中的variables

我将一个string作为parameter passing给一个shell脚本。 而shell脚本应该告诉我,如果传递的参数是一个variables 像这样的东西 if [ ! -z ${$1} ] ; then echo yes! $1 is a variable and its value is ${$1} fi 但这给我不好的替代err .. 我绝对知道我错过了什么..帮助我! 例如用法: $ myscript.sh HOME yes! HOME is a variable and its value is /home/raj

什么ncurses框架可用于BASH?

是否有一些更多的文本用户界面(TUI)bash框架(除此之外)? : http : //code.google.com/p/bashsimplecurses/ 我想采取用户input(数据input) 处理条目

.bash_history:它是否总是logging我发出的每一个命令?

我希望能够查看我的命令历史logging(一直回到用户的开头)。 是否有任何保证.bash_history将继续被附加到? 如果文件开始被截断(希望从头开始)有一个限制,是否有办法消除这个限制?

Bash数组和否定的下标,是或否?

GNU bash手册告诉我 如果使用语法分配了任何variables,则会自动创build索引数组 name[subscript]=value 下标被视为必须计算为数字的算术expression式。 如果下标的计算结果为小于零的数字,则将其用作大于数组最大索引的偏移量(因此,下标-1表示数组的最后一个元素)。 所以我想我会试一试,得到以下结果: $ muh=(1 4 'a' 'bleh' 2) $ echo $muh 1 $ echo ${muh[*]} 1 4 a bleh 2 # so far so good so now I'll try a negative … $ echo ${muh[-1]} -bash: muh: bad array subscript # didn't go as planned! 我做错了什么,或者网站错了,或者是与在CentOS下运行的bash不同的gnu bash? 谢谢!

如何在/ etc / environment中正确设置JAVA_HOME

我试图添加JAVA_HOME系统范围,并添加JAVA_HOME / bin到PATH(Ubuntu 12.04)。 如果我在/ etc / environment的末尾添加以下两行,之后就不能再login了。 如果我将2行添加到/ etc / profile一切正常。 这个问题呢? export JAVA_HOME="/usr/lib/jvm/java-7-oracle" export PATH="$PATH:$JAVA_HOME/bin" / etc / environment(第1行)中已经有以下行: PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games"

在shell脚本中使用只读variables

是否使用只读variables的shell编程习惯是否可行或者是否有缺陷? 例如,如果我想写一些由多个使用不可变文件path的脚本文件组成的脚本,那么声明这样的path是否有意义: readonly LOGS export LOGS LOGS="/some/path" 另一个问题:将单独和繁琐的过度阅读的shell脚本代码分割成单独的文件是一个好主意吗? 非常感谢您的答复。

如何在Linux中限制用户命令

我有一个组中的用户:“演示”。 我想设置这个用户只能运行10个命令的策略,比如“vim”,“nano”,“cd”等等。 或者,将策略设置为可以访问除“ssh”和“cat”命令之外的所有命令。 谢谢

如何使用期望与可选的提示?

假设我正在为一个test.sh编写一个期望脚本,它有三个提示:prompt1,prompt2,prompt3。 我的代码是这样的: spawn test.sh expect "prompt1" send "pass1" expect "prompt2" send "pass2" expect "prompt3" send "pass3" 但是,提示2只发生一半的时间。 如果prompt2不显示,期望脚本中断。 如果不显示,我将如何编写期望代码跳过prompt2? 编辑: 修正了我的代码: /usr/bin/expect -c ' spawn ./test.sh expect { "prompt1" { send "pass1\r" exp_continue } "prompt2" { send "pass2\r" exp_continue } "prompt3" { send "pass3\r" exp_continue } } interact return “ 这样,脚本的其余部分就执行并提供输出。

即时输出redirect,在程序仍在运行时看到文件redirect输出

如果我使用这样一个命令: ./program >> a.txt& ,程序运行时间很长,程序结束后我只能看到输出。 这意味着我无法知道计算是否顺利,直到实际停止计算。 我希望能够在程序运行时读取文件中的redirect输出。 这与打开文件类似,附加到文件,然后在每次写入后closures。 如果文件只在程序结束时closures,那么在程序结束之前不能读取任何数据。 我知道的唯一的redirect类似于在程序结束时closures文件。 你可以用这个小python脚本来testing它。 语言并不重要。 任何写入标准输出的程序都有同样的问题。 l = range(0,100000) for i in l: if i%1000==0: print i for j in l: s = i + j 可以运行这个: ./python program.py >> a.txt& 然后cat a.txt ..只有在脚本完成计算后才能得到结果。

通过Bash / Shell在Crontab中启用/禁用任务

有没有办法使用Bash / Shell来启用和禁用Crontab任务? 所以当用户启动服务器1时,它将启用服务器1 Crontab线等等。 当用户停止服务器1时,服务器1 Crontab行被禁用(#)。 这是可能的和如何? 提前致谢 */1 * * * * Server 1 check */1 * * * * Server 2 check */1 * * * * Server 3 check