可能这是一个非常愚蠢的问题,但是在尝试了所有内置的pathname -family 函数和cl-fad/pathname-utils包之后,我仍然无法弄清楚如何将相对路径转换为绝对路径(相对于 $PWD):
; let PWD be "/very/long/way"
(abspath "../road/home"); -> "/very/long/road/home"
Run Code Online (Sandbox Code Playgroud)
假设函数的abspath工作方式与 Python 中一样os.path.abspath()。
我通过谷歌教授找不到任何关于此的信息,所以我在这里.获取给定的路径名称并将其粘贴到Windows资源管理器中.我发现我的代码中的bug生成了带有额外''的路径后,我偶然发现了这个.在目录\分隔符之前的路径名中...
@"C:\\pathto.\file.ext"
Run Code Online (Sandbox Code Playgroud)
在代码中,.NET将在调用时接受路径File.Create并生成文件,但是在此路径中:
@"C:\\pathto\file.ext"
Run Code Online (Sandbox Code Playgroud)
复制C:\\pathto.\file.ext到Windows资源管理器的地址栏并观看"." 消失并带你去C:\\pathto\file.ext
这是.NET和Windows的正常行为它不会导致问题,因为'.' 在传递给文件操作时,.NET和Windows都将删除它.真正的问题是数据库中的所有文件都有一个带有'.\'的文件名,但是存在于没有'.\' File.Exists()的路径中......并且也可以工作,尽管路径不是'真实的'物理地点...
这里发生了什么?
我需要从JSON中提取一个子字符串。在下面的JSON文档中,我需要值的末尾。jq '.[].networkProfile.networkInterfaces[].id' 换句话说,我只A10NICvw4konls2vfbw-data需要传递给另一个命令即可。我似乎无法弄清楚如何使用grep拉子字符串。我似乎有正则表达式的例子,但没有成功。
[
{
"id": "/subscriptions/blah/resourceGroups/IPv6v2/providers/Microsoft.Compute/virtualMachines/A10VNAvw4konls2vfbw",
"instanceView": null,
"licenseType": null,
"location": "centralus",
"name": "A10VNAvw4konls2vfbw",
"networkProfile": {
"networkInterfaces": [
{
"id": "/subscriptions/blah/resourceGroups/IPv6v2/providers/Microsoft.Network/networkInterfaces/A10NICvw4konls2vfbw-data",
"resourceGroup": "IPv6v2"
}
]
}
}
]
Run Code Online (Sandbox Code Playgroud) 我需要知道如何获取路径名或dentry从struct file给定的索引节点。
我曾经使用从路径名file_open获取struct file但总是给出内核恐慌。我需要一种方法来将我的 inode 列表中的 inode 与路径名中的 inode 进行比较,或者比较磁盘中的所有 inode 以找到相应的路径名,然后与我的 inode 列表进行比较。
我正在开发一个项目,其中有一个动态确定的安装点,并提供了一组绝对路径来在目标卷上进行工作。由于这些文件尚不存在,因此我使用 Pathname 类来处理文件名操作。然而,当涉及到连接具有相同根的路径时,Pathname 似乎做了一些聪明的事情。我观察到以下行为:
p1 = Pathname.new('/foo/bar') # #<Pathname:/foo/bar>
p2 = Pathname.new('/baz/quux') # #<Pathname:/baz/quux>
p3 = p1 + p2 # #<Pathname:/baz/quux>
p4 = p1.join p2.relative_path_from(Pathname.new('/')) # #<Pathname:/foo/bar/baz/quux>
p5 = Pathname.new(p1.to_s.concat p2) # #<Pathname:/foo/bar/baz/quux>
Run Code Online (Sandbox Code Playgroud)
因此,使用 p4 和 p5,我能够获得我想要的行为,但结构有点做作。有没有更干净的方法来做到这一点?
我认为我的问题需要对背景进行一些解释。我的任务是创建一个基本服务器,它将在我的系统上发送客户请求的 HTML 文件。我被告知只需输入localhost:8080/index.html我的 Firefox 浏览器作为测试客户端来测试我的服务器。输入该行输入正常工作并打印出index.html. 为了安全起见,我应该进行测试以确保请求的文件在我当前的直接工作范围内,如果不是,我应该拒绝该请求。我已经设置了这样一个捕获,我想检查它。我想index.html再次使用我的文件,但是通过整个路径名又名
C:\Users\Gabrielle\Documents\NetBeansProjects\CS2 Assignment 5\src\index.html所以我在浏览器中输入
localhost:8080/C:\Users\Gabrielle\Documents\NetBeansProjects\CS2 Assignment 5\src\index.html
我得到一个错误,说文件不存在。然后我检查了它试图制作文件的内容以及它试图制作文件的内容,我得到了
C:%5CUsers%5C%5CGabreille%5C%5CDocuments%5C%5CNetBeansProjects%5C%5CCS2%20Assignment%205%5Cindex.html
这显然不是文件的名称。我只是错误地发送了文件名吗?如果有任何区别,我正在从 Windows 命令提示符运行该程序。下面是我的多线程客户端的代码和我的可运行对象的代码。如果您有任何问题或想要清楚一些,我将密切关注此线程。
import java.io.*;
import java.net.*;
public class WebServer {
public static void main(String[] args)
{
try{
ServerSocket ss = new ServerSocket(8080);
while(true){
Thread conn = new Thread(new ClientConnection(ss.accept()));
conn.start();
}
}
catch(IOException e)
{
e.printStackTrace();
}
}
}
Run Code Online (Sandbox Code Playgroud)
下面是实际内容
import java.io.*;
import java.net.*;
public class ClientConnection implements Runnable{
private Socket socket;
File requestedFileName;
String entireInput ="";
String …Run Code Online (Sandbox Code Playgroud) 我试图从网址获取当前文件名:
$currentFile = window.location.pathname.split("/").pop();
Run Code Online (Sandbox Code Playgroud)
如果完整路径是这样的话,这可以正常工作:
http://www.yoursite.com/folder/index.php
Run Code Online (Sandbox Code Playgroud)
它将返回index.php,index.cfm,index.html等.
但当网址是http://www.yoursite.com/folder/
我无法检索当前文件名,这可能通过js或jquery吗?
字符*和?用作路径名中的通配符。如何引用具有?实际字符之一的文件名?例如:
[18]> (wild-pathname-p #p"foo")
NIL
[19]> (wild-pathname-p #p"foo?")
T
那么引用文件名“foo?” 不能这样做。我试图用?反斜杠转义,但这没有用。\u3f我尝试使用or转为 unicode \u003f,但这不起作用。
如何引用名称中包含通配符的文件:如何探测、打开它等?
我有一个带有波浪号的目录名称(作为字符串):~/projects。
我想获取它的完整路径:/home/user/projects。我怎么做 ?
目标是将其传递给uiop:run-program,这似乎没有做正确的事情\xc2\xa9。
有了这个答案:如何将 (make-pathname :directory '(:absolute :home "directoryiwant") 翻译成绝对路径
\n\n(merge-pathnames \n (make-pathname\n :directory \'(:relative "~/projects"))\n (user-homedir-pathname))\n#P"/home/me/~/projects/"\nRun Code Online (Sandbox Code Playgroud)\n\n=> 错误
\n\n谢谢。
\n\n编辑我将分享更多背景信息。
\n\n我想通过运行一个程序uiop:launch-program。我有一个用户定义的目录列表,例如~/projects. 使用它来创建./~/projects目录而不是/home/user/projects.
truename如果目录不存在则不起作用。
在 SBCL 上,(namestring "~/doesntexist")还返回其波形符。
merge-pathnames没用,仍然是波浪号问题。
使用ensure-directories-exist此结果创建了一个名为 的目录~。
给出答案后,我别无选择,只能调整逻辑来扩展我们实际想要存在的目录的目录名称。
\n\n;; Create a directory\n;; Ensure its name …Run Code Online (Sandbox Code Playgroud)