Questions tagged «bash»

与其他Bourne / POSIX shell相对,GNU的Bourne Again SHell特有的问题。对于一般关于Unix shell的问题,请改用/ shell标记。

5
如何使用awk取绝对值?
如果我有以下两个日期: 2015-09-12,2015-08-13 我需要获取它们之间的天数,我将使用以下代码: awk -F'[-,]' '{print 360*($4-$1)+30*($5-$2)+($6-$3)}' 这段代码的输出-29实际上是29

1
为什么bash参数扩展在systemd服务文件中不起作用?
我正在尝试使用systemd的,EnvironmentFile并在文件中设置命令时向命令添加选项。我在单位文件中具有以下内容: ExecStart=/usr/bin/bash -c "echo ${PORT:+port is $PORT}" 当我启动服务时,它什么也没有回应。 预期的工作如下: ExecStart=/usr/bin/bash -c "echo port is $PORT" 这表示文件已正确读取。 参数替换也可以在命令行上使用: $ PORT=1234 bash -c 'echo ${PORT:+port is $PORT}' port is 1234 我想念什么?

1
“ ls”在目录中显示两个相同的文件
因此,该命令ls似乎以某种方式向我显示了目录中的两个相同文件。 $ ls -Blah /System/Library/LaunchDaemons total 32 drwxr-xr-x 266 root wheel 8.8K Jun 18 10:41 . drwxr-xr-x 79 root wheel 2.6K Mar 31 12:28 .. [redacted] -rw-r--r-- 1 root wheel 715B Jun 18 10:36 tftp.plist -rw-r--r-- 1 root wheel 715B Jun 18 10:35 tftp.plist 我可以移动,重命名,编辑等其中一个文件,但另一个似乎不存在。bash选项卡补全甚至显示相同的文件。 例如,输入以下内容,然后点击 TAB $ sudo mv …
14 bash  osx  ls 

1
与nohup一起狂欢
我想知道在nohup中运行某些东西需要花费多少时间。我知道这可行: $ time sleep 2 real 0m2.001s user 0m0.000s sys 0m0.001s 但是,为什么它不能与nohup一起使用? $ nohup time sleep 2 & [1] 29456 $ nohup: ignoring input and appending output to 'nohup.out' nohup: failed to run command 'time': No such file or directory [1]+ Exit 127 nohup time sleep 2
14 bash  time 

1
有人可以解释如何使用flock和文件描述符来锁定文件并写入锁定的文件吗?
就我这个flock工具的新手来说,我还是裸着我,据我所知,我还没有使用过文件描述符。 我有一个bash脚本,该脚本发出一个cURL请求,并将输出写入名为的文件resp.txt。我需要创建一个排他锁,以便可以写入该文件,而不必担心多个用户同时运行脚本和编辑文本文件。 这是我希望锁定文件,执行请求并写入文本文件的代码: ( flock -e 200 curl 'someurl' -H 'someHeader' > resp.txt ) 200>/home/user/ITS/resp.txt 这是解决这个问题的正确方法吗?我的实际脚本比这更长,但是当我flock在bash脚本中添加语法时,它似乎中断了。 如果有人可以解释这些文件描述符的工作原理,并让我知道我是否正确锁定了文件,那就太好了!
14 linux  bash 

4
获取一个单词的所有可能的组合,使用小写/大写字母
我想编写一个bash脚本来打印某个单词(例如harley)的所有可能的大小写排列: harley harleY harlEy harLey ... HARLey HARLEy HARLEY 我朴素的解决方案是为此特定单词编写第n个(n为len(word))嵌套的for循环: #!/bin/bash for a in {h,H}; do for b in {a,A}; do ... done done 但是,我将不得不再次为另一个单词编写脚本。 有没有更好的方法可以做到这一点?
14 bash  string 

3
从终端启动GUI时如何消除烦恼?
我更喜欢从终端窗口而不是使用图形桌面启动GUI应用程序。一个常见的烦恼是,开发人员常常没有预料到这种类型的使用,因此该应用程序会向stdout或stderr打印许多无用,含糊或无用的消息。由于在后台运行带有&的程序,会在终端上进一步造成混乱,从而生成作业创建和终止的报告。 这些将接受命令行参数并处理自动完成的问题的解决方法是什么? 相关:https : //stackoverflow.com/questions/7131670/make-bash-alias-that-takes-parameter

