Questions tagged «shell»

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

3
[-t 1]检查什么?
我刚刚找到了一种从Windows zsh启动bashWindows 时启动的方法 https://www.howtogeek.com/258518/how-to-use-zsh-or-another-shell-in-windows-10/。 建议在的末尾添加以下代码.bashrc。 # Launch Zsh if [ -t 1 ]; then exec zsh fi 什么[ -t 1 ]意思 这是真的吗? 然后,我可以这样做吗? exec zsh
13 bash  shell  zsh  test 

2
Shell有效的函数名称字符
对于许多用户来说,使用扩展的Unicode字符是(毫无疑问)有用的。 更简单的shell(灰(busybox),破折号)和ksh会因以下原因而失败: tést() { echo 34; } tést 但是bash,mksh,lksh和zsh似乎允许这样做。 我知道POSIX 有效函数名称使用此Names定义。这意味着此正则表达式: [a-zA-Z_][a-zA-Z0-9_]* 但是,在第一个链接中还说: 一个实现可以允许函数名称中的其他字符作为扩展名。 问题是: 是否接受并记录了此文件? 哪里? 对于哪些壳(如果有)? 相关问题: 它可能在shell函数名称中使用特殊字符吗? 我对在函数名称中使用元字符(>)不感兴趣。 包含“-”的upstart和bash函数名称 我不认为运算符(减号“-”)应该是名称的一部分。
13 bash  shell  zsh  function 

2
以`ls`匹配模式排除一个目录
我正在尝试里面ls有.png文件的目录(不需要递归,尽管它会额外有用),第一个。排除一个目录即 ls */*.png 工作良好。 ls (^one)*/*.png 不返回任何标准输出。我该如何实现? 我是盲人,并将其传送到espeak,所以现在我只能听到stdout。
13 shell  ls  wildcards 

2
为什么在执行bash脚本时(仅在采购它时)不能加载模块?
我正在使用模块来控制系统上的软件包,并且已python/2.7.2作为模块安装。我有一个简单的python可执行文件python_exe.py,我将从一个简单的“ driving”脚本中调用它runit.sh。runit.sh脚本看起来像: #!/bin/bash module load python/2.7.2 arg1=myarg1 arg2=15 arg3=$5 /path/to/python_exe.py -a $arg1 -b $arg2 -c $arg3 但是,当我刚运行时./runit.sh,它向我出售“模块:找不到命令”。source runit.sh但是,当我使用时,它将正确加载模块。为什么是这样?
13 bash  shell  python 

2
如何在只有长选项的bash命令行中使用getopt?
getoptbash命令行中有一个命令。getopt可以与短选项(例如getopt -o axby "$@")一起使用,并且可以与短和长选项(例如getopt -o axby -l long-key -- "$@")一起使用,但是现在我只需要长选项(即根本没有短选项),但是该命令getopt -l long-key -- "$@"没有--long-key正确解析选项。那么如何只使用长选项来使用getopt命令?还是不可能,或者仅仅是命令的错误?getopt
13 shell  command 

6
echo -e的反向是什么?
如果我的字符串带有不可echo打印的字符,\n换行或制表符,是否可以使用一种方法来打印此字符串并显示这些字符的代码(例如,换行,\b退格)?
13 shell  echo 

5
如何在Linux bash脚本中捕获错误?
我做了以下脚本: # !/bin/bash # OUTPUT-COLORING red='\e[0;31m' green='\e[0;32m' NC='\e[0m' # No Color # FUNCTIONS # directoryExists - Does the directory exist? function directoryExists { cd $1 if [ $? = 0 ] then echo -e "${green}$1${NC}" else echo -e "${red}$1${NC}" fi } # EXE directoryExists "~/foobar" directoryExists "/www/html/drupal" 该脚本有效,但是在我的回声旁边,当 cd $1 …

4
这是Bash手册的重定向部分中的错字吗?
Note that the order of redirections is significant. For example, the command ls > dirlist 2>&1 directs both standard output and standard error to the file dirlist, while the command ls 2>&1 > dirlist directs only the standard output to file dirlist, because the standard error was duplicated from the …

5
使用不同的参数重新运行同一命令
我知道我可以运行以下命令 ls Some{File,Folder} 它等效于运行此命令: ls SomeFile SomeFolder (我也经常将它用于mv place_{a,b}) 但是,我想知道是否有其他快捷方式可以执行以下操作: run-command --a --whole --lot --of --flags parameter a; \ run-command --a --whole --lot --of --flags parameter b 而且我只需要打字run-command --a --whole --lot --of --flags parameter {a,b}或类似的东西。

8
为什么终端区分大小写?
当我这样做时- CD ..而不是cd .. 给我错误提示- CD: command not found 为什么涉及linux命令时终端区分大小写?我的意思是您应该能够使用“全部大写”或“全部小写”字符执行命令。 我知道这是由于某种原因,但是我很好奇。

2
从列表中交互式删除文件
我想删除文件列表并要求确认。列表在list.txt文件中。为什么以下命令无法正常工作? while read i; do rm -i $i; done < list.txt 前面的命令不会等我,但是幸运的是没有文件被删除。 我正在使用Bash。

1
shell脚本中的netcat提供无效连接
我有一个Shell脚本,用于在端口1111上netcat侦听localhostWeb请求。localhost:1111/index.html例如,每次我尝试访问时,都会得到: invalid connection to [127.0.0.1] from localhost [127.0.0.1] 60038 每次访问时,末尾的数字(60038)似乎都在增加localhost。 有什么问题的建议吗?什么是default localhost目录?我应该在哪里放一个index.html,这样localhost:1111/index.html会工作呢? 编辑 这是完整的脚本: #!/bin/sh while true do netcat -vvl localhost -p 1111 -c ' set -x read http_request echo HTTP/1.0 200 OK echo echo "Received HTTP request: $http_request" ' done

6
删除空目录树(删除尽可能多的目录,但不删除文件)
假设我有一个这样的目录树: ROOTDIR └--SUBDIR1 └----SUBDIR2 └----SUBDIR3 我正在寻找这样的命令,当我输入: $ [unknown command] ROOTDIR 如果没有文件,而整个树内部只有目录,则可以删除整个目录树。但是,说一下SUBDIR1下是否有一个名为hello.pdf的文件: ROOTDIR └--SUBDIR1 └--hello.pdf └----SUBDIR2 └----SUBDIR3 然后,该命令只能删除SUBDIR2及以下版本。
13 shell  directory  rm 


2
段故障处理程序的管道输出
我有一个脚本,该脚本调用ttf2afm有时会出现段错误而有时没有的程序(特别是tetex 3.0的一部分)。我需要的信息总是在段错误之前被打印出来,但是我很难阻止管道重定向失败,并且在程序失败时不向管道输出任何内容。 我尝试过通过FIFO进行重定向,true最后用a括住该过程,从shell函数执行并封装在中sh -c,但是脚本似乎从未允许该过程输出任何东西,无论是重定向还是以其他方式输出-甚至不输出到stderr。 我知道它能够输出,因为它完全有能力从命令行提供它,但是出于某种原因却不能从脚本中提供。 我的问题是,脚本是否可以忽略程序段错误并给我输出的事实? 我正在运行BASH 4.1.10(2)-发行版。

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.