Questions tagged «shell»

Shell是Unix的命令行界面。您可以交互地在外壳程序中键入命令,也可以编写脚本来自动执行任务。使用此标记可解决适用于/ bin / sh和大多数兼容shell(ash,bash,ksh,zsh等)的问题。对于有错误的Shell脚本,请在此处发布之前在http://shellcheck.net中对其进行检查。

6
执行前验证命令二进制文件
有什么方法可以检查您从bash脚本实际执行的操作吗? 说你的bash脚本调用几个命令(例如:tar,mail,scp,mysqldump),你愿意以确保tar是真正的,真实的tar,这是由确定root用户是该文件的父目录的所有者,也是唯一一个具有写权限而不是/tmp/surprise/tar拥有者www-data或apache2拥有者。 当然,我知道PATH环境,我很想知道是否可以从正在运行的bash脚本中另外检查一下,如果可以的话,如何检查? 示例:(伪代码) tarfile=$(which tar) isroot=$(ls -l "$tarfile") | grep "root root" #and so on...

2
POSIX Shell中函数和变量的独立命名空间
在破折号中,函数和变量似乎位于单独的命名空间中: fn(){ fn="hello world" } fn; echo "The value is $fn!" #prints: The value is hello world! fn; echo "The value is $fn!" #prints: The value is hello world! #the fn variable doesn't conflict with the fn function 这是破折号专用功能还是POSIX保证?
13 shell  posix  dash 

8
通过单词反转变量的内容
所以如果我有一个变量 VAR='10 20 30 40 50 60 70 80 90 100' 并回声 echo "$VAR" 10 20 30 40 50 60 70 80 90 100 但是,在脚本的更下方,我需要反转此变量的顺序,以便显示为类似 echo "$VAR" | <code to reverse it> 100 90 80 70 60 50 40 30 20 10 我尝试使用rev,它实际上颠倒了一切,所以它作为 echo "$VAR" | rev 001 09 08 …
13 linux  bash  shell  variable 

2
Shell脚本是否有办法知道哪个程序执行了它?
在* nix世界中,shell脚本是否可以获取有关哪个程序已执行该程序的信息? 例: /path/to/script1 /path/to/script_xyz 在这种假想的情况下,script_xyz将具有路径信息(/path/to/script1) 要么 过程PID 执行它的实体。 注意:我对不同的解决方案和方法感到好奇,我不希望这真的可行

