Questions tagged «shell»

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

2
用envsubst只替换特定的变量
我正在尝试通过进行环境变量替换envsubst,但是我只想替换特定的变量。 从文档中,我应该能够告诉我envsubst仅替换某些变量,但我无法做到这一点。 例如,如果我有一个包含以下内容的文件: VAR_1=${VAR_1} VAR_2=${VAR_2} 我应该如何执行envsubst以便仅替换对的引用${VAR_1}?

3
在外壳通配符中使用OR模式
我的目录的内容是 $ ls -lrt total 0 -rw-r--r-- 1 user1 admin 19 Oct 8 12:31 night.txt -rw-r--r-- 1 user1 admin 19 Oct 8 12:31 noon.txt -rw-r--r-- 1 user1 admin 38 Oct 8 12:31 day.txt 我想列出文件名中包含单词的文件的详细信息。 范例: $ ls -lrt *day|night* ls: *day: No such file or directory bash: night.txt: command not …
52 bash  shell  zsh  ls  wildcards 

14
查找未使用的本地端口的最简单方法是什么?
查找未使用的本地端口的最简单方法是什么? 目前,我正在使用与此类似的东西: port=$RANDOM quit=0 while [ "$quit" -ne 1 ]; do netstat -a | grep $port >> /dev/null if [ $? -gt 0 ]; then quit=1 else port=`expr $port + 1` fi done 感觉到处都是回旋处,所以我想知道是否有更简单的路径,例如我所错过的内建路径。

5
主流* NIX外壳之间的根本区别是什么?[关闭]
主流* NIX shell之间的根本区别是什么?哪些情况可能会提示您使用另一种?我知道其中的一些可能取决于用户的偏好,但是我只使用过bash,所以我很想听听其他shell可能有用的地方。 另外,在一个或多个Shell下运行时,是否会对用户编写的Shell脚本产生影响,还是仅仅是在文件顶部更改Shell?我的直觉说这并不容易。
52 shell 

4
立即将Python标准输出写入文件
尝试将标准输出从Python脚本写入文本文件(python script.py > log)时,将在启动命令时创建该文本文件,但直到Python脚本完成后才写入实际内容。例如: script.py: import time for i in range(10): print('bla') time.sleep(5) 当使用调用时python script.py,每5秒将输出到stdout ,但是当我调用时python script.py > log,日志文件的大小保持为零,直到脚本完成。是否可以直接写入日志文件,以便您可以跟踪脚本的进度(例如使用tail)? 编辑事实证明,这python -u script.py可以解决问题,我不知道stdout的缓冲。
51 shell  python  stdout 

5
如何从目录中删除所有子目录?
这个问题是我在此处发布的第一个问题的第二阶段 我有一个目录,其中包含一堆子目录,.zip文件以及未包含在子目录中的其他随机文件。 我想使用命令行脚本从父目录中删除所有子目录,但保留所有不属于任何子目录的zip文件和松散文件。所有子目录都有内容,因此我相信我需要使用-f命令强制将其删除。 因此,基本上,在父目录(或当前目录)中查找的命令会删除其中的所有文件夹,但会保留不是文件夹或包含在文件夹中的所有其他内容和文件。 我知道从命令行删除项目需要特别注意,但是我已经采取了所有必要的预防措施进行远程备份。

2
为什么是 '。' Unix中的硬链接?
对于基于Unix的操作系统,为什么一个空目录的链接计数是2而不是1,我已经看到了很多解释。他们都说这是因为'。目录,每个目录都指向其自身。我了解为什么要使用“。”的概念。对于指定相对路径很有用,但是通过在文件系统级别实现它可以得到什么呢?为什么不只具有路径的shell或系统调用知道如何解释它呢? 对我来说,“ ..”是一个真正的链接-文件系统需要存储一个指向父目录的指针才能导航到它。但是我不明白为什么。成为真正的链接是必要的。似乎也导致实现中出现一个丑陋的特殊情况-您可能认为您只能释放链接数小于1的inode所使用的空间,但是如果它们是目录,则实际上需要检查链接数少于2。为什么不一致?

5
“ / bin / [”究竟如何工作?
我总是很惊讶文件夹中/bin有一个[程序。 当我们做类似的事情时,这就是所谓的if [ something ]吗? 通过[在shell中显式调用该程序,它会要求一个对应的],当我提供右括号时,无论我在括号之间插入什么,它似乎都无济于事。 不用说,有关帮助有关程序不能正常工作,即无论是通常的方式man [,也没有[ --help工作。
50 shell  test 


5
如何将一个命令的输出作为命令行参数传递给另一个命令?
所以我有一个脚本,当我给它两个地址时,它将搜索两个HTML链接: echo "http://maps.google.be/maps?saddr\=$1\&daddr\=$2" | sed 's/ /%/g' 我想将其发送到wget,然后将输出保存到名为的文件中temp.html。我试过了,但是没有用。有人可以解释原因和/或给我一个解决方案吗? #!/bin/bash url = echo "http://maps.google.be/maps?saddr\=$1\&daddr\=$2" | sed 's/ /%/g' wget $url

5
如何在条件语句中退出脚本?
我正在编写一个bash脚本,如果用户不是root用户,我想在其中退出。有条件的工作正常,但脚本不会退出。 [[ `id -u` == 0 ]] || (echo "Must be root to run script"; exit) 我尝试使用&&代替,;但是都没有用。

3
关闭文件描述符,>&-vs <&-
在我正在阅读的bash教程中,它说如果您打开文件描述符进行读取,即 exec 3&lt; echolist 然后您必须像这样关闭它 exec 3&lt;&amp;- 但是,如果打开文件描述符进行写入,则必须像这样关闭它: exec 3&gt;&amp;- 然而,当我在互联网上浏览时,我看到人们打开文件,然后用以下命令关闭文件: exec 3&gt;&amp;- 注意:根据教程,何时应使用exec 3&lt;&amp;1。 所以我的问题是,是否可以通过exec n&gt;&amp;-n是文件描述符编号来关闭所有文件描述符?不管它是开放供阅读,写作还是同时开放?

3
如何在shell脚本中将文本输出到屏幕和文件?
目前,我有一个Shell脚本,它将消息记录到这样的日志文件中: log_file="/some/dir/log_file.log" echo "some text" &gt;&gt; $log_file do_some_command echo "more text" &gt;&gt; $log_file do_other_command 执行此脚本时,没有输出到屏幕,并且由于我是通过腻子连接到服务器的,因此我必须打开另一个连接并执行“ tail -f log_file_path.log”,因为我无法终止运行脚本,我想实时查看输出。 显然,我想要的是将文本消息打印在屏幕上并记录到文件中,但是我想用一行而不是两行来完成,其中之一没有重定向到文件。 如何实现呢?

2
Bash:如何从命令输出一次读取一行?
我正在尝试使用读取bash中命令的输出while loop。 while read -r line do echo "$line" done &lt;&lt;&lt; $(find . -type f) 我得到的输出 ranveer@ranveer:~/tmp$ bash test.sh ./test.py ./test1.py ./out1 ./test.sh ./out ./out2 ./hello ranveer@ranveer:~/tmp$ 在这之后我尝试了 $(find . -type f) | while read -r line do echo "$line" done 但是它产生了一个错误test.sh: line 5: ./test.py: Permission denied。 因此,我如何逐行阅读它,因为我认为当前它一次吞噬了整行。 要求的输出: ./test.py …
49 bash  shell  find  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.