标签: tilde-expansion

如何在bash中手动扩展一个特殊变量(ex:~tilde)

我的bash脚本中有一个变量,其值如下所示:

~/a/b/c
Run Code Online (Sandbox Code Playgroud)

请注意,它是未扩展的波形符号.当我对这个变量执行ls -lt(称之为$ VAR)时,我没有这样的目录.我想让bash解释/扩展这个变量而不执行它.换句话说,我希望bash运行eval但不运行evaluate命令.在bash中这可能吗?

我是如何在不扩展的情况下将其传递到我的脚本中的?我用双引号传递了围绕它的论点.

试试这个命令看看我的意思:

ls -lt "~"
Run Code Online (Sandbox Code Playgroud)

这正是我所处的情况.我想要扩展代字号.换句话说,我应该用什么来代替魔法来使这两个命令相同:

ls -lt ~/abc/def/ghi
Run Code Online (Sandbox Code Playgroud)

ls -lt $(magic "~/abc/def/ghi")
Run Code Online (Sandbox Code Playgroud)

请注意〜/ abc/def/ghi可能存在也可能不存在.

bash scripting tilde tilde-expansion

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

如何在Perl中找到用户的主目录?

我需要检查用户主目录中的文件是否存在,因此请使用文件检查:

if ( -e "~/foo.txt" ) {
   print "yes, it exists!" ;
}
Run Code Online (Sandbox Code Playgroud)

即使在用户的主目录下有一个名为foo.txt的文件,Perl总是抱怨没有这样的文件或目录.当我用/ home/jimmy替换"〜"时(让我们说用户是jimmy)然后Perl做出正确的判决.

你能解释为什么"〜"不能在Perl中工作并告诉我Perl找到用户主目录的方式是什么?

perl tilde-expansion home-directory

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

路径中的Tilde不会扩展到主目录

说我有一个文件夹,名为Foo位于/home/user/(我/home/user也被代表~).

我想要一个变量

a="~/Foo" 然后呢

cd $a

我明白了 -bash: cd: ~/Foo: No such file or directory

但是,如果我这样做,cd ~/Foo它工作正常.有关如何使其工作的任何线索?

syntax bash tilde-expansion

19
推荐指数
2
解决办法
7575
查看次数

Swift:如何在路径String中扩展波形符

如何在Swift中使用波浪号扩展路径String?我有一个类似的字符串"~/Desktop",我想在NSFileManager方法中使用此路径,这需要将波浪号扩展为"/Users/<myuser>/Desktop".

(这有明显的问题说明问题并不存在,这应该是很容易玛丽萨.有些相似但不令人满意的问题是不能使路径在斯威夫特的文件,简单的方法来读取使用雨燕?本地文件,波浪线的基础在Objective-C的路径)

path nsfilemanager tilde-expansion home-directory swift

9
推荐指数
2
解决办法
5225
查看次数

Tilde扩展在Docker COPY命令中不起作用

我有一个Dockerfile,其中包含以下行:

COPY *.zip ~user1
Run Code Online (Sandbox Code Playgroud)

用户user1已经存在并且具有主目录(即/home/user1).当然,目标是将zip文件复制到该用户的主目录中,但上述结果是将zip文件复制到/~user1图像中字面上的文件中.

以下工作按预期工作:

COPY *.zip /home/user1
Run Code Online (Sandbox Code Playgroud)

这是Docker中的错误还是有我不知道的代字号扩展有关限制

在Mac上使用Docker 1.13.0.

tilde-expansion docker dockerfile

8
推荐指数
1
解决办法
2367
查看次数

我可以在 module.modulemap 中使用环境变量或波浪号吗?

我的module.modulemap文件看起来像这样:

module CompanyInternalSDK {
    header "~/Company/CompanyInternalSDK.framework/Headers/CompanyInternalSDK.h"
    export *
}
Run Code Online (Sandbox Code Playgroud)

但是,我收到此错误:

