Questions tagged «bash»

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

4
如何从历史记录中获取最后N条命令?
我想查看我的计算机中最后N条命令是什么history。我以为history | tail -n 5会做到这一点,但我注意到多行命令所占的行数与其相同。 $ echo "hello how are you" $ history | tail -2 how are you" 1051 history | tail -2 所以我的问题是:我是否必须解析命令的输出才能完成此任务?

2
Bash是否具有类似Fish的自动建议和突出显示等功能?
我最近注意到Fish中有2个功能,并且想知道是否有人知道Bash中是否也有这些功能? 语法高亮 细节: 您很快就会注意到,fish在您键入时会执行语法突出显示。默认情况下,无效命令显示为红色: 命令可能因为它不存在而无效,或者引用了您无法执行的文件。该命令生效后,将以其他颜色显示 键入时,fish将在有效文件路径下划线 这告诉您存在一个以'somefi'开头的文件,这在您键入时很有用。 自我建议 细节: fish在键入时会建议命令,并在光标右侧以灰色显示该建议。 它知道路径和选项 要接受自动建议,请按向右箭头或Control-F。如果自动建议不是您想要的,请忽略它。
37 bash  shell  fish 



4
如何找到流氓别名声明?
我正在尝试查找alias已声明特定位置的位置。我搜索了我知道的所有常见地方以查找别名: 〜/ .bashrc 〜/ .bash_profile / etc / bashrc / etc / profile 没有运气。 我知道这是alias因为当我这样做时which COMMAND,我得到: alias COMMAND='/path/to/command' /path/to/command 有没有一种方法可以找到声明alias唯一知道alias名称的文件?
37 bash  alias  bashrc 


1
在shell脚本中避免“ BASH-isms”
是否存在类似于Perl :: Critic的工具,该工具将检查您的Shell脚本并指出缺陷,可移植性问题,使用无故障的非标准程序,使用折旧的程序等? 我意识到这set -o posix将禁用非POSIX用法,但这不会告诉我我想知道的事情,例如zsh索引从1开始的shell数组,从0开始的bash索引,以及ash根本不支持数组。
37 bash  shell  zsh  ash 

3
在printf中的破折号
我正在尝试使用printf在bash脚本中格式化一些漂亮的输出 例如: ----------------------- | This is some output | ----------------------- 但是我偶然发现了一些我不了解的行为。 $ printf "--" 给我错误 printf: usage: printf [-v var] format [arguments] 并 $ printf "-stuff"导致-bash: printf: -s: invalid option 因此,显然printf认为我正在尝试传递一些参数,而我却没有。 同时,完全出于偶然,我发现了以下解决方法: $ printf -- "--- this works now ----\n"给我--- this works now ---- 谁能解释这种行为?
37 bash 

2
寻找匹配的“”“时出现意外的EOF-bash脚本
我只是写了一个bash脚本,并且总是收到这个EOF错误。 所以这是我的脚本(仅适用于OS X): #!/bin/bash #DEFINITIONS BEGIN en_sq() { echo -e "Enabling smart quotes..." defaults write NSGlobalDomain NSAutomaticQuoteSubstitutionEnabled -bool true status=$(defaults read NSGlobalDomain NSAutomaticQuoteSubstitutionEnabled -bool) if [ "$status" = "1" ] then echo -e "Success! Smart quotes are now enabled." SUCCESS="TRUE" else echo -e "Sorry, an error occured. Try again." fi …
37 bash  shell 

5
在Cron脚本中使用系统日期/时间
我正在设置一个Cronjob,它将备份服务器中已有的MySQL数据库,但是我不希望它继续一遍又一遍地覆盖相同的文件。相反,我希望有一系列备份可以自动选择。例如: ## Cronjob, run May 21st, 2011: mysqldump -u username -ppasword database > /path/to/file/21-03-2011.sql ## SAME Conjob, run May 28th, 2011: mysqldump -u username -ppasword database > /path/to/file/28-03-2011.sql 等等。 有什么方法可以将系统日期和/或时间用作Cronjob中的某种变量?如果没有,您对实现相同目标有什么建议?
37 bash  terminal  cron 

