Questions tagged «bash»

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

4
在Linux中哪里找到.bashrc文件?
我找不到我的.bash_login和.bash_profile root@linux:~# locate .bash* /etc/bash.bashrc /etc/skel/.bashrc /etc/skel/.bashrc.original /home/noroot/.bashrc /home/noroot/.bashrc.original /root/.bash_history /root/.bashrc /usr/share/base-files/dot.bashrc /usr/share/doc/adduser/examples/adduser.local.conf.examples/bash.bashrc /usr/share/doc/adduser/examples/adduser.local.conf.examples/skel/dot.bashrc /usr/share/kali-defaults/.bashrc root@linux:~# 每个用户是否总是只有一个.bashrc和.bash_profile文件? 而且,是否始终在/ home /“用户名”目录中找到.bashrc和.bash_profile?

8
awk或sed仅小写/大写字符串中的一个字符?
有没有办法如何在一个字符串中仅大写/小写一个字符? 输入示例: syslog_apr_24_30 syslog_mar_01_17 所需的输出: syslog_Apr_24_30 syslog_Mar_01_17 请注意本月初的大写字母。 我已经尝试过,awk但是我还不足以使其正常运行。
13 bash  sed  awk 

1
Python脚本启动时如何激活Virtualenv?
我想计划在特定日期使用cron运行python脚本,问题是example.py要正常工作example-env必须被激活,有什么方法可以example.py在cron执行时激活它自己的virtualenv吗? 如果没有,那么我是否必须创建一个bash.sh包含以下内容的bash脚本: #!/usr/bin/env bash workon example-env python2 example.py 然后安排在特定日期由cron执行?还是我需要做其他事情? 两种方式对我都很好,我只想知道正确的方法。也许我更喜欢bash脚本方法,因为我有很多要运行的Python文件,因此如果我将它们全部放入bash脚本中并进行调度,这对我来说似乎比较容易,但是我仍然不知道正确的方法,因此我正在寻求建议。

2
子外壳中的嵌套引号
说我必须使用引号来封装subshel​​l输出,例如: DATA="$(cat file.hex | xxd -r)" 但是我需要嵌套这样的东西: DATA="$(cat file.hex | xxd -r | tr -d \"$(cat trim.txt)\")" 我不能使用单引号,因为它们不会展开其中的变量。转义引号不起作用,因为它们仅被视为被动文本。 我该如何处理?

7
字符和数字的所有可能组合
因此,我想生成所有可能组成5个字符串的大小写字符和数字的所有可能组合。 可能性:a..z,A..Z和0..9。 在bash中是否有任何优雅的方法可以做到这一点?
13 bash 

2
为什么在执行bash脚本时(仅在采购它时)不能加载模块?
我正在使用模块来控制系统上的软件包,并且已python/2.7.2作为模块安装。我有一个简单的python可执行文件python_exe.py,我将从一个简单的“ driving”脚本中调用它runit.sh。runit.sh脚本看起来像: #!/bin/bash module load python/2.7.2 arg1=myarg1 arg2=15 arg3=$5 /path/to/python_exe.py -a $arg1 -b $arg2 -c $arg3 但是,当我刚运行时./runit.sh,它向我出售“模块:找不到命令”。source runit.sh但是,当我使用时,它将正确加载模块。为什么是这样?
13 bash  shell  python 

5
在bash和鱼之间共享环境变量
bash和fish脚本不兼容,但是我想拥有一个文件,该文件定义了一些由bash和fish初始化的环境变量。 我建议的解决方案是定义一个~/.env文件,其中包含以下环境变量列表: PATH="$HOME/bin:$PATH" FOO="bar" 然后,我可以仅以bash形式提供它,并制作一个脚本,将其转换为fish格式并以fish形式提供。 我当时想可能有比这更好的解决方案,所以我想寻求一种更好的方法来在bash鱼之间共享环境变量。 注意:我正在使用OSX。 这是一个示例.env文件,我希望fish和bash都使用荒谬的fish语法处理(假设〜/ bin和〜/ bin2是空目录): setenv _PATH "$PATH" setenv PATH "$HOME/bin" setenv PATH "$PATH:$HOME/bin2" setenv PATH "$PATH:$_PATH"

