Questions tagged «bash»

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


1
每当我输入错误的命令时,我的终端就会尝试在后台运行该命令
我的终端开始发生奇怪的事情。每当我键入错误的命令时,它都会尝试在后台运行该命令。 hegeek@colinux: ~# l [9]+ Stopped l thegeek@colinux: ~# fdsl [10]+ Stopped fdsl 可能是什么问题? 编辑: 重新启动系统后,问题已解决。但是我仍然很好奇是什么引起了这个问题。我认为它必须与command_not_found_handle外壳功能有关。在尝试查找命令时,它做了一些奇怪的事情。

1
for循环在bash中不起作用
我有下面的代码来替换多个文件中的某些strigns,但是for循环正在检查第一个文件,而不执行perl脚本。下面是我的代码 if [ -f zebu.work.post_opt/ZEBU_CTO_FT_MOD.v ] then for file in $(./zebu.work.post_opt/ZEBU_CTO_FT_MOD*); do perl -i -p -e 's/input/inout/g' $file; perl -i -p -e 's/output/inout/g' $file; perl -i -p -e 's/wire.*\n/tran\(i0,\ o\);/g' $file; perl -i -p -e 's/assign.*\n//g' $file; done fi
7 bash  for 

1
[[expr1 ||之间的差异 expr2]]和[[expr1]] || [[expr2]]
考虑两个条件表达式expr1和expr2,例如$i -eq $j和$k -eq $l。我们可以用bash多种方式编写。这有两种可能性 [[ expr1 || expr2 ]] [[ expr1 ]] || [[ expr2 ]] 我相当确定我在这里看到了推荐使用第二种方法的建议,但是我找不到证据来支持这一点。 这是一个示例脚本,似乎证明没有区别: for i in 0 1 do for j in 0 1 do for k in 0 1 do for l in 0 1 do if [[ $i -eq $j || $k …
7 bash 


3
什么是`。/ path / command`可以吗?(点后的空格,绝对路径)
从本Bash完成指南中,我们了解到,要使Bash执行自动补全,必须执行一项操作. /etc/etc/bash_completion.d/foobar(注意后面的空格.),Bash才能完成工作。 $ /etc/bash_completion.d/ssh bash: /etc/bash_completion.d/ssh: Permission denied $ . /etc/bash_completion.d/ssh $ ls -l /etc/bash_completion.d | grep ssh -rw-r--r-- 1 root root 297 Jan 28 18:04 ssh .该source命令是快捷方式吗?如果没有,那是什么?这是不可能的谷歌,man source回报什么,apropos source并info source给这么多不相关的信息,我不能告诉我们,如果有什么我要找的是在那里。我怎么可能甚至开始使用RTFM自己找到该问题的答案?
7 bash 

2
如何对宽度最小的项目列表进行分栏?
我该如何将未分类的输入分成列ls? ls 正在创建每行最小宽度的优化表,例如: ls 2 dsao file with space with 5 e g wsdl-rubo-6cb0f1a9086e80c d file leading space 但是,如果我将输出输入column(例如,一行中的每个文件),它会将每一行填充相同的宽度,因此适合屏幕宽度: for i in *; do echo "$i"; done | column 2 file with space 5 g d leading space dsao with e wsdl-rubo-6cb0f1a9086e80c file (我在这里仅使用文件列表来生成与示例相同的输出,我正在寻找这样一种解决方案来最终对其他内容进行列化。) 如何对col-width可变的任何输出进行整理?
7 bash  ls 

5
如何以减少的特权运行脚本的一部分?
我有以下问题:在运行Postgresql的每台计算机上,都有一个特殊的用户postgres。该用户具有对数据库服务器的管理访问权限。 现在,我想编写一个Bash脚本,该脚本以psql用户postgres的身份执行数据库命令(psql应以postgres用户的身份执行,而不是脚本)。到目前为止,这将不是问题:我可以以用户postgres的身份运行脚本。 但是,我想将psql的输出写入到postgres没有写访问权的目录中的文件中。 我怎样才能做到这一点? 我考虑过在脚本本身中更改EUID,但是: 我找不到在Bash脚本中更改EUID的方法 使用类似方法时,如何更改EUID psql -U postgres -c "<command>" > file?

2
Bash:如何将每个命令的输出重定向到文件?
我经常在这样的源代码仓库上运行搜索: ack -l "foo bar" . 搜索可能需要10到60秒,并产生如下输出: path/to/file1 path/to/file2 path/to/file3 我经常使用这个别名来打开在vim中找到的所有文件: alias go='gvim `fc -s` -p' 这样可以正常fc -s运行,但是会重新运行上一个命令,这可能需要几秒钟或几分钟。 将这样的内容附加到我以交互方式运行的每个命令中将非常有用: | tee /tmp/lastCommand to all commands. 这样,如果输出显示自己有用,那么我可以对它做其他事情。 用法示例: 类型: find . -type f 执行以下命令: find . -type f | tee $lastOutLocation # Where lastOutputLocation=/tmp/lastOutput 然后,您可以使用类似以下内容的方法来过滤前面的命令: lastOut | grep "SomeString" # Where …
5 bash  alias 

4
问题理解.sh文件中的'hash'命令
所以我想在Linux机器上安装Etherpad lite。如果我尝试运行它,则会收到错误消息: “请安装node.js(http://nodejs.org)” 该命令which node为我提供了通往节点js的正确路径。因此,我进入了Etherpad Lite的.sh文件,发现了这一点: #Is node installed? hash node > /dev/null 2>&1 || { echo "Please install node.js ( http://nodejs.org )" >&2 exit 1 } 我想这意味着:检查节点->如果没有可用的打印行并退出。但是这段代码到底是做什么的?哈希做什么?所有这些&和>什么? 谁能向我解释这三行内容,我们将不胜感激?

2
循环插入Oracle表
要求:在目录中的一台服务器中,存在多个文件。我需要读取文件名并填充到Oracle表中。 我已经写了这样的脚本,但是它不起作用: #!/bin/bash names = find /home/devuser -name 'BI*' sqlplus -s schema_name/passwd << EOF for name in {names[@]} do insert into table1(file_name,status) values('$name','N'); done commit; exit 苦恼DO INVALID IDENTIFIER。

1
向用户重击Bash。最好使用相同或单独的脚本?
我正在研究需要以root身份启动的Linux Bash脚本。在脚本的末尾,它将生成软件包列表。这需要以用户身份运行。然后它将移动软件包,这需要再次以root用户身份运行。我已经设置了sudo,但是想要保持脚本尽可能通用。 我在第一个脚本中尝试了以下内容以及它的一些细微变化,以从根用户切换到用户。 su -c - "$USER" "export PKGDEST=/tmp/test/AUR/" su -c - "$USER" "pacaur --noconfirm --noedit -cm" "$(< /tmp/test/aur)" 第二行无法正常运行,导致不同的错误,具体取决于报价的组合和位置。在读取文件/ tmp / test / aur ::未指定目标之后,如上所示在第一个脚本中运行这些行会产生以下错误(使用-h获得帮助)。我的喜好是使单个脚本方法正常工作。 Google等表示root,用户,bash中的root不好,因此尝试将其分为3部分: 第一个脚本以root身份运行。问题集中在这里,无法启动第二个问题。 第二个脚本以用户身份运行,并以root身份启动第三个脚本:sudo / bin / bash“ $ L” /copyaur.sh 第三个脚本copyaur.sh运行,可以正常移动软件包,但是由于调用了新的shell而没有显示为在终端中运行? 在测试过程中,以下用户终端中以su身份运行。最好在脚本中使用$ USER var。 在终端中以su身份显示,然后返回su - $USER,然后 ls在home中列出我的普通用户名[dom]的内容。 [dom@arch testing]$ echo $USER dom [root@arch …

2
处理重复的程序名称bash
我想知道是否$PATH 级联条目。在这里,你们所有人都需要与我一起迈出信心的飞跃,但事情确实如此。 假设我们有一个Java可执行文件,/usr/bin/java但此版本非常旧且过时。不幸的是,我们没有su访问权限,所以我们不能仅仅替换它。但是,我们可以在本地下载JRE / JDK的当前版本,并指向更新的版本。我的问题是,当我们有两个或多个具有相同名称但在两个或多个不同位置的可执行文件时,bash如何处理?当我们输入java控制台时,bash是否会以某种方式选择执行哪一个?假设我们/usr/bin还有许多其他可执行文件,那么$PATH看起来像这样的东西如何正常工作? 理想情况下,键入时java -version应该看到: java version "1.8.0_45" Java(TM) SE Runtime Environment (build 1.8.0_45-b14) Java HotSpot(TM) 64-Bit Server VM (build 25.45-b02, mixed mode) 代替 java version "1.7.0_45" Java(TM) SE Runtime Environment (build 1.7.0_45-b18) Java HotSpot(TM) Client VM(build 24.45-b08, mixed mode, sharing) 我确定这个问题已经被问过了,并且与它相关联。我在SE,SO和一些论坛上闲逛,但没有发现任何结论。

3
在外壳上对列表执行操作
我有要卸载的软件包列表。卸载程序pkg_deinstall不会将软件包列表作为要卸载的参数。我如何从列表中卸载(如foreach循环)? [root@fbsd01 /usr/ports/editors/vim]# pkg_info | grep proto| sed 's/\([a-z0-9]*\).*/\1/' bigreqsproto compositeproto damageproto fixesproto fontsproto inputproto kbproto randrproto renderproto xcb xcmiscproto xextproto xf86bigfontproto xineramaproto 我认为类似的命令会起作用,但是我必须将列表作为参数而不是流传递: pkg_info | grep proto| sed 's/\([a-z0-9]*\).*/\1/' | head -n 1 pkg_deinstall 如果您可以给我一些有关使用哪种程序和语法的线索,那将很有帮助。我知道,由于它是独一无二的,您可能很难找到确切的答案。如果我的问题太复杂,也许有人可以告诉我如何对ls目录中的文件执行操作。
3 bash  shell  freebsd 

2
两两压缩文件
我有一个包含800个文件的目录,如下所示: file1.png file1@2x.png file2.png file2@2x.png file3.png file3@2x.png ... etc 我需要像这样创建zip文件 file1.zip (containing file1.png and file1@2x.png) file2.zip (containing file2.png and file2@2x.png) file3.zip (containing file3.png and file3@2x.png) 有什么我可以用来执行的魔术命令吗?

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.