2
终端自动完成:循环浏览建议
我在Ubuntu安装程序上安装了此软件,并且由于我切换到Fedora,所以我想对其进行设置,却忘记了如何做……这个想法很简单: 我不希望终端机在我加倍时向我显示建议tab,而是希望它在每次按动时循环显示所有可能的建议tab……这也可以在Vim中完成。 因此,当我键入gedit a并按tab它时,它将向我显示每个文件的第一个字母a。

1
我们是否应该在bash / shell脚本中使用UTF-8字符(如⏰)?
如果使用bash以下命令启动,则这里的简单代码可以在我的机器上按预期工作: function ⏰(){ date } ⏰ 使用此工具的其他人可能会遇到问题,还是通用? 我想知道,因为到目前为止,我从未在其他源代码中看到过类似的东西。 编辑:有无限的可能性,例如,可以通过使用表情符号来快速区分功能角色。 💣表示可以修改或删除文件的内容,a表示正在进行的工作,📃表示交互式菜单... 我想我们应该为所有这些创建一个标准,但这似乎是一个有趣的想法。 也许〜5个字符的随机行可以帮助我们了解代码的功能。(当然,我们需要学习如何阅读它们。) 更多编辑:我正在试一试。现在,如果我在编辑器(Or cat myscript.sh|grep function)中折叠所有函数,它们将看起来像这样。(geany与此处相比,我的unicode在终端中看起来要好得多。) function ⬚_1(){ function ⬚⬚_2(){ function ⬚⬚⬚_📃_D(){ function ⬚⬚⬚⬚_📃_X(){ function ⬚⬚⬚⬚⬚_📃_Y(){ function ⬚⬚⬚⬚⬚⬚_❓_P(){ function ⬚⬚⬚⬚_📃_Z(){ function ⬚⬚⬚⬚⬚_❓_U(){ function ⬚⬚⬚⬚⬚_❓_O(){ 我使用一个奇怪的缩进⬚来展示功能之间的相互关系,并使用符号📃/❓来清楚地区分它们的作用。(当然,这些不是我的真实函数名称,我只是在最后加上一个随机字母,但是即使没有它们,我们也可以清楚地看到它们之间的关系。)
36 bash  shell  unicode 

3
为什么打开文件比读取可变内容快?
在bash脚本中,我需要/proc/文件中的各种值。到目前为止,我有数十行代码直接像这样对文件进行grep: grep -oP '^MemFree: *\K[0-9]+' /proc/meminfo 为了提高效率,我将文件内容保存在一个变量中并对其进行grep化: a=$(</proc/meminfo) echo "$a" | grep -oP '^MemFree: *\K[0-9]+' 与其多次打开文件,不如将其打开一次并grep变量内容,我认为这会更快-但实际上它更慢: bash 4.4.19 $ time for i in {1..1000};do grep ^MemFree /proc/meminfo;done >/dev/null real 0m0.803s user 0m0.619s sys 0m0.232s bash 4.4.19 $ a=$(</proc/meminfo) bash 4.4.19 $ time for i in {1..1000};do echo "$a"|grep ^MemFree; done …

2
对bash脚本使用.sh还是.bash扩展名?
(有关Ubuntu-OSX兼容性以及易用性和POSIX,请参阅使用#!/ bin / sh或#!/ bin / bash) 如果我希望我的脚本使用bash shell,使用.bash扩展名是否确实会调用bash还是取决于系统配置/ 1st shebang行。如果两者都有效但又不同,哪个优先? 我不确定是否要以.sh结束我的脚本以仅指示“ shell脚本”,然后让第一行选择bash shell(例如#!/usr/bin/env bash),还是仅以.bash结尾(以及第1行设置) )。我希望bash被调用。
36 bash  shell  shebang 

1
了解`compgen`内置命令
来自help compgen: $ help compgen compgen: compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word] Display possible completions depending on the options. Intended to be used from within a shell function generating possible completions. If the optional WORD …

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.