Questions tagged «shell»

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





13
关闭管道中的缓冲
我有一个脚本,它调用两个命令: long_running_command | print_progress 该long_running_command打印进度,但我不开心吧。我print_progress用来使其更美观(即,我将进度打印在一行中)。 问题:将管道连接到stdout还会激活4K缓冲区,到漂亮的打印程序不会得到任何东西……没有任何东西……没有任何东西 ……:) 如何禁用4K缓冲区long_running_command(不,我没有源)?
395 shell  pipe  buffer 

10
如何删除名称以“-”开头的文件(连字符,即连字符或减号)?
如何删除文件名以破折号(连字符或减号)开头的文件-?我被放入远程OSX服务器中,并且我的目录中有以下文件: tohru:~ $ ls -l total 8 -rw-r--r-- 1 me staff 1352 Aug 18 14:33 --help ... 我该如何--help从CLI 删除?我有时会以不同的形式遇到此问题,这些文件易于创建,但很难消除。 我尝试使用反斜杠 rm \-\-help 我已经尝试过引号 rm "--help" 如何防止减号(连字符或连字符)被解释为选项?

11
如何使用推入和弹出命令?
什么都的实际应用,pushd并popd时有过使用这两个命令的优势cd和cd -? 编辑:我正在寻找这两个命令使用的一些实际示例,或者是与目录保持堆栈的原因(当您具有制表符补全,,cd -用于缩短的别名cd ..等时)。
332 shell  cd-command  pushd 



10
如何在文件中追加多行
我正在编写一个bash脚本来查找文件(如果不存在),然后创建该文件并将其附加到该文件: Host localhost ForwardAgent yes 因此,"line then new line 'tab' then text"我认为它是一种敏感格式。我知道您可以这样做: cat temp.txt >> data.txt 但自从两行开始,这似乎很奇怪。有没有办法以这种格式附加它: echo "hello" >> greetings.txt

16
如何使用bash或其他语言/框架进行整数和浮点计算?
按echo "20+5"字面使用会产生文字“ 20+5”。 25在这种情况下,我可以使用什么命令来获取数字总和? 另外,仅使用bash进行浮点运算的最简单方法是什么?例如,echo $((3224/3807.0))打印0:(。 我正在使用基本命令外壳程序(“命令行”)本身或通过使用命令行中可用的语言来寻找答案。


5
为什么我的Shell脚本会在空白或其他特殊字符上造成窒息?
或者,一个介绍性的指南,介绍了强大的文件名处理以及其他在Shell脚本中传递的字符串。 我编写了一个外壳脚本,该脚本在大多数情况下都能正常工作。但是它在某些输入(例如某些文件名)上阻塞了。 我遇到了以下问题: 我有一个包含空格的文件名hello world,它被视为两个单独的文件hello和world。 我的输入行有两个连续的空格,它们在输入中缩小为一个。 开头和结尾的空格从输入行中消失。 有时,当输入包含一个字符时\[*?,它们会被一些实际上是文件名的文本替换。 输入中有撇号'(或双引号"),从那以后事情变得很奇怪。 输入中有一个反斜杠(或:我正在使用Cygwin,并且我的某些文件名具有Windows样式的\分隔符)。 怎么回事,如何解决?

4
Segmentation Fault在后台如何工作?
除了“ CPU的MMU发送信号”和“内核将其定向到有问题的程序,终止它”之外,我似乎找不到任何其他信息。 我以为它可能会将信号发送到外壳,外壳通过终止有问题的进程和打印来处理它"Segmentation fault"。因此,我通过编写一个极小的shell (称为crsh(废话外壳))测试了该假设。该外壳程序不执行任何操作,只是接受用户输入并将其输入给system()方法。 #include <stdio.h> #include <stdlib.h> int main(){ char cmdbuf[1000]; while (1){ printf("Crap Shell> "); fgets(cmdbuf, 1000, stdin); system(cmdbuf); } } 因此,我在一个裸终端(没有bash在下面运行)中运行了这个shell 。然后,我继续运行一个产生段错误的程序。如果我的假设正确,则可能是a)崩溃crsh,关闭xterm,b)不打印"Segmentation fault"或c)两者。 braden@system ~/code/crsh/ $ xterm -e ./crsh Crap Shell> ./segfault Segmentation fault Crap Shell> [still running] 回到正方形,我猜。我刚刚演示了执行此操作的不是外壳程序,而是其下的系统。甚至如何打印“细分故障”?“谁”在做?内核?还有吗 信号及其所有副作用如何从硬件传播到程序的最终终止?


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.