2
如何使用特殊字符作为普通字符?
许多问题,例如“如何键入双引号char(“)?” 被问到,而我们不想以相同的答案使我们的社区混乱(输入时,\"如果没有用's "括起来,则键入它,如果没有用s 括起来'。)因此,问题就在这里。 您不能像普通字符一样在终端中键入特殊字符,例如,此命令将失败: echo Updates (11) 那么,如何在终端中像正常字符一样键入这些字符? !#$^&*?[](){}<>~;'"\|<space><tab><newline>

1
进入文件夹时设置临时b​​ash别名
有时,我喜欢在文件夹中输入时具有非常自定义的bash别名和键绑定(可以是一个用来从CLI键入许多命令的项目)。 假设当我输入“ projectAlpha /”之类的文件夹时,我期望一些自定义别名,例如: alias doTaskX='./app arg1 arg2...|filter arg1 arg2...' ... 我想到的不只是: 显示有用的消息,显示别名和常用命令 显示我的项目的一些常见的自定义键绑定 但是,一旦我离开项目的根目录,这些设置就将不可用。 今天最好的方法是什么?
13 bash  shell  alias 

3
如何删除两个回显命令的输出之间的\ n?
我有一个文本文件,每行包含一个文件名: 111_c4l5r120.png 123_c4l4r60.png 135_c4l4r180.png 147_c4l3r60.png 15_c4l1r120.png ... 我想将其转换为以下形状: 111_c4l5r120.png 111 123_c4l4r60.png 123 135_c4l4r180.png 135 147_c4l3r60.png 147 15_c4l1r120.png 15 ... 使用此代码: #!/bin/bash while IFS='' read -r line || [[ -n "$line" ]]; do echo "$line" >> output.txt echo "$line" | cut -d'_' -f 1 >> output.txt done < "$1" 但是,结果是: 111_c4l5r120.png …

1
为什么有些程序立即返回外壳程序,而另一些程序直到执行完成才返回外壳程序?
我从《现代操作系统》一书中了解到,运行命令时,外壳程序会创建一个子进程,等待该子进程直到子进程完成执行,然后再等待用户的另一条命令。对于许多类似的程序,确实确实如此gedit。直到我关闭终端才会接受命令gedit。但是,当我打开原子代码编辑器时,即使运行编辑器,shell也会立即返回,准备接受下一条命令。关闭终端不会关闭原子。这是否意味着编辑器不是作为子进程打开的?什么使得这种可能性成为可能? 跑步ps au | grep atom给 <username> 8042 0.0 0.0 15944 2264 pts/1 S+ 00:55 0:00 grep --color=auto atom

2
为什么`watch`使`ls / tmp`列出$ HOME的内容?
我正在尝试查看/tmp/目录中的文件数。为此,我认为此命令将起作用: watch sh -c 'ls /tmp/|wc -l' 但这似乎ls没有任何论据就可以工作。即,我在中~,在那里我得到的文件数代替/tmp/。我找到了一种解决方法,该方法似乎可行: watch sh -c 'ls\ /tmp/|wc -l' 但是,为什么我要逃避之间的空间ls和/tmp/?命令如何转换,watch以便将ls输出馈送到wc,但/tmp/不作为参数传递给ls?
13 shell  ls  watch 

2
如何从$ @删除位置参数
基本上,我想-inf从参数列表中“拔出”第一次出现。(其余参数将传递给其他命令。) 我拥有的脚本具有以下结构: #!/bin/sh <CODE> for POSITIONAL_PARAM in "$@" do <CODE> if [ "$POSITIONAL_PARAM" = '-inf' ] then <PLUCK $POSITIONAL_PARAM FROM $@> break fi <CODE> done <CODE> some-other-command "$@" # end of script 有什么好方法吗? 顺便说一句,即使我主要对适用于的答案感兴趣,但我/bin/sh也对仅适用于的答案感兴趣/bin/bash。


3
如何理解“ cat> file_name << blah”命令?
在以下命令中,cat接受here-doc的内容并将其重定向到名为conf的文件: cat &gt; conf &lt;&lt; EOF var1="cat" var2="dog" var3="hamster" EOF 如何在这里了解命令的顺序?bash首先是否要处理其他所有内容(here-doc部分),最后看是否要处理&gt; conf?

6
提取文件夹中包含的.gz文件
我有一个包含大约320116 .pdb.gz文件的文件夹。我要全部解压缩。如果我使用gunzip * .gz,它会给我一个错误,即参数列表过长。该文件夹约为2GB。请给我一个适当的建议。
13 shell 

4
如何用Python替换bash?
根据对此SO问题的公认答案:,Python可以替代bash。 那么我的问题是:我该如何进行无缝切换?我认为要进行这样的切换的主要事情是:启动虚拟终端时,调用一些Python Shell(虽然?),而不是像Bourne Shell这样的东西。 那有意义吗?如果是,我该怎么做?Wikipedia对常见shell的比较未列出单个Python shell:命令shell的比较
13 shell  python 

2
变量如何使用“〜”进行CD?
如何使用变量- $BASE在CD中。我尝试了以下操作,但出现错误 $ cd ~/z/repo_1_ruby_193/ 23:23:57 durrantm Castle2012 /home/durrantm/z/repo_1_ruby_193 $ BASE="~/z" 23:24:03 durrantm Castle2012 /home/durrantm/z/repo_1_ruby_193 $ cd $BASE/repo_1_ruby_193 -bash: cd: ~/z/repo_1_ruby_193: No such file or directory 23:24:25 durrantm Castle2012 /home/durrantm/z/repo_1_ruby_193

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.