Questions tagged «shell»

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

3
每X秒执行一次命令
我希望每10秒执行一次命令,并使其在后台执行(因此消除了watch?)。所有答案均显示如下内容,但这将在11到14秒内执行。如何做到这一点? while true; do # perform command that takes between 1 and 4 seconds sleep 10 done

2
如何将所有输出发送到POSIX Shell中的`logger`?
我想在.xprofile使用中分别记录标准输出和标准错误logger。在Bash中,我认为这看起来像这样: exec 1> >(logger --priority user.notice --tag $(basename $0)) \ 2> >(logger --priority user.error --tag $(basename $0)) 我将如何以POSIX /bin/sh兼容的方式进行操作?
10 shell  pipe  posix 

7
我怎样才能使脚本数到五?
我试图制作一个非常简单的bash脚本,以列出375和3500之间的所有5的倍数(375、380、385 ...)。我尝试但没有起作用的一件事是: for i in {375..3500} do echo $i (($i += 5)) done 一段时间后,我放弃了,并在15秒钟内用BASIC编写了此代码: 10 count = 375 20 print count 30 count = count+5 40 if count < 3500 then goto 20 如何在bash脚本中制作BASIC程序?
10 bash  shell  scripting 

2
Shell名称空间
有没有一种方法可以source将shell脚本导入命名空间,最好是bash shell脚本,但是如果其他shell具有此功能而bash没有,我会研究它们。 我的意思是,例如,“为所有已定义的符号添加前缀,以免它们与已定义的符号(变量名,函数名,别名)冲突”之类的东西,或防止名称冲突的任何其他功能。 如果有一个可以在source时间上命名空间(NodeJS样式)的解决方案,那将是最好的。 示例代码: $ echo 'hi(){ echo Hello, world; }' > english.sh $ echo 'hi(){ echo Ahoj, světe; }' > czech.sh $ . english.sh $ hi #=> Hello, world $ . czech.sh #bash doesn't even warn me that `hi` is being overwritten here $ hi #=> Ahoj, světe …
10 shell 

1
用全局模式定义的变量替换Bash
以下示例说明了该问题。为什么FILENAME在使用替换时回显并被视为图案时打印正确? #!/bin/bash FILEPATH_WITH_GLOB="/home/user/file_*" FILENAME=$(basename "$FILEPATH_WITH_GLOB") echo $FILENAME #file_1234 echo ${FILENAME:1:5} #ile_* <---why is this not ile_1

6
删除名称中带有空格的文件
我正在尝试删除名称中带有空格的所有文件。我正在使用以下命令。但这给我一个错误 命令: ls | egrep '. ' | xargs rm 在这里,如果我仅使用ls | egrep '. '命令,它将为我提供所有文件名,文件名中带有空格。但是,当我尝试将输出传递给rm时,所有空格(前导或尾随)都会被删除。因此我的命令未正确执行。 关于如何删除名称中至少有一个空格的文件的任何指针?
10 shell  quoting  rm  xargs 

