Questions tagged «shell»

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

4
使用cp将单个文件复制到多个目录
这个问题是我先前提出的问题的续集,该问题使用来创建许多目录mkdir。 我正在使用bash外壳。我使用以下命令创建了五十个目录,每个目录以前缀“ s”开头: mkdir $(printf "s%02i " $(seq 1 50)) 用零填充到第二个数字。也就是说,我获得目录的形式为s01,s02,..., ,。s49s50 现在,我想cp用来将一个文件(例如test.txt)复制到这五十个目录中的每个目录中。是否可以通过与上述类似的方式进行?例如,以下工作有效吗?我是Unix / Linux的新手,所以我真的不想尝试此操作,直到有人请给我表明它是安全的。 cp test.txt $(printf“ s%02i.txt” $(seq 1 50)) 查看的man页面cp,它似乎不cp支持这样的多个目标,但是: NAME cp - copy files and directories SYNOPSIS cp [OPTION]... [-T] SOURCE DEST cp [OPTION]... SOURCE... DIRECTORY cp [OPTION]... -t DIRECTORY SOURCE... DESCRIPTION Copy SOURCE to DEST, …
12 bash  shell  cp 


2
在命令行上转义正则表达式反斜杠所需的反斜杠数
我最近在命令行上遇到一些正则表达式时遇到麻烦,发现为了匹配反斜杠,可以使用不同数量的字符。此数字取决于用于正则表达式的引号(无,单引号,双引号)。请参阅以下bash会话了解我的意思: echo "#ab\\cd" > file grep -E ab\cd file grep -E ab\\cd file grep -E ab\\\cd file grep -E ab\\\\cd file #ab\cd grep -E ab\\\\\cd file #ab\cd grep -E ab\\\\\\cd file #ab\cd grep -E ab\\\\\\\cd file #ab\cd grep -E ab\\\\\\\\cd file grep -E "ab\cd" file grep -E "ab\\cd" file grep …

2
在“ while IFS = read ..”中,IFS为什么无效?
我可能有绝对错误的提示,但令我信服的是,将IFS设置为预先执行/完成列表中的命令之一绝对没有任何效果。在下面的脚本中显示的所有示例中,都 使用外部IFS(在while构造之外)。 这里发生了什么?在这种情况下,我对IFS的功能是否有误解?我希望将数组拆分的结果显示在“预期”列中。 #!/bin/bash xifs() { echo -n "$(echo -n "$IFS" | xxd -p)"; } # allow for null $IFS show() { x=($1) echo -ne " (${#x[@]})\t |" for ((j=0;j<${#x[@]};j++)); do echo -n "${x[j]}|" done echo -ne "\t" xifs "$IFS"; echo } data="a b c" echo -e "----- -- -- …

4
在鼠标,复制和粘贴之前,他们如何设法驱动Unix计算机?
由于Unix已有40年的历史,因此Unix比计算机鼠标的发明要古老。(实际上,如果Unix是1969年的鼠标,而鼠标是1972年的鼠标,则只有3年。)在这个世界上,新用户如何在Unix上做任何不复制和粘贴的操作?我知道他们总是有一个带有复制/粘贴功能的文本编辑器,但是我在Linux上所做的一切都是从Web浏览器复制,然后(从CLIPBOARD)粘贴到vim或gedit或gnome终端中。你也一样吧 我只是无法想象将一个man文件加载到vim中,然后将代码从其中复制并粘贴到临时缓冲区中,然后让bash执行该缓冲区。也许他们从未离开过emacs。那是答案吗?

5
在路径中找到没有“哪个”的文件?
我(以某种方式)能够运行脚本: $ assemble.sh file ... [output] 但which找不到它: $ which assemble.sh which: no assemble.sh in (/s/std/bin:/usr/afsws/bin:/opt/SUNWspro/bin:/usr/ccs/bin:/usr/ucb:/bin:/usr/bin:/usr/stat/bin:/usr/X11R6/bin:. 这怎么可能? 我如何找到该文件在哪里? 我正在使用bash。
12 bash  shell  path 

3
从cron执行sh脚本
我有一个test.sh脚本 #!/bin/sh php /home/v/file.php sh /root/x/some.sh 当我从命令行以root用户身份执行文件时,它可以工作。 sh /home/v/test.sh 当我将其设置为crontab -e(是根cron)时,无法正常工作 * * * * * sh /home/v/test.sh 我做错了什么?谢谢
12 shell  cron 


7
学习shell脚本的实际任务
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为Unix&Linux Stack Exchange 的主题。 10个月前关闭。 我正在寻找unix系统管理中的一些常见问题以及shell脚本可以解决这些问题的方法。完全出于自学目的。我也想知道您将如何学习shell脚本。

3
您使用哪种不太流行的外壳,它们的优点是什么?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 6年前关闭。 除了您可以(可以说是?)称呼更流行的shell(bash,csh,Korn,zsh)之外,您还知道和使用哪些其他shell,以及它们具有哪些独特功能? ps-每个炮弹一个答案是收集有意义的调查的理想选择
12 shell 


6
可以缓冲标准输入或文件的程序
除了使用临时文件提供帮助之外,还有一种方法/程序可以缓冲来自的输入,stdin但直到得到时才输出内容EOF。我也不想使用shell变量(例如buffer=$(cat))。 该程序的行为应如下所示(假设程序名称为buffered-cat): $ buffered-cat line 1 line 2 line 3 ^D # Ctr-D here(End of Line) 现在程序已接收^D,buffered-cat输出内容 line 1 line 2 line 3
12 shell  stdout  buffer 

2
设置-u用法未按预期工作
我正在学习如何set在脚本中有效使用不同的选项,并且发现set -u如果变量未正确设置(例如删​​除用户),退出脚本似乎是完美的选择。根据手册页,set -u并set -e执行以下操作... -e Exit immediately if a command exits with a non-zero status. -u Treat unset variables as an error when substituting. 我创建了一个测试脚本来测试此功能,但似乎无法正常工作。也许有人可以更好地向我解释我的问题,而我在哪里曲解?测试脚本如下。谢谢。 set -e set -u testing="This works" echo $? echo ${testing} testing2= echo $? echo ${testing2} testing3="This should not appear" echo $? echo ${testing3} 我希望脚本显示0和“ This …

1
“ wait&”(“ wait&”符号)是有用的(流行的)shell / shell脚本惯用法或技巧吗?
我已经“继承”了运行GNU“ bash” shell的Linux机器的一些shell脚本。在一种特定情况下,机器运行GNU bash版本2.0.5b 这些脚本之一有一个wait &(“&”符号)作为for循环“ for行”的一部分。乍一看,这似乎是一种好奇/有趣的习惯用法,但是我在网上搜索时并未返回任何相关信息。man wait显示了“ BASH_BUILTINS”(“ BASH BUILTINS COMMAND”)联机帮助页,该联机帮助具有以下描述: wait [n] Wait for the specified process and return its termination status. n may be a process ID or a job spec­ification; if a job spec is given, all processes in that job's pipeline are waited for. If …

2
“ export”命令的用途是什么?
我在一个终端窗口中创建了一个环境变量,并试图在另一个终端窗口中回显它。那什么也没显示。 $TEST=hello 之后,我将其导出,然后echo在另一个终端窗口中再次尝试。结果和以前一样。 export TEST 但是,如果我在登录时执行相同的代码(将代码附加到~/.profile文件中),则可以在任何终端窗口中使用变量。这是怎么回事 在终端中执行代码与登录时执行代码有什么区别?

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.