1
在for循环中恢复暂停的进程
我正在bash中运行: for i in ull-*.pbm; do convert $i tmp2/$i.pdf ; done 我Ctrl-Z在运行中,然后是fg其作业ID。但是其余的迭代不会继续完成。我想知道为什么?
13 bash 

3
控制哪个进程被Ctrl + C取消
我有一张能引导至Linux并运行小型Bash脚本的现场CD。该脚本搜索并运行第二个程序(通常是已编译的C ++二进制文件)。 您应该可以通过按Ctrl+ 中止第二个程序C。什么应该发生的是,第二个节目暂停,和bash脚本运行继续清理。什么实际发生的是主应用程序和bash脚本都终止。这是一个问题。 因此,我使用trap内置函数告诉Bash忽略SIGINT。现在Ctrl+ C终止C ++应用程序,但是Bash继续运行。大。 哦,是的...有时“第二个应用程序”是另一个Bash脚本。在那种情况下,Ctrl+ C现在什么也不做。 显然,我对这些工作原理的理解是错误的……当用户按下Ctrl+ 时,如何控制哪个进程获取SIGINT C?我只想将这个信号引导到一个特定的过程。
13 bash  signals 

3
格式化ps的cputime输出
我正在尝试编写一个脚本,该脚本可以在一定时间间隔内监视进程的CPU使用情况(以创建图形)。 到目前为止,这是我正在使用的命令 ps -p $PROCID -o cputime,etimes 我唯一关心的是cputime的输出似乎是[dd]hh:mm(或类似的东西,现在已经不记得了) 有没有一种方法可以以秒为单位格式化cputime,就像etime-> etimes以秒为单位获取经过时间? 编辑:这是我当前收到的输出 2-03:01:33 2653793 我希望第一个参数的格式设置为秒,而不是day-hours:minutes:seconds。

1
如何在bash中同步终端会话命令历史记录?
~/.bash_history在终端会话中,我尝试搜索我最近的命令,但是它们不存在。我猜这是因为我有多个终端会话打开。 有没有一种方法可以将当前终端会话的命令历史记录同步(即,同步推送或同步写出)到bash_history文件中(而无需关闭会话并丢失该环境)? (这在思想上与sync命令如何在某些系统上存储文件系统修改非常相似。) 我想我可以设置bash来保留多个会话历史记录,但是当您在新机器上工作并且意外忘记以可能想要的方式设置bash时,推送当前历史记录缓冲区的功能仍然会很有用。

2
多个流程之间的沟通
我有一个bash脚本,该脚本将manager()函数作为x时间的单独进程运行。如何从脚本内部将消息转发到所有manager()进程? 我已经读过有关匿名管道的信息,但是我不知道如何与它共享消息。.我尝试使用命名管道进行操作,但是看来我必须为每个进程创建一个单独的命名管道吗? 最优雅的方法是什么? 到目前为止,这是我的代码: #!/bin/bash manager () { while : do echo "read what has been passed to \$line" done } x=1 while [ $x -le 5 ] do manager x & x=$(( $x + 1 )) done while : do while read line do echo "What has been passed …

2
检查bash / shell脚本依赖性
是否有方法/命令来检查bash脚本的依赖性?换句话说,对以下问题的回答:用户应安装哪些库来运行脚本? 我可以通过阅读脚本并检查其调用的其他库/命令来手动执行此操作,但这对于长脚本来说并不明显。

4
在bash中以新行将数组的每个元素打印到文件中
我正在尝试将数组的内容放入文件中,并将数组的每个元素放在文件的新行中。 IFS=$'\n' echo "${mtches[@]}" > sample1.txt mtches的内容是“ qwe”和“ asd”。但是sample1.txt文件包含qwe asd在一行中。为什么不将IFS的价值纳入考虑?
13 bash 

3
可靠的后台进程返回码
让我们假设以下bash代码: foo > logfile 2>&1 & foo_pid=$! while ps -p$foo_pid do ping -c 1 localhost done wait $foo_pid if [[ $? == 0 ]] then echo "foo success" fi 是否可以安全地假定$?确实包含的返回码foo而不包含的返回码ping?如果该问题的答案是:“您不能假设这一点。” 那么,如何修改这段代码以确保$?始终包含返回代码foo?

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.