假设someuser有一个主目录/ home/someuser
NAME = SomeUser的
在bash中 - 我用什么表达式组合使用tilde(〜)和$ NAME来返回用户主目录?
HOMEDIRECTORY=~someuser
echo $HOMEDIRECTORY
/home/someuser
NAME=someuser
echo ~$NAME
~someuser
Run Code Online (Sandbox Code Playgroud)
有什么建议?
我尝试了以下简短示例,以了解我正在开展的更大程序中的错误.看起来QFile不支持主目录的unix(或shell)表示法:
#include <QFile>
#include <QDebug>
int main()
{
QFile f("~/.vimrc");
if (f.open(QIODevice::ReadOnly))
{
qDebug() << f.readAll();
f.close();
}
else
{
qDebug() << f.error();
}
}
Run Code Online (Sandbox Code Playgroud)
一旦我用我真正的主目录路径替换"〜",它就可以工作.有一个简单的解决方法 - 一些设置启用?或者我是否必须采用"丑陋"的方式并向QDir询问当前用户的主目录,并将其手动添加到每个路径?
附录:很明显,shell通常执行代字号扩展,因此程序永远不会看到.在unix shell中它仍然非常方便,我希望文件访问的Qt实现包含该扩展.
波浪号表达式在我的 RStudio 上不起作用!我正在使用 Windows 10 操作系统。
更新:仔细查看后(感谢 Dason)似乎“~”指向“用户/文档/”而不是“用户/”。有什么解决办法吗?

有什么帮助吗?
~当在 scss 导入路径中使用波形符 ( ) 时,它会node_modules/在 Angular 中扩展为。有没有任何官方文档说这是 Angular 或 webpack 的一个功能?
到目前为止,我在这个问题上发现的只是一些以前的 Angular 版本的错误报告,称它已损坏,还有一条评论说这是一个不应该依赖的实现细节。
我希望执行ng eject并检查配置,但该命令不再可用。
如果有人可以向我指出一些官方文档,说明它是~的路径的简写node_modules/,或者指定该替换的源代码(例如配置文件),我将不胜感激。:)
基本上,我想弄清楚为什么它会起作用以及如何起作用。
在Objective-C中,如何将基于波浪号的路径名转换为完整路径名?也就是说,我想转换~/sandbox为/Users/TheBobs/sandbox.
出于某种原因,Cygwin中的波形扩展在提示符下对我不起作用:
$ ls ~
ls: cannot access : No such file or directory
$ ls ~/bin
(lists /bin not $HOME/bin)
$ echo $HOME
/home/myusername
$ echo ~
$
Run Code Online (Sandbox Code Playgroud)
在最后一种情况下,(echo ~)没有输出(除了几个空行之外).
我已经set expand-tilde on在我的$HOME/.inputrc文件中设置了.还有其他我需要配置的东西吗?
我正在编写一个简单的bash脚本,并希望显示特定目录中的所有项目.我尝试过以下操作:
desktop="~/Desktop/testr/"
echo $desktop
echo `ls $desktop`
Run Code Online (Sandbox Code Playgroud)
但是我不断得到输出:
~/Desktop/testr/
ls: ~/Desktop/testr/: No such file or directory
Run Code Online (Sandbox Code Playgroud)
但是当我从终端运行ls时,我可以看到这些物品.我怀疑问题是~没有扩大,但我认为双引号会照顾到这一点.
谢谢你的帮助!
在我的系统上*
cd # move to home
mkdir tempdir
PATH="$PATH:~/tempdir" # put tempdir in path
touch tempdir/tempscript
echo -e '#!/bin/bash\necho h' > tempdir/tempscript # write script
chmod u+x tempdir/tempscript # make executable
tempscript # execute
Run Code Online (Sandbox Code Playgroud)
将找到脚本tempdir/tempscript并打印h。
然而,如果我们 echo $PATH,我们会看到~/tempdir它的末尾,所以它没有被扩展。这是我们期望发生的情况,因为我们在赋值周围加了双引号。
然而,我找不到任何关于为什么在评估 时会发生波形符扩展的文档$PATH。(请注意,PATH 变量中仍然包含~。)
这是可移植的行为吗?
* Mac OS X 带有 GNU bash 3.2
我正在尝试使用 string[] files = System.IO.Directory.GetFiles("~/Pictures/");在程序中的文件夹中搜索图片文件。这稍后将用于随机选择要显示在图像框中的图片。当它尝试查找 ~/Pictures 时出现错误,因为该方法正在查找 'C:\Program Files (x86)\Common Files\Microsoft Shared \DevServer\10.0\~\Pictures\'。反而。“~”不是要让它在程序目录中查找吗?如果在安装程序之前我不知道它将是什么,我如何使它在程序目录中查找?任何帮助将不胜感激!!
为什么第一次扩展不起作用,第二次扩展不起作用?
我知道代字号必须在引号之外扩展,但斜线也必须在外面,出乎意料.
#!/bin/bash
ls ~"/Documents/bashscripts/test.sh"
ls ~/"Documents/bashscripts/test.sh"
Run Code Online (Sandbox Code Playgroud) 请考虑以下Bash脚本:
function dosomething {
local fname="~/.bash_profile"
if [[ -f "$fname" ]]; then
echo "proceeding"
else
echo "skipping"
fi
}
dosomething
Run Code Online (Sandbox Code Playgroud)
虽然我知道〜/ .bash_profile存在,但我总是"跳过".为什么?
我正在尝试复制一个文件:〜/ .ssh /但每次我运行脚本时都会说
pi@raspberrypi:/etc/greenwich $ ./copybash.sh
cat: ~/.ssh/testfilegen2.log: No such file or directory
Run Code Online (Sandbox Code Playgroud)
copybash.sh
!/bin/bash
sourceFile="~/.ssh/testfilegen2.log"
targetFile="/etc/network/interfaces2"
sudo cat "$sourceFile" > "$targetFile"
sudo service networking restart
Run Code Online (Sandbox Code Playgroud)
有什么建议?
谢谢