Questions tagged «shell»

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


4
两个文件是否被硬链接?
如何判断是否从命令行将两个文件进行了硬链接?例如一些链接: $ ls fileA fileB fileC $ is-hardlinked fileA fileB yes $ is-hardlinked fileA fileC no
27 shell  files 

12
Linux-列出文件的命令(ls除外)
假设您在系统上工作,并且有人不小心删除了 ls命令(/bin/ls)。您如何获得当前目录中文件的列表?试试吧。 我尝试了许多方法,并且还在Internet上进行了搜索,但一无所获。我想问ls一下命令旁边,我们可以使用什么命令列出所有文件。
27 shell  command-line  ls 


4
如何从外壳执行库命令?
我只想简单地计算一个字符串的长度(即哈希值)。因此,我打开终端并执行以下操作: $ apropos length 返回给我的是一堆在其末尾带有(3)或(3ssl)附加的命令/功能。现在,男人给了我们有关这些section numbers含义的信息。 3 Library calls (functions within program libraries) 出于好奇,我只是尝试了所有这些命令(希望至少可以使用) strcspn (3) - get length of a prefix substring strlen (3) - calculate the length of a string strnlen (3) - determine the length of a fixed-size string strspn (3) - get length of a prefix …
27 shell  libraries 

2
字符串为左括号时,shell括号测试错误
我曾经对以下事实充满信心:对字符串加引号始终是一种好习惯,以避免shell对其进行解析。 然后我遇到了这个: $ x='(' $ [ "$x" = '1' -a "$y" = '1' ] bash: [: `)' expected, found 1 试图找出问题,并得到相同的错误: $ [ '(' = '1' -a '1' = '1' ] bash: [: `)' expected, found 1 我解决了这样的问题: [ "$x" = '1' ] && [ "$y" = '1' ] 我仍然需要知道这里发生了什么。
27 shell  test 

2
'ls'和'echo $(ls)'之间的区别
考虑两个壳样本 $ ls myDoc.html SomeDirectory someDoc.txt 和 $ echo $(ls) myDoc.html SomeDirectory someDoc.txt 据ls我了解,第一个执行将把当前工作目录的内容附加到stdout文件(这是终端显示的内容)。它是否正确? 第二个采用ls命令的值(表示当前工作目录的内容)并将其打印到stdout文件中。它是否正确? 为什么两个命令给出不同的输出?
27 shell 

2
验证变量的长度
我必须验证读取的变量的长度(我的脚本限制为插入的五个字符),我在想这样的事情: #!/bin/bash read string check=${#string} echo $check if [ $check -ge 5 ]; then echo "error" ; exit else echo "done" fi 还有更“优雅”的解决方案吗?
27 bash  shell  string 

4
为什么没有任何Shell命令来创建文件?
请注意: 我不是在问如何从命令行制作文件! 多年来,我一直touch在制作文件而没有注意它的主要目的是其他东西。如果要从命令行创建文件,则有很多可能性: touch foo.bar > foo.bar cat > foo.bar echo -n > foo.bar printf '' > foo.bar 而且我敢肯定还有更多。 但是事实是,以上命令实际上都不是为创建文件而设计的。例如,man touch建议此命令用于更改文件时间戳。为什么没有像Unix(或Linux)那样完整的OS具有专门用于创建文件的命令?

4
是否允许外壳优化出无用的终止命令?
如果要求外壳程序执行已知终止的可能无用的(或部分无用的)命令(例如)cat hugeregularfile.txt > /dev/null,它可以跳过该命令的执行(或执行便宜的等效 命令touch -a hugeregularfile.txt)吗? 更笼统地说,shell是否类似于C编译器,只要可以在外部观察到的行为就如同抽象机对其进行了评估一样,就可以对源代码执行任何转换? 编辑 Nota Bene:我最初提出的问题有一个标题,询问是否允许 shell 进行这些优化,而不是是否应该甚至可以执行这些优化的实现。我对理论比对实践更感兴趣,尽管都欢迎。


4
如何在grep中使用十六进制代码指定字符?
这个问题是从Stack Overflow 迁移过来的,因为可以在Unix&Linux Stack Exchange上回答。 迁移 8年前。 我正在使用以下命令对十六进制代码0900(而不是अ)到097F(而不是व)的grep字符集范围进行grep。如何使用十六进制代码代替अ和व? bzcat archive.bz2 | grep -v '<[अ-व]*\s' | tr '[:punct:][:blank:][:digit:]' '\n' | uniq | grep -o '^[अ-व]*$' | sort -f | uniq -c | sort -nr | head -50000 | awk '{print "<w f=\""$1"\">"$2"</w>"}' > hindi.xml 我得到以下输出: <w f="399651">और</w> <w f="264423">एक</w> <w f="213707">पर</w> …

3
我该如何计时管道?
我想要time一个命令,该命令由两个单独的命令组成,一个管道输出到另一个管道。例如,考虑以下两个脚本: $ cat foo.sh #!/bin/sh sleep 4 $ cat bar.sh #!/bin/sh sleep 2 现在,我如何才能time报告所花费的时间foo.sh | bar.sh(是的,我知道这里的管道没有意义,但这只是一个示例)?如果我在不使用管道的子外壳中依次运行它们,则可以正常工作: $ time ( foo.sh; bar.sh ) real 0m6.020s user 0m0.010s sys 0m0.003s 但是在管道传输时我无法使其工作: $ time ( foo.sh | bar.sh ) real 0m4.009s user 0m0.007s sys 0m0.003s $ time ( { foo.sh | bar.sh; } …
27 bash  shell  pipe  time 

2
TERM环境变量默认值在哪里设置?
当我在桌面GUI中使用GNOME终端仿真器打开终端窗口时,shell TERM环境变量默认为值xterm。 如果我使用CTL+ ALT+ F1切换到控制台TTY窗口,并且echo $TERM该值设置为linux。 我发问的动机是,在我的~/.bashrc文件中使用一个变量来确定是否提供了彩色外壳或仅是老式的单色。 # set a fancy prompt (non-color, unless we know we "want" color) case "$TERM" in xterm-color) color_prompt=yes;; esac 在控制台外壳和Gnome Terminal模拟器外壳中,如果我键入 export TERM=xterm-color source /.bashrc 两个壳都更改为颜色模式(我想总是在这两者中发生某些事情)。 请在哪里TERM设置默认值?如果可能,最好在哪里更改默认值?终端仿真器GUI中似乎没有任何东西可以选择或设置默认的TERM值。 我确实考虑过仅将行添加export TERM=xterm-color到~/.bashrc文件的顶部,但是我的直觉告诉我这不是最好的解决方案,而且我的Google搜索还没有给我一个很好的答案。 我正在运行Ubuntu 15.04桌面版(基于Debian)。

3
当使用单引号将特殊字符包装在shell中时,如何回显“单引号”?
我今天正在从http://www.tutorialspoint.com/unix/unix-quoting-mechanisms.htm阅读Shell教程 其中提到: 如果单引号出现在要输出的字符串中,则不应将整个字符串放在单引号中,而应使用反斜杠()进行如下操作: echo 'It\'s Shell Programming' 我在centos服务器上尝试了此操作,它不起作用,>提示您提示我输入更多内容。 我很纳闷,因为两个单引号每一个特殊字符转换为普通字符,其中包括逃逸符号\,但不包括本身的', 我应该怎么代表一个单引号'在单引号的词组?
26 shell  quoting 

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.