Questions tagged «bash»

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

9
如何在bash中仅打印定义的变量(shell和/或环境变量)
set如果不带参数调用bash内置命令,则将打印所有shell和环境变量,以及所有已定义的函数。这使得输出对于人类来说是无法使用的,并且难以实现grep。 如何使bash内置命令set仅打印变量而不打印函数? 还有其他仅打印shell变量而不显示功能的命令吗? 注意:bash区分shell变量和环境变量。在此处查看环境变量与bash中导出的环境变量之间的区别

2
如何计算bash中定义的数组的长度?
我是bash的新手,找不到很好的教程来回答我的问题。 array=( item1 item2 item3) for name in ${array[@]}; do echo current/total ... some other codes done 我想计算“当前”和“总计”值,因为它的预期输出为: 1/3 2/3 3/3 谢谢你的提示
57 bash  array 

1
For zsh和bash中的循环
我注意到有两种在zsh中构建循环的替代方法: for x (1 2 3); do echo $x; done for x in 1 2 3; do echo $x; done 他们都打印: 1 2 3 我的问题是,为什么要使用两种语法?是否在每个对象中都$x通过不同类型的对象进行迭代? bash是否也有类似的区别? 附录: 为什么以下工作? #!/bin/zsh a=1 b=2 c=5 d=(a b c) for x in $d; do print $x;done 但这不是吗?: #!/bin/zsh a=1 b=2 c=5 d=(a b c) …
57 bash  zsh 

5
如何获得命令别名的bash补全?
我希望在命令行别名上使用制表符补全,例如,说我定义了以下别名: alias apt-inst='sudo aptitude install' 当我按下Tab键时,是否有办法获得aptitude提供的补全?例如,当我编写“ sudo aptitude install gnumer”并单击选项卡时,aptitude将其完成为gnumeric,或者如果存在不确定性,则列出以gnumer开头的所有可用软件包。如果使用别名进行操作,则不会执行任何操作-无法完成。

1
在猫的帮助下更改文件的权限
root@system:~# less myfile -bash: /bin/less: Input/output error 根文件系统已死。但是我的猫还活着(在我的记忆中): root@system:~# cat > /tmp/somefile C^d root@system:~# 尽管他有点孤独,但他所有的朋友都不见了: root@system:~# mount -bash: /bin/mount: Input/output error root@system:~# dmesg -bash: /bin/dmesg: Input/output error root@system:~# less -bash: /bin/less: Input/output error root@system:~# chmod -bash: /bin/chmod: Input/output error 该系统仍在运行,并且可以实现其目的。我知道,对此,唯一明智的反应是关闭系统并更换根驱动器。不幸的是,这不是一种选择,因为它将花费大量时间和金钱。而且,它会杀死我的猫,这会让我伤心。 我曾想过要把他从捐赠人那里带回来的他的平常朋友。我不敢尝试将它们放进去,以防ssh尝试加载它并切断行(无论如何二进制文件都消失了)。对于我的猫表弟来说,这听起来像是一份工作: root@system:~# netcat -l 1234 > /tmp/less -bash: netcat: command …


2
sudo作为其环境的另一个用户
$ whoami admin $ sudo -S -u otheruser whoami otheruser $ sudo -S -u otheruser /bin/bash -l -c 'echo $HOME' /home/admin 为什么即使将bash作为登录shell调用也没有$HOME设置为/home/otheruser? 具体来说,/home/otheruser/.bashrc不是来源。另外,/home/otheruser/.profile也没有来源。-(/home/otheruser/.bash_profile不存在) 编辑:确切的问题实际上是https://stackoverflow.com/questions/27738224/mkvirtualenv-with-fabric-as-another-user-fails

4
破折号或其他外壳比bash更快吗?
我一直认为使用破折号代替bash的唯一好处是破折号较小,因此许多破折号实例在启动时会更快地启动。 但是我进行了一些研究,发现有些人将所有脚本迁移到破折号以希望它们运行得更快,并且我也在Ubuntu Wiki的DashAsBinSh文章中找到了这一点: 切换默认Shell的主要原因是效率。bash是适合交互使用的出色的全功能外壳;实际上,它仍然是默认的登录外壳。但是,与破折号相比,它的启动和操作相当庞大且缓慢。 如今,我在系统上的许多事情上都使用了很多bash脚本,但我的问题是我有一个特定的脚本,该脚本连续24/7运行,产生了大约200个孩子,这些孩子将我的计算机加热10° C比正常使用更多。 这是一个很大的脚本,带有很多bashism,因此将它们移植到POSIX或其他shell会非常耗时(并且POSIX对于个人使用而言并不重要),但是如果我可以减少其中的一部分,那将是值得的CPU使用率。我知道还需要考虑其他事项,例如调用外部二进制文件(如或代替的sed简单bashism)。${foo/bar}grep=~ 与破折号相比,TL; DR的启动和操作真的比bash慢吗?还有其他比bash 更有效的 Unix shell 吗?
56 bash  performance  dash 

4
su不会更改用户,但也不会响应错误
在登录时,root我想登录su到特定的普通用户。我运行su username并立即收到提示,仍然是root。没有给出错误。我知道旧的“您要尝试使用的用户不具有您当前所在文件夹的权限”问题,在这种情况下并非如此。此外,没有显示任何错误,就我所知,在遇到特定权限问题时,通常就是这种情况。 我尝试su - username了相同的效果。该命令已处理,没有看到错误,我立即收到提示。 是什么导致这种现象?我该如何解决?
56 bash  su 


8
使用set -o vi的优点
我已经看到许多开发人员使用此命令将选项设置为vi。我从来不了解这个的真正用途? 使用bash命令时,切换到vi有什么帮助?
55 bash  vim  vi 

4
bash案例声明结尾处的“ esac”是什么意思?需要吗?
我发现在bash case语句的末尾出现了多个“ esac”的示例,但是我没有找到任何有关其用法的清晰文档。手册页使用了它,甚至在单词上有一个索引(https://www.gnu.org/software/bash/manual/bashref.html#index-esac),但没有定义它的用法。是结束案例陈述,最佳实践还是纯技术的必需方法?
55 bash  case 



5
将当前日期从变量追加到文件名
我正在尝试将当前日期附加到文件名的末尾,如下所示: TheFile.log.2012-02-11 这是我到目前为止的内容: set today = 'date +%Y' mkdir -p The_Logs & find . -name The_Logs -atime -1 -type d -exec mv \{} "The_Logs_+$today" \; & 但是,我得到的只是文件的名称,它不附加任何内容。如何将当前日期附加到文件名?
55 bash  shell  rename  date 

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.