相关疑难解决方法(0)

如何让cp命令创建用于将文件复制到目标的任何必要文件夹

将文件复制cp到可能存在或不存在cp的文件夹时,如何在必要时创建文件夹?这是我尝试过的:

[root@file nutch-0.9]# cp -f urls-resume /nosuchdirectory/hi.txt
cp: cannot create regular file `/nosuchdirectory/hi.txt': No such file or directory
Run Code Online (Sandbox Code Playgroud)

linux bash cp

421
推荐指数
7
解决办法
44万
查看次数

$ @在shell脚本中意味着什么?

@在shell脚本中,一个美元符号后跟一个at符号()意味着什么?

例如:

umbrella_corp_options $@
Run Code Online (Sandbox Code Playgroud)

unix linux bash shell sh

155
推荐指数
6
解决办法
17万
查看次数

何时在shell变量周围包装引号?

有人能告诉我是否应该在shell脚本中包含变量的引号?

例如,以下是正确的:

xdg-open $URL 
[ $? -eq 2 ]
Run Code Online (Sandbox Code Playgroud)

要么

xdg-open "$URL"
[ "$?" -eq "2" ]
Run Code Online (Sandbox Code Playgroud)

如果是这样,为什么?

unix linux bash shell quotes

145
推荐指数
4
解决办法
5万
查看次数

IFS = $'\n'的确切含义是什么?

如果以下示例将IFS环境变量设置为换行符...

IFS=$'\n'
Run Code Online (Sandbox Code Playgroud)
  • 什么是美元符号的意思 完全相同
  • 在这个具体案例中它做了什么?
  • 我在哪里可以阅读有关此特定用法的更多信息(Google不允许在搜索中使用特殊字符,否则我不知道该寻找什么)?

我知道IFS环境变量是什么,\n字符是什么(换行),但为什么不使用以下形式:( IFS="\n"哪个不起作用)?

例如,如果我想循环遍历文件的每一行并想要使用for循环,我可以这样做:

for line in (< /path/to/file); do
    echo "Line: $line"
done
Run Code Online (Sandbox Code Playgroud)

但是,除非IFS设置为换行符,否则这将无法正常工作.为了让它工作,我必须这样做:

OLDIFS=$IFS
IFS=$'\n'
for line in (< /path/to/file); do
    echo "Line: $line"
done
IFS=$OLDIFS
Run Code Online (Sandbox Code Playgroud)

注意:我不需要另一种方式做同样的事情,我已经知道很多其他的...我只是对此感到好奇,$'\n'并想知道是否有人可以给我一个解释.

variables bash shell environment-variables ifs

117
推荐指数
4
解决办法
8万
查看次数

当我们在美元符号和括号中放入一个命令时,它在shell中意味着什么:$(command)

我只是想了解shell中的以下代码行.它用于获取当前工作目录.我知道$(variable)名称返回变量名称中的值,但$(command)应该返回什么?它在执行命令后返回值吗?在这种情况下,我们可以`用来执行命令.

CWD="$(cd "$(dirname $0)"; pwd)"
Run Code Online (Sandbox Code Playgroud)

在不同版本的shell中也可以从以下代码行获取相同的输出

DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
Run Code Online (Sandbox Code Playgroud)

我无法理解的含义$(cd..$(dirname.

有人可以帮我弄清楚这个命令是如何执行的吗?

bash shell terminal ksh sh

97
推荐指数
2
解决办法
5万
查看次数

什么$?在shell脚本中$ 0 $ 1 $ 2是什么意思?

我经常遇到$? $0 $1 $2 etc....shell脚本,我知道的是$?返回最后一个命令的退出状态

echo "this will return 0"
echo $?
Run Code Online (Sandbox Code Playgroud)

但其他人做了什么?他们叫什么,还有更多吗?也许就像$ 3 $ 4 $ 5 ...

bash shell ash

71
推荐指数
2
解决办法
23万
查看次数

什么是间接扩张?$ {!var*}是什么意思?

我正在读" Bash初学者指南 ".它说:

如果第一个字符PARAMETER是感叹号,则Bash使用由其余部分形成的变量的值作为变量PARAMETER的名称; 然后展开此变量,并将该值用于替换的其余部分,而不是其PARAMETER自身的值.这被称为间接扩张.

给出的例子是:

franky ~> echo ${!N*}
NNTPPORT NNTPSERVER NPX_PLUGIN_PATH
Run Code Online (Sandbox Code Playgroud)

我在这里不太明白:

从其余部分形成的变量的值 PARAMETER

由于PARAMETER是刚刚!N*的话

其余的 PARAMETER

只是N*.怎么会形成一个变量?Bash在那里搜索了所有可能的命令吗?

bash indirection

70
推荐指数
3
解决办法
3万
查看次数

如何观看和编译所有TypeScript源?

我正在尝试将宠物项目转换为TypeScript,似乎无法使用该tsc实用程序来观察和编译我的文件.帮助说我应该使用-w开关,但看起来它无法*.ts以递归方式查看和编译某个目录中的所有文件.这似乎tsc应该能够处理.我有什么选择?

javascript compilation typescript

70
推荐指数
7
解决办法
9万
查看次数

set -e和exec"$ @"为docker入口点脚本做了什么?

我注意到docker的许多entrypoint.sh脚本都是这样的:

#!/bin/bash
set -e

... code ...

exec "$@"
Run Code Online (Sandbox Code Playgroud)

什么是set -eexec "$@"为什么?

shell docker

69
推荐指数
3
解决办法
3万
查看次数

如何在bash中杀死后禁止终止消息?

如何抑制Terminated在bash脚本中终止进程后出现的消息?

我试过了set +bm,但那不起作用.

我知道另一个解决方案涉及呼叫exec 2> /dev/null,但是可靠吗?如何重新设置它以便我可以继续查看stderr?

unix bash shell

54
推荐指数
6
解决办法
4万
查看次数