Questions tagged «shell»

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

9
搜索带有我刚刚输入的前缀的上一个命令
我们可以使用向上和向下箭头在命令历史记录中导航。 在某些IDE(例如Matlab)中,如果我们输入一些内容然后按箭头键,则仅在以输入内容开头的历史记录命令之间滚动。那真的很方便,但是在Shell终端中,这是行不通的。 有什么方法可以在Shell终端中获得类似的功能?还有其他提高终端使用效率的技巧吗?

3
如何在多个命令上运行时间并将时间输出写入文件?
我想运行time命令来测量几个命令的时间。 我想做的是: 测量所有这些加在一起的运行时间 将time输出写入文件 将STDERR我要测量的命令写到STDERR 我确实不希望做的是 将几个命令写到一个单独的脚本中(为什么?因为所有这些已经是我以编程方式生成的脚本,因此创建另一个临时脚本会比我想要的更混乱) 到目前为止我尝试过的是: /usr/bin/time --output=outtime -p echo "a"; echo "b"; 不起作用,time仅在第一个上运行。 /usr/bin/time --output=outtime -p ( echo "a"; echo "b"; ) 不起作用,(是意外令牌。 /usr/bin/time --output=outtime -p { echo "a"; echo "b"; } 不起作用,“没有这样的文件或目录”。 /usr/bin/time --output=outtime -p ' echo "a"; echo "b";' 不起作用,“没有这样的文件或目录”。 time ( echo "a"; echo …


4
在bash中,是否可以在for循环的循环控制中使用整数变量?
我有以下bash脚本: #!/bin/bash upperlim=10 for i in {0..10} do echo $i done for i in {0..$upperlim} do echo $i done 第一个for循环(在循环控制中没有变量upperlim)可以正常工作,但是第二个for循环(在循环控制中具有变量upperlim)不能正常工作。有什么方法可以修改第二个for循环以使其起作用?谢谢你的时间。
65 bash  shell  shell-script  for 

4
目录中文件类型的递归统计?
我做了一个网站抓取一个转换项目。我想对其中的文件类型进行一些统计-例如400个.html文件,100个.gif等。执行此操作的简单方法是什么?它必须是递归的。 编辑:使用maxschelpzig发布的脚本,由于我抓取的网站的体系结构,我遇到了一些问题。有些文件的名称*.php?blah=blah&foo=bar带有各种参数,因此将它们全部视为唯一文件。因此*.php*,可以这么说,解决方案需要考虑为同一类型。
65 shell  filenames 

6
可移植外壳编程资源
便携式外壳编程有哪些资源?最终的答案是在所有目标平台上进行测试,但这几乎不可行。 该POSIX /统一UNIX规范是一个开始,但它会告诉你也不支持每个实现的水平是什么,也没有什么共同的扩展存在。您可以阅读每个实现的文档,但这非常耗时,而且不完全准确。 在我看来,一种理想的格式应该是某种POSIX规范的社区注释版本,其中每个功能都由其在不同实现中的支持级别进行注释。有这样的事吗?还是还有其他有用的资源? 例如,有Sven Mascheck的shell可移植性页面,但这仅涉及语法元素和一些内置插件,并且仅涵盖旧的shell。我正在寻找更全面的资源。

5
如何在shell中转义报价?
我在转义bash字符时遇到麻烦。我想在其他用户下运行命令时转义单引号和双引号。出于这个问题的目的,假设我想在屏幕上回显以下内容: 'single quote phrase' "double quote phrase" 如果还需要切换到其他用户,该如何转义所有特殊字符: sudo su USER -c "echo \"'single quote phrase' \"double quote phrase\"\"" 当然,这不会产生正确的结果。

7
如何从cat输出中读取第一行和最后一行?
我有文本文件。任务-从文件之后获取第一行和最后一行 $ cat file | grep -E "1|2|3|4" | commandtoprint $ cat file 1 2 3 4 5 需要没有cat输出(仅1和5)的此功能。 ~$ cat file | tee >(head -n 1) >(wc -l) 1 2 3 4 5 5 1 也许awk和更短的解决方案存在...
64 bash  shell  sed  awk  grep 

8
解决“ MV:参数列表过长”?
我的文件夹中有超过一百万个文件需要排序,但是我却无能为力,因为一直mv输出此消息 -bash: /bin/mv: Argument list too long 我正在使用此命令移动无扩展名的文件: mv -- !(*.jpg|*.png|*.bmp) targetdir/
64 bash  shell  arguments  mv 

3
如何检查文件是否是目录的符号链接?
我可以检查文件是否存在,是否是带有-L的符号链接 for file in *; do if [[ -L "$file" ]]; then echo "$file is a symlink"; else echo "$file is not a symlink"; fi done 如果它是带有-d的目录: for file in *; do if [[ -d "$file" ]]; then echo "$file is a directory"; else echo "$file is a regular file"; …
64 bash  shell  test 

7
Shell脚本失败:语法错误:“(”意外
我一直在研究一个脚本,该脚本可以自动为Raspberry Pi开发设置开发环境(有关工作的逐步详细信息,请参见此处)。该脚本已在该文章中链接,但为方便起见,您也可以在此处找到它。现在,当运行此脚本时,将安装并正确设置环境,但是由于sudo的默认超时值,您必须多次输入sudo密码。因此,我开始进行实验,删除所有sudo行,然后在命令行通过sudo运行整个脚本,如下所示: kemra102@ubuntuvm:~$ sudo ./pi_dev_env_install.sh 这可以按预期工作,并且可以完成大部分工作: ./pi_dev_env_install: 68: ./pi_dev_env_install.sh: Syntax error: "(" unexpected 现在,当不使用sudo运行整个脚本时,此行以前可以正常工作。以sudo运行的这条线没有什么可以阻止它工作,据我所知,有人有任何想法吗?


4
为什么`[`是shell内置的,而`[[`是shell的关键字?
据我所知,[[是的增强版本[,但是当我看到它[[作为关键字并[显示为内置函数时,我感到困惑。 [root@server ~]# type [ [ is a shell builtin [root@server ~]# type [[ [[ is a shell keyword TLDP说 内建函数可能是同名系统命令的同义词,但是Bash在内部重新实现它。例如,Bash echo命令与/ bin / echo不同,尽管它们的行为几乎相同。 和 关键字是保留字,令牌或运算符。关键字对shell具有特殊的含义,并且确实是shell语法的组成部分。举例来说,for和while都做!是关键字。类似于内置命令,关键字被硬编码到Bash中,但是与内置命令不同,关键字本身不是命令,而是命令构造的子单元。[2] 那不是既可以作为关键字[又可以[[作为关键字吗?我在这里想念什么吗?同样,此链接再次确认[和[[应该属于同一种类。

2
“ sh兼容”是什么意思?
我已经看到了通常在引用shell时使用的“ shcompatible”一词。我不确定它是否也适用于可能在Shell中运行的程序。 Shell或其他程序“与sh兼容”是什么意思?“ sh不兼容”是什么意思? 编辑:这个问题问bash和sh之间的区别非常相关: sh和bash之间的区别 我仍然想直接回答“与Windows兼容”的含义。一个合理的期望可能是“ sh兼容”的意思是“实现Shell命令语言”,但是为什么会有那么多的“ sh兼容” shell,又为什么又不同呢?

8
如何在两个程序之间建立双向管道?
每个人都知道如何使两个程序(绑定之间的单向管stdout第一个和stdin第二之一): first | second。 但是如何制作双向管道,即交叉绑定stdin和stdout两个程序?有没有简单的方法可以在Shell中完成?
63 shell  pipe 

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.