我如何使用basename()和dirname()?的GNU C库版本.
如果你
#include <libgen.h>
Run Code Online (Sandbox Code Playgroud)
对于dirname您已经获得了POSIX,而不是GNU的版本basename().(即使你
#define _GNU_SOURCE
Run Code Online (Sandbox Code Playgroud)
据我所知,在C中没有条件导入.是否有gcc特定技巧?
函数dirname()和basename()将以null结尾的路径名字符串分解为目录和文件名组件.在通常情况下,dirname()返回字符串,但不包括最后的'/',basename()返回最后的'/'后面的组件.尾随'/'字符不计入路径名的一部分.
后来,你有这个小桌子:
path dirname basename
"/usr/lib" "/usr" "lib"
"/usr/" "/" "usr" // wat?
"usr" "." "usr"
"/" "/" "/"
"." "." "."
".." "." ".."
Run Code Online (Sandbox Code Playgroud)
为什么要dirname( "/usr/")回来"/"而不是"/usr"?
手册中的句子告诉我,我应该得到/usr结果.
我在虚拟程序中测试了实际结果,它的行为就像手册所说的那样.
#include <libgen.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, char const *argv[])
{
const char *mydir="/usr/";
char *dummy = strdup( mydir );
char *dummy2 = strdup( mydir );
char *dname = dirname( dummy );
char …Run Code Online (Sandbox Code Playgroud) 我正在使用具有以下代码的php库: require_once dirname(__FILE__) . '/config.php';
从我读过的,dirname(__FILE__)指向当前目录.
那么写作会不会更容易require_once 'config.php';?
我唯一的猜测是包括dirname(__FILE__)确保require_once函数使用绝对路径而不是相对路径.
好吧,我正在学习 Mern Stack 教程,导师写了一些代码行,但并没有很好地解释它们。这是代码:
const path = require('path')
const {fileURLToPath} = require('url')
const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);
app.use("/assets", express.static(path.join(__dirname, "public/assets")));
Run Code Online (Sandbox Code Playgroud)
现在我并不愚蠢,也不是一个糟糕的程序员。尽管我并没有真正解释代码的作用,但我有一个很好的主意。问题是当我运行数据库时,出现以下错误:
SyntaxError: Identifier '__filename' has already been declared
Run Code Online (Sandbox Code Playgroud)
这很疯狂,因为我没有在代码中的其他任何地方使用“__filename”。当我尝试将 '__filename' 更改为 'filename' 时,出现此错误:
SyntaxError: Cannot use 'import.meta' outside a module
Run Code Online (Sandbox Code Playgroud)
我很困惑。请有人告诉我代码的作用以及为什么我会收到这些错误以及如何修复这些错误。
正如我在标题中已经提到的,我正在寻找一个JS函数来获得与我使用这个PHP代码相同的结果:
dirname(dirname(__FILE__))
Run Code Online (Sandbox Code Playgroud)
提前致谢!
我正在使用libgen.h中的dirname从文件名的路径获取目录路径.
这是它的签名:
char * dirname (char *path)
Run Code Online (Sandbox Code Playgroud)
在32位机器上编译或使用-m32与gcc编译时,一切正常.
我的代码看起来像这样:
char* path = "/path/to/my/file.txt";
char* path_cpy = strdup(path);
const char* dir = (const char*)dirname(path_cpy);
Run Code Online (Sandbox Code Playgroud)
如果我在64位机器上编译,我会收到警告:
"warning: cast to pointer from integer of different size"
Run Code Online (Sandbox Code Playgroud)
这将修复警告,但在运行时崩溃:
const char* dir = (const char*)(uintptr_t)dirname(path_cpy);
Run Code Online (Sandbox Code Playgroud)
我之前从未尝试过编译32/64位,有没有办法解决这个问题?
看看Joomla的代码我看到在索引的第一行,它定义了安装的基本路径
dirname(__FILE__)
Run Code Online (Sandbox Code Playgroud)
这是一个网站可能存在风险的字体,我的意思是如果一个不受控制的错误消息显示Joomla目录的内部路径,因为例如一个失败的include,它可以用来对网站进行某种攻击?如果是,使用此功能是否方便?欢迎任何想法.
谢谢
就这样。他们只是不会为我工作。这次我做错了什么?
# nquo is: /home/bryan/renametest/C D/y z
# script:
dirn=dirname "$nquo"
echo "dirn $dirn"
bnam=basename "$nquo"
echo "bnam $bnam"
Run Code Online (Sandbox Code Playgroud)
运行结果:
./script3.sh: 208: /home/bryan/renametest/C D/y z: Permission denied
dirn
./script3.sh: 208: /home/bryan/renametest/C D/y z: Permission denied
bnam
Run Code Online (Sandbox Code Playgroud) 我有一个为在 WordPress 主题或插件中使用而编写的 PHP 类,它在类初始化时使用enqueue_script和加载一些 JS 和 CSS。enqueue_style
我需要动态获取正在加载类的目录的 URL(不是绝对路径),以便我可以将此 URL 传递给enqueue_script资产enqueue_style加载。
目录结构\n \nwp-content\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 themes\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 theme_name\n\xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 my_class\n\xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 my_class.php\n\xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 js (need URL)\n\xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 file.js*\n\xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 css\n\xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 file.css*\n
\n是否有一个 PHP 函数,其工作原理类似于[dirname][1]但返回文件 URL 而不是路径?
编辑
\n该my_class目录应该能够放置在主题或插件中的任何位置,因此我不能依赖 WordPress 核心功能来获取类目录的 URL。
我正在学习Go,我不知道我是否错过了什么,但在搜索之后,我想知道:NodeJS中的dirname在Go中是否具有等价物?如何在Go代码中获取当前目录,或者我必须实现一个?
根据dirname --help,命令dirname /usr/bin/sort 将输出/usr/bin
所以我尝试了这个:
1 #!/bin/bash
2
3 rawPath="${1}"
4 trimmed=dirname $rawPath
5 echo $trimmed
Run Code Online (Sandbox Code Playgroud)
并运行脚本:
bash ./trimPath.sh /files/data/swx_i/raw/2020/03
Run Code Online (Sandbox Code Playgroud)
输出:
./trimPath.sh: line 5: /files/data/swx_i/raw/2020/03: is a directory
Run Code Online (Sandbox Code Playgroud)
是因为我将路径存储在变量中还是其他原因?
GNU bash,版本 4.1.2(2)-发布 (x86_64-redhat-linux-gnu)
我是 NodeJS 和 webpack 的新手。
我正在关注 webpack 的教程,何时必须创建 webpack.config.js 并运行webpack -c webpack.config.js它返回:
webpack -c webpack.config.js
/home/arma/bin/nodejs/webpack.config.js:15
root: path.join(__diranme, './src'),
^
ReferenceError: __diranme is not defined
at Object.<anonymous> (/home/arma/bin/nodejs/webpack.config.js:15:25)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Module.require (module.js:364:17)
at require (module.js:380:17)
at module.exports (/usr/lib/node_modules/webpack/bin/convert-argv.js:80:13)
at Object.<anonymous> (/usr/lib/node_modules/webpack/bin/webpack.js:39:40)
at Module._compile (module.js:456:26)
Run Code Online (Sandbox Code Playgroud)
我的 webpack.config.js:
var path = require('path');
module.exports = {
context: __dirname,
entry: [
'./src/index.js',
],
output: {
path: path.join(__dirname, 'build'),
filename: 'output.js',
publicPath: …Run Code Online (Sandbox Code Playgroud)