1
可以在bash中使用多个here-docs吗?
可以使用多个here-docs在bash中为命令提供输入吗? $ cat <<<foo <<<bar bar $ cat <<EOF1 <<EOF2 > foo > EOF1 > bar > EOF2 bar 显然,在两种情况下,第二个here-doc都用作stdin,并替换了第一个引用。是使用echos 的解决方案吗? $ cat <(echo -n foo) <(echo bar) foobar 另外,由于某种原因,使用组合对我不起作用。为什么会这样呢? $ cat <<<foo <(echo bar) bar $ cat <(echo -n foo) <<<bar foo

5
移动每个非目录文件
我有一个要清除的目录,其中包含文件和子目录。我想做的很简单:将所有文件移到另一个目录,但将所有子目录保留不变。 我在想类似的东西: mv [*_but_no_dirs] ./other_directory 似乎应该有一种使用通配符*和正则表达式的简单方法... 有人有想法吗?
14 bash  directory  wildcards  mv 

1
为什么bash用重音和撇号来封装语法错误?
当bash报告语法错误时,它会封装带有严重口音和撇号的引发语法错误的文本,如下所示:`...'。知道为什么吗? 这是一个例子: $ bash -c "echo error()" bash: -c: line 0: syntax error near unexpected token `(' bash: -c: line 0: `echo error()' 这不是很常见。但是,我很好奇,这不是一个真正的问题。 编辑:这像这样的晦涩的消息变得古怪: -bash: unexpected EOF while looking for matching ``'
14 bash 

1
如何从标准输出中剥离颜色代码并传递到文件和标准输出
我有一个混合使用printf某些程序的程序,tput我想将输出通过管道输出到stdout以及一个文件。我宁愿使用它,sed因为我不想对脚本有任何不必要的依赖。这是到目前为止我得到的。 printf "\n$(tput setaf 6)| $(tput sgr0)$(tput setaf 7)Sourcing files...\033[m\n" | tee install.log 唯一的问题是我的日志文件正在获取所有颜色输出... ^[[36m| ^[(B^[[m^[[37mSourcing files...^[[m 我希望它只有 | Sourcing files...

3
如何重定向任何命令的输出?
我正在尝试编写一个简单的脚本来监视我的网络状态,而没有所有ping的输出: ping -q -c 1 google.com > /dev/null && echo online || echo offline 问题是,当我未连接时,我的输出中仍然出现错误消息: ping: unknown host google.com offline 如何将错误消息排除在输出之外?
14 bash  ping  output 

2
快速测试所有键盘按键的脚本
我需要检查一些笔记本电脑的键盘按键,以便尽快提高速度。 对于该特定任务,我什么都没找到,所以我的想法是一个脚本,该脚本可以读取已按下的键并知道所有键盘键,因此我可以快速对其进行重击并报告尚未按下的键。我想我可以使用showkeyor或xevgrepping输出来实现: xev | grep keysym 样本输出: state 0x10, keycode 46 (keysym 0x6c, l), same_screen YES, state 0x10, keycode 33 (keysym 0x70, p), same_screen YES, state 0x11, keycode 50 (keysym 0xffe1, Shift_L), same_screen YES, state 0x10, keycode 51 (keysym 0x5d, bracketright), same_screen YES, state 0x10, keycode 36 (keysym 0xff0d, Return), …
14 bash  grep  awk  keyboard  stdout 


3
使用“ -o errtrace”(即,设置-E)捕获命令替换中的错误
根据此参考手册: -E(也为-o errtrace) 如果设置,则ERR函数上的任何陷阱都将被Shell函数,命令替换以及在子Shell环境中执行的命令继承。在这种情况下,通常不会继承ERR陷阱。 但是,我必须错误地解​​释它,因为以下操作不起作用: #!/usr/bin/env bash # -*- bash -*- set -e -o pipefail -o errtrace -o functrace function boom { echo "err status: $?" exit $? } trap boom ERR echo $( made up name ) echo " ! should not be reached ! " 我已经知道简单的赋值,my_var=$(made_up_name)将使用set -e(即errexit)退出脚本。 是 …

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.