Questions tagged «shell»

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



4
在echo命令中更改字体
是否可以在zsh或bash中更改echo输出的字体属性? 我想要的是类似于: echo -n "This is the font: normal " echo -n $font=italic "italic," echo -n $font=bold "bold," echo -n "and" echo -n $font=small "small". 以便在一行文本中显示 “这是字体:normal,italic,粗体,small ”。
16 bash  shell  zsh  fonts 

3
什么是分词?为什么它在Shell编程中很重要?
我对单词拆分在其中扮演的角色感到困惑zsh。在使用C,Python或MATLAB进行编程时,我没有接触过这个概念,这引起了我的兴趣,为什么单词拆分似乎是Shell编程特有的。 之前,我已经在此站点和其他站点上阅读过分词的知识,但没有找到关于此概念的明确解释。维基百科对分词有一个定义,但似乎没有关于如何将其应用于Unix shell的参考。 这是我对以下方面感到困惑的示例zsh: 在Z Shell FAQ中,我阅读以下内容: 3.1:为什么在$var哪里var="foo bar"没有我所期望的? 在大多数Bourne-shell派生词中,诸如多词变量var="foo bar" 在传递给命令或在for foo in $var循环中使用时都会分解为多个词 。默认情况下,zsh没有这种行为:该变量保持不变。(这不是错误!请参阅下文。)SH_WORD_SPLIT存在此选项是为了提供兼容性。 但是,在《 Z Shell手册》中,我读到以下内容: SH_WORD_SPLIT (-y) <K> <S> 导致对未引用参数扩展执行字段拆分。请注意,此选项 与分词无关。(请参阅参数扩展。) 为什么会说SH_WORD_SPLIT有没有做与分词?单词拆分难道不是一本正经吗?
16 shell  zsh 

3
使用大括号(大括号)创建带有`mkdir -p`的文件夹结构
作为man mkdir国家 -p, --parents no error if existing, make parent directories as needed 当我运行此命令时 mkdir -p work/{F1,F2,F3}/{temp1,temp2} 它创建了一个文件夹结构,这样的work父文件夹,然后F1,F2,F3子文件夹和temp1以及temp2在三个父文件夹的子文件夹F1,F2,F3。 work -F1 -temp1 -temp2 -F2 -temp1 -temp2 -F3 -temp1 -temp2 现在的问题是,我想创建temp1,temp2文件夹只有在F1没有下F2和F3,但我很困惑我如何能写命令做我想要的。



1
交互式外壳能否变为非交互式,反之亦然?
交互式外壳能否变为非交互式,反之亦然? 注意:我已经对“交互式和非交互式之间的区别是什么?”这一基本问题进行了大量研究,研究的结果使我提出了这个问题。 这个问题的序言很长,部分原因是至关重要的是我们为回答“交互”所使用的定义类型。定义可以是特定集合的任意标签;它可以描述各种特性;或者它可以为您提供信息,以帮助您预测行为和了解目的。 我们可以将这最后一种称为“动作定义”或“动态定义”,这是最有用的。 在中man 1p sh,给出了交互式外壳的以下定义: If the -i option is present, or if there are no operands and the shell’s standard input and standard error are attached to a terminal, the shell is considered to be interactive. 从提及“ -i选项”和使用“操作数”一词开始,这是指Shell的调用,而不是可以在运行中的Shell中检查的属性。 Bash手册页的措辞略有不同: An interactive shell is one started without non-option …

1
等待bash-builtin以100%的速度消耗CPU
至少在GNU bash版本4.3.42 x86_64和&GNU bash版本4.3.11 x86_64上发生 我用sleep & wait $!一个简单的方法而不是简单的方法sleep来获得sleep信号的可中断性(如SIGUSR1)。但是wait当您运行以下命令时,bash-builtin的行为似乎很奇怪。 1号航站楼: cat <( trap 'echo SIGUSR1' SIGUSR1; echo $BASHPID; while :;do sleep 1 & wait $!; echo test; done )& 2号航站楼: kill -10 /the pid of the subshell, printed by the previous command/ 1号航站楼: ^C (ctrl + C) 然后,我得到了以100%消耗CPU的子外壳。 1号航站楼: pkill …

