Questions tagged «bash»

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



4
文件不包含字符串时如何使用grep
在我的bash脚本中,如果文件中不存在某个字符串,我将尝试打印一行。 if grep -q "$user2" /etc/passwd; then echo "User does exist!!" 如果我希望该字符串存在于文件中,这就是我写的方式,但是如果在/ etc / passwd文件中找不到该用户,该如何更改它以使其显示“用户不存在”?
26 bash  ubuntu  grep 

2
Bash的“ for”循环中没有“ in foo bar ...”部分
最近,我正在查看一些使我感到困惑的代码,因为它可以正常工作,而且我没想到会这样。该代码简化为该示例 #!/bin/bash for var; do echo "$var" done 使用命令行参数运行时将其打印出来 $ ./test a b c a b c 正是这一点,(对我而言)是意料之外的。为什么var未定义就不会导致错误?使用这种做法是否被认为是“好的做法”?


3
外壳如何知道房屋?
每个外壳程序都有一个环境变量$ HOME设置(例如:)/Users/lotolo。如果我在csh之下,我可以unsetenv HOME并且仍然可以,如果我这样做,cd我将在家里。我也在bash(unset HOME)上进行了测试,这是相同的行为。那么外壳如何知道我/ other_user的家在哪里?它在哪里读取这些值? 这不是重复的,因为我的问题不是我怎么知道,而是shell如何知道HOME。并且此行为也扩展到其他用户。
25 bash  cd-command  home  tcsh  csh 

5
如何在Bash中获得http链接的最后一部分?
我有一个http链接: http://www.test.com/abc/def/efg/file.jar 我想将最后一部分file.jar保存为变量,因此输出字符串为“ file.jar”。 条件:链接可以具有不同的长度,例如: http://www.test.com/abc/def/file.jar. 我尝试过这种方式: awk -F'/' '{print $7}' ,但问题是URL的长度,因此我需要一个可用于任何URL长度的命令。
25 bash  shell-script  awk  cut 

1
bash'<(文件内容)'的语法是什么?
有关Security StackExchange的此答案使用了一种有趣的bash语法来内联生成文件: openssl req -new -x509 -nodes -newkey ec:&lt;(openssl ecparam -name secp384r1) -keyout cert.key -out cert.crt -days 3650 这一点特别有趣: &lt;(openssl ecparam -name secp384r1) 仅运行: echo &lt;(openssl ecparam -name secp384r1) 我回来 /dev/fd/63 因此,这似乎可以创建一个包含文件内容的临时文件描述符。 这个叫什么?

2
在文本编辑器中打开命令提示符-这叫什么?
在Bash中我最喜欢的技巧之一是在文本编辑器中打开命令提示符时。我通过按来执行此操作(在vi模式下)ESC v。执行此操作后,命令提示符中的所有内容现在都会显示在我选择的$ EDITOR中。然后,我可以像编辑文档一样编辑该命令,并在保存和退出该临时文件中的所有内容时执行该命令。 令我惊讶的是,我的朋友们都没有听说过此提示,因此我一直在寻找可以共享的文档。问题是我还找不到任何东西。另外,与此技巧相关的搜索字词非常常见,因此在谷歌搜索文档时无济于事。 有人知道这种技术叫什么,以便我可以实际查找吗?

9
用于在命令行中复制和粘贴文件的剪贴板吗?
在Bash中,假设我访问一个目录,然后访问另一个目录。我想将文件从第一个目录复制到第二个目录,但不指定它们的长路径名。可能吗? 我的临时解决方案是/tmp用作存储文件副本的临时位置。cp myfile /tmp当我在第一个目录中时,然后cp /tmp/myfile .当我在第二个目录中时。但是我可以检查文件是否会覆盖中的任何内容/tmp。 是否有类似于剪贴板的用于复制和粘贴文件的内容?

2
函数,别名和可执行文件中的连字符是否存在问题?
在我的测试中(在Bash和Z Shell中),我发现定义函数或别名或名称中带有连字符的可执行Shell脚本没有问题,但是我不确定在所有Shell和所有用例中都可以做到这一点。 我想这样做的原因是连字符比下划线更容易键入,因此更快捷,更流畅。 我不敢相信这不是问题的一个原因是,在某些语言(例如Ruby)中,即使连字符之间没有空格,连字符也会被解释为减号。如果在某些shell中可能会发生类似的事情,这也不会令我感到惊讶,在连字符中连字符被解释为即使没有空格也会发出信号。 我有点怀疑的另一个原因是我的文本编辑器搞砸了带有连字符的函数的语法高亮显示。(但是,当然,这很可能只是shell脚本的语法高亮显示配置中的一个错误。) 有什么理由避免连字符吗?
25 bash  shell  zsh  ksh  csh 

4
带路径包含空格和通配符的字符串的Bash脚本错误
我无法了解Bash脚本编写的基础知识。这是我到目前为止的内容: #!/bin/bash FILES="/home/john/my directory/*.txt" for f in "${FILES}" do echo "${f}" done 我要做的就是.txt在for循环中列出所有文件,以便我可以对它们进行处理。但是中的my directory星号和中的空格*.txt不能很好地播放。我试过使用带双引号和不带双引号,带或不带大括号的变量名,但仍然无法打印所有.txt文件。 这是非常基本的事情,但是我仍然在努力,因为我累了并且无法直截了当。 我究竟做错了什么? 如果我的文件没有空格或星号,我已经能够成功应用上面的脚本...我不得不尝试使用或不使用双引号和花括号来使其正常工作。但是,当我同时拥有空格和星号时,一切都变得混乱了。

4
可以在bash中定义命令吗?
例如,我可以设置: gb = cd /media/Dan/evolution ...以便每次我gb在bash中执行时,都可以cd访问该特定目录? 我在网上找到了一些东西:alias命令。但似乎无法完成以上工作。 有可能做到吗?怎么样?

1
如何重定向命令完成输出?
在命令行上,我可以使用命令后的&gt;or |运算符将命令的输出重定向或通过管道传递到文件或其他命令。我遇到了一种不太标准的情况,我想将输出重定向到文件,但是似乎没有重定向的机会: 在新航站楼, [chiliNUT ~]$ 如果我Tab没有先输入就按,我会被问到 display all 1725 possibilities? (y or n) 如果输入y,我会得到一长串不同的命令。如何将输出重定向或通过管道传输到文件?我似乎没有机会在&gt; myfile.txt任何地方打字。 使用CentOS版本6.4(最终版)。

3
在bash中测试tar文件的完整性
我有一个创建'.tar'文件的bash脚本。创建文件后,如果完整性不好,我想测试其完整性并向root用户发送电子邮件。 我知道我需要使用命令tar -tf /root/archive.tar来检查文件的完整性,但是我将如何在bash if语句中实现此功能并检查错误?
25 bash  tar 

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.