1
在某些命令上跟踪某些参数
假设我有一个命令git branch(总是有几个单词)。 我要跟踪的是何时使用参数执行此命令。例如,如果我执行命令时git branch develop没有错误,我想保存develop在文件中。 我试图覆盖我的git命令.bash_profile,如下所示: git () { if [ $# -eq 3 ] then git $@ echo $2 > /path/tacked_parameters.txt else git $@ fi } 但是似乎效果不佳。有什么办法吗?
10 bash  shell  function 

5
更改cronjob的时区
我有一个cronjob,它每天在UTC时间的9:00 AM执行。我在GMT + 1上,因此它在当地时间10:00 AM执行。当时区发生更改(到夏令时,DST)时,cronjob仍在UTC-Time的9:00 AM执行,但在当地时间的11:00 AM执行。但是我希望它始终在10:00执行,无论夏天与否。我怎么做?
10 shell  cron  timezone 

3
用“读取”将脚本管道化为bash
我需要通过管道它运行一个脚本bash用wget(而不是直接使用bash运行它)。 $ wget -O - http://example.com/my-script.sh | bash 它不起作用,因为我的脚本中包含read语句。由于某些原因,在进行bash传输时这些命令不起作用: # Piping to bash works in general $ echo 'hi' hi $ echo "echo 'hi'" | bash hi # `read` works directly $ read -p "input: " var input: <prompt> # But not when piping - returns immediately $ echo 'read …
10 bash  shell  pipe  read 

1
在没有劫持提示的情况下从后台进程中回显进度
考虑简单的脚本hello: #!/bin/bash echo 'hello world!' 现在从bash开始,如果我尝试在后台运行此命令: $ hello & [1] 12345 $ hello world! █ <--- prompt is stuck here until I hit enter! [1]+ Done $ █ <--- prompt back to normal 我宁愿看到: $ hello & [1] 12345 [1]+ hello world! [1]+ Done $ █ <--- prompt normal the …

1
Jenkins不使用系统的语言环境
在詹金斯,我有一个有趣的举动。 Jenkins的shell不使用我的系统语言环境。 Jenkins jenkins在我的系统上以用户身份运行。 jenkins通过SSH 登录: locale 显示: LANG = zh_CN.UTF-8 LANGUAGE = zh_CN:zh- CN LC_CTYPE =“ zh_CN.UTF-8” 等。 env显示LANG和LANGUAGE变量: LANG = zh_CN.UTF-8 LANGUAGE = zh_CN:zh id 显示用户的ID: uid = 1008(jenkins)gid = ... 将以上命令输入到jenkins作业外壳: locale 显示: LANG = LANGUAGE = LC_CTYPE =“ POSIX” 等... env并没有表现出LANG与LANGUAGE变数 id 显示用户的ID(如预期): uid = 1008(jenkins)gid …

4
正则表达式使用\\与\
为什么 grep e\\.g\\. <<< "this is an e.g. wow" 和 grep e\.g\. <<< "this is an e.g. wow" 做同样的事情? 如果添加第三个斜杠,则结果也相同。但是,一旦我添加了第四个斜杠,它将不再起作用。这与旧的考试题有关。它询问带有两个反斜杠的那个是否可以输出带有“ eg”的行,我本来以为这行不行,但是我尝试确定并且确实如此。有什么解释?

2
为什么源给出错误“无法执行二进制文件”
我有一个确实会初始化tmux会话然后创建一些窗口的小文件。经过一些调试和调整后,一切正常,直到我将文本文件(使用tmux命令)从重命名spam为xset: $ source xset bash: source: /usr/bin/xset: cannot execute binary file 我现在已将文件重命名回去并source spam可以再次使用,但是我想知道为什么会这样。该文件位于我的主目录中,而不是/usr/bin。
10 bash  shell 

4
为什么即使$ 1不是1,也总是选择'if [$ 1 =“ 1”]'分支?
我有一个名为“ teleport.sh”的shell脚本,如下所示: if [ $1="1" ]; then shift mv "$@" ~/lab/Sun elif [ $1="2" ]; then shift mv "$@" ~/lab/Moon elif [ $1="3" ]; then shift mv "$@" ~/lab/Earth fi 当我执行时: sh teleport.sh 2 testfile 这testfile被移到了~/lab/Sun目录,这让我很困惑,因为我没有将1或1传递给该脚本。 怎么了
10 bash  shell  test 

4
在Unix和Windows之间编写文本消息
是否可以在同一局域网的两个用户之间发送文本消息,但是第一个运行带有cmd的Windows,第二个运行Linux / Unix? 我不是在寻找即时消息服务。我想在Linux shell中输入类似 write user@192.168.x.x:port message 使Windows用户可以在其cmd窗口中阅读文本message; Windows用户应该可以使用其他命令进行回复。可能吗? 我已经阅读了有关Windows msg命令的信息,但是它不适用于所有版本的OS。还有别的事吗? 我要使用Linux Shell和Windows cmd代替PuTTY。

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.