5
查找文件中任何位置包含多个关键字的文件
我正在寻找一种列出目录中所有文件的方法,该文件包含我要查找的关键字的完整集合,位于文件的任何位置。 因此,关键字不必出现在同一行上。 一种方法是: grep -l one $(grep -l two $(grep -l three *)) 三个关键字只是一个例子,也可以是两个或四个,依此类推。 我能想到的第二种方法是: grep -l one * | xargs grep -l two | xargs grep -l three 在另一个问题中出现的第三个方法是: find . -type f \ -exec grep -q one {} \; -a \ -exec grep -q two {} \; -a …

2
安装命令复制整个目录时出现问题
所以我有一些配置文件的仓库,我试图创建一个makefile将它们安装在homedir中。我的问题是当我直接在bash中运行以下命令时 install -m 755 -d ~/path/to/dotfilesDir/ ~/ 似乎什么也没发生 install -m 755 ~/path/to/dotfilesDir/{file1,file2,...} ~/ 按预期工作。 为什么第一个(更简便)的解决方案不起作用?

5
为什么在类似Unix的系统中有多个shell?
我刚刚开始学习Unix的基础知识,并且想知道为什么在类似Unix的系统中有那么多shell。摘自《Unix环境中的高级编程》一书: Shell是一个命令行解释器,它读取用户输入并执行命令。用户对Shell的输入通常是从终端(交互式Shell)或有时是从文件(称为Shell脚本)输入的。 然后,本书继续列出了一些shell程序,例如Bourne shell,Bourne-again shell,Cshell等。我的问题基本上是为什么我们需要多个外壳?
16 shell 

5
如何将Shell命令嵌入到sed表达式中?
我有一个具有以下格式的文本文件: keyword value keyword value ... 关键字是单个单词,而值是直到行尾的所有其他内容。我想从shell脚本中读取文件,以使值(而不是关键字)经过shell扩展。 使用sed可以轻松匹配关键字和值部分 input=' keyword value value keyword "value value" keyword `uname` ' echo "$input"|sed -e 's/^\([^[:space:]]*\)[[:space:]]\(.*\)$/k=<\1> v=<\2>/' 产生 k=<keyword> v=<value value> k=<keyword> v=<"value value"> k=<keyword> v=<`uname`> 但是问题是我该如何将shell命令嵌入sed表达式的替换部分中。在这种情况下,我希望更换\1 `echo \2`。
16 shell  sed 

1
在zsh中执行脚本-文件权限
我对执行文件权限不符合我的预期感到困惑。可能是因为我的期望是错误的。无论如何: 我有一个脚本文件,为了简单起见s,它位于中~/bin。对于此示例,文件仅包含以下几行: #!/bin/zsh echo "Test"; 很简单的。 我导航到~/bin目录,并chmod具有sto 的文件权限400-即,仅对我只读。没有执行权限。因此,我尝试通过输入脚本路径来执行脚本,并给出以下内容: % ./s zsh: permission denied: ./s 到目前为止,一切都很好。由于权限错误,无法执行该文件。将权限提升到最高500(授予执行权限)也可以正常工作-使用这些权限,文件可以正常执行: % ./s Test 这完全符合预期。但是然后我将chmod权限放回至400(再次关闭执行权限),尝试source处理该文件,然后发生这种情况: % source s Test 虽然权限是 400,但脚本将执行。 所以这是我的问题:为什么会./s失败(应该如此),但是source s正常执行?这不会破坏执行权限的全部目的吗? 在400权限下,sh s以及zsh s同时工作。 我确定我在做某事或在某处了解严​​重错误。可有人指出哪里给我,并解释之间的区别./s,source s,sh s和zsh s?

3
为什么我的箭头键在sh中不起作用?
我最近安装了Ubuntu,在终端上运行sh时,我的箭头键不起作用,因此无法浏览通话记录或编辑输入内容。就像奇怪的角色一样出现^[[A。 登录shell是bash,它可以正常工作,但是一旦我切换到sh,它们就无法工作。 我怎样才能解决这个问题?
16 shell  ubuntu  terminal 

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.