/Users/username/Path/To/Project/CompanyInternalSDK/module.modulemap:2:12: error: header '~/Company/CompanyInternalSDK.framework/Headers/CompanyInternalSDK.h' not found
    header "~/Company/CompanyInternalSDK.framework/Headers/CompanyInternalSDK.h"
           ^
Run Code Online (Sandbox Code Playgroud)

当我使用没有波浪号的绝对路径时,它编译得很好,但由于这将像这样分发给所有开发人员,我想使用波浪号。有什么办法可以使这项工作正常进行吗?


我还尝试在header字符串中使用环境变量,但这也不起作用:

module CompanyInternalSDK {
    header "${HOME}/Company/CompanyInternalSDK.framework/Headers/CompanyInternalSDK.h"
    export *
}
Run Code Online (Sandbox Code Playgroud)
/Users/username/Path/To/Project/CompanyInternalSDK/module.modulemap:2:12: error: header '${HOME}/Company/CompanyInternalSDK.framework/Headers/CompanyInternalSDK.h' not found
    header "${HOME}/Company/CompanyInternalSDK.framework/Headers/CompanyInternalSDK.h"
           ^
Run Code Online (Sandbox Code Playgroud)

module environment-variables tilde-expansion swift module-map

6
推荐指数
1
解决办法
590
查看次数

如何让Perl识别带有'〜'的路径?

可能重复:
如何在Perl中找到用户的主目录?

我正在运行Ubuntu.

每当我传递Perl脚本时,以~(例如~/Documents/file.txt)它开始的路径都找不到它.我必须通过规范路径(例如/home/dave/Documents/file.txt).

这是为什么?

我可以让Perl识别~路径吗?

UPDATE

所有建议的解决方案都包括更改脚本中的代码.我想要一个不会对脚本本身进行任何更改的解决方案(因为并非所有这些都是我的).也许是Bash的工作方式?

问题的更新版本发布在超级用户.

perl tilde-expansion home-directory

5
推荐指数
3
解决办法
3869
查看次数

当作为选项传递时,shell代码扩展不起作用

我发现波浪扩展不适用于以下情况:

$ set -x

$ ./print_arg.pl destdir=~/test
+ ./print_arg.pl 'destdir=/root/test'
destdir=/root/test

$ ./print_arg.pl dest-dir=~/test
+ ./print_arg.pl 'dest-dir=~/test'
dest-dir=~/test

$ ./print_arg.pl -destdir=~/test
+ ./print_arg.pl '-destdir=~/test'
dest-dir=~/test
Run Code Online (Sandbox Code Playgroud)

print_arg.pl的内容是

#!/usr/bin/perl
print $ARGV[0],"\n";
Run Code Online (Sandbox Code Playgroud)

根据Shell的处理顺序,壳牌将在"波浪扩张"之前分词.而且我注意到单词分裂实际上是不同的.结果不同的原因是什么?

shell tilde-expansion

5
推荐指数
1
解决办法
392
查看次数

波浪号“~”表达式在“R”中不起作用?

波浪号表达式在我的 RStudio 上不起作用!我正在使用 Windows 10 操作系统。

更新:仔细查看后(感谢 Dason)似乎“~”指向“用户/文档/”而不是“用户/”。有什么解决办法吗?

图片

有什么帮助吗?

r tilde-expansion

5
推荐指数
1
解决办法
5300
查看次数

是否有任何官方文档指定〜(波形符)解析为 Angular scss 导入路径中的node_modules/?

~当在 scss 导入路径中使用波形符 ( ) 时,它会node_modules/在 Angular 中扩展为。有没有任何官方文档说这是 Angular 或 webpack 的一个功能?

到目前为止,我在这个问题上发现的只是一些以前的 Angular 版本的错误报告,称它已损坏,还有一条评论说这是一个不应该依赖的实现细节

我希望执行ng eject并检查配置,但该命令不再可用。

如果有人可以向我指出一些官方文档,说明它是~的路径的简写node_modules/,或者指定该替换的源代码(例如配置文件),我将不胜感激。:)

基本上,我想弄清楚为什么它会起作用以及如何起作用。

import sass tilde-expansion webpack angular

5
推荐指数
1
解决办法
1583
查看次数