Questions tagged «shell»

Shell是Unix的命令行界面。您可以交互地在外壳程序中键入命令,也可以编写脚本来自动执行任务。使用此标记可解决适用于/ bin / sh和大多数兼容shell(ash,bash,ksh,zsh等)的问题。对于有错误的Shell脚本,请在此处发布之前在http://shellcheck.net中对其进行检查。


1
什么时候需要双引号?
过去的建议是,将涉及a的任何表达式都用双引号括起来$VARIABLE,至少如果一个人希望它被shell解释为一个单独的项目,否则,内容中的任何空格$VARIABLE都会抛弃shell。 但是,据我了解,在最新版本的Shell中,不再总是需要使用双引号(至少出于上述目的)。例如,在bash: % FOO='bar baz' % [ $FOO = 'bar baz' ] && echo OK bash: [: too many arguments % [[ $FOO = 'bar baz' ]] && echo OK OK % touch 'bar baz' % ls $FOO ls: cannot access bar: No such file or directory ls: cannot access …

7
如何在不按Enter键的情况下运行命令?
无意中我映射Enter通过xkbset到Pointer_button2。 现在,每次我点击时,都会Enter出现一些乱码。 我想到了一种解决方法,其中涉及将其重新映射回去,但这意味着我将必须运行命令xmodmap -e "keycode 135 = Pointer_Button2"(或以外的任何其他键码Enter)。但是我无法在终端中运行此命令,而无需点击Enter。 我该怎么做? 我正在运行Ubuntu 12.04。

30
bash shell中的快速目录导航
我想经常在完全不相关的路径(例如/Project/Warnest/docs/和)之间切换~/Dropbox/Projects/ds/test/。 但是我不想一直打cd /[full-path]/。是否有任何快捷命令可以切换到以前使用的目录? 我能想到的一种解决方案是为我bash .profile的常用目录添加环境变量,并cd使用这些变量向它们添加环境变量。 但是还有其他解决方案吗?


4
Shell脚本行末的“&”号是什么意思?
sh sys-snap.sh & 什么sh啊 什么sys-snap.sh啊 为什么我要放在&行尾?谁能解释语法? 没有&脚本,直到按Ctrl+ 之前脚本都不会返回到提示C。随着&我按下Enter键,它的工作原理。
118 shell 

7
使用不等于运算符进行字符串比较
我试图检查该PHONE_TYPE变量是否包含三个有效值之一。 if [ "$PHONE_TYPE" != "NORTEL" ] || [ "$PHONE_TYPE" != "NEC" ] || [ "$PHONE_TYPE" != "CISCO" ] then echo "Phone type must be nortel,cisco or nec" exit fi 上面的代码对我不起作用,所以我尝试了一下: if [ "$PHONE_TYPE" == "NORTEL" ] || [ "$PHONE_TYPE" == "NEC" ] || [ "$PHONE_TYPE" == "CISCO" ] then …

5
我可以同时将输出重定向到日志文件和后台进程吗?
我可以同时将输出重定向到日志文件和后台进程吗? 换句话说,我可以做这样的事情吗? nohup java -jar myProgram.jar 2>&1 > output.log & 或者,这不是合法命令吗?或者,是否需要手动将其移至后台,如下所示: java -jar myProgram.jar 2>$1 > output.log jobs [CTRL-Z] bg 1
116 bash  shell  shell-script 

3
为什么“回声”比“触摸”这么快?
我正在尝试(递归地)将目录中所有xml文件的时间戳更新为当前时间。我正在使用Mac OSX 10.8.5。 在大约300,000个文件上,以下echo命令耗时10秒: for file in `find . -name "*.xml"`; do echo >> $file; done 但是,以下touch命令需要10分钟!: for file in `find . -name "*.xml"`; do touch $file; done 为什么回声比触摸此处要快得多?
116 shell  command  echo 

3
如何在远程计算机上执行本地脚本并包含参数?
我编写了一个在本地执行时可以正常运行的脚本: ./sysMole -time Aug 18 18 参数“ -time”,“ Aug”,“ 18”和“ 18”已成功传递到脚本。 现在,该脚本旨在在远程计算机上执行,但是可以从本地计算机上的本地目录执行。例: ssh root@remoteServer "bash -s" < /var/www/html/ops1/sysMole 那也很好。但是,当我尝试包括上述论点(时间为8月18日18)时,就会出现问题,例如: ssh root@remoteServer "bash -s" < /var/www/html/ops1/sysMole -time Aug 18 18 运行该脚本后,出现以下错误: bash: cannot set terminal process group (-1): Invalid argument bash: no job control in this shell 请告诉我我在做什么错,这非常令人沮丧。

3
将命令行参数传递给bash脚本
我是bash脚本编程的新手。 我想实现一个bash脚本'deploymLog',该脚本接受一个字符串参数(名称)作为输入。 [root@localhost Desktop]# ./deploymLog.sh name 这里我想通过命令行传递字符串参数(名称) 首先,我需要将当前时间戳以及此输入字符串附加Logone.txt到以下格式的日志文件中: [name]=[System time timestamp1] 怎么可能?
114 bash  shell  scripting 

13
如何在不使用箭头键的情况下重复上一个命令?
我知道我可以Up用来遍历先前的命令。运行最后一个命令只需涉及Up+ Enter。但是,由于我在中花费了大量时间,因此我在考虑购买Happy Hacking Keyboardvim。 该键盘没有箭头键,我知道如何获得这种行为的唯一方法是按Ctrl+ R并开始重复我以前的命令。 在没有箭头键的情况下,有没有一种简单的方法可以在UNIX终端中模拟Up+ Enter?


7
将stdout重定向到您没有写权限的文件
当您尝试修改文件而没有写权限时,会出现错误: > touch /tmp/foo && sudo chown root /tmp/foo > echo test > /tmp/foo zsh: permission denied: /tmp/foo Sudoing无济于事,因为它以root身份运行命令,但是shell仍会处理重定向标准输出并以您自己的方式打开文件: > sudo echo test > /tmp/foo zsh: permission denied: /tmp/foo 除了以root用户身份打开Shell并以这种方式操作文件之外,是否有一种简单的方法可以将stdout重定向到您没有写入权限的文件? > sudo su # echo test > /tmp/foo

11
如何使用现有环境变量运行cron命令?
如何使用现有环境变量运行cron命令? 如果我在shell提示下可以键入echo $ORACLE_HOME并获取路径。这是我设置的环境变量之一~/.profile。但是,似乎~/.profile没有加载fron cron脚本,因此我的脚本失败了,因为$ORACLE_HOME未设置变量。 在这个问题中,作者提到创建一个~/.cronfile配置文件,该配置文件为cron设置变量,然后他采取了一种变通方法,将所有cron命令加载到他保存在~/Cron目录中的脚本中。像~/.cronfile这样的文件听起来像是个好主意,但其余的答案似乎有点麻烦,我希望有人可以告诉我一种更简单的方法来获得相同的结果。 我想在脚本开始时我可以添加类似的内容,source ~/.profile但这似乎是多余的。 那么,如何使我的cron脚本从交互式shell配置文件中加载变量?

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.