有一个(单个,不需要批处理文件系统处理)符号链接,使用什么命令行将其转换为指向同一文件的硬链接?
似乎对于许多在符号链接上操作的基本功能,默认使用物理路径。但是, cd 工作正常。当进入符号链接时, cd 会记住我来自哪里,因此它使用符号链接的逻辑地址(请参阅相关文章以获取示例:符号链接和 cd)。
像 ls 这样的函数只是部分地以这种方式工作。如果我通过点击选项卡 ($ ls ../ {tab}) 列出目录内容,它将列出符号链接所在目录的内容,但如果执行命令 ($ ls ../ {enter}) 目录内容列表来自物理路径。有没有办法让 ls、mv、rm 等命令像 cd 一样操作并记住符号链接的逻辑路径?
感谢您的任何建议。
所以我在我的远程文件服务器(处于另一种状态)上做了一个递归的 scp,它在我的远程 web 目录上创建了一个无限循环的链接......
http://www.linuxquestions.org/questions/linux-general-1/recursive-scp-wo-following-links-658857/说我可以尝试创建一个巨大的 tar 文件。不过这有一个问题——我在办公室的一台 Linux 机器上运行递归 scp,我正在将文件全部复制到我的外部硬盘驱动器,它是 FAT32 格式(因为我需要一些可以通过UNIX 和 Windows)。FAT32 不支持大文件。所以我必须尝试不同的东西。
还有一个 rsync 选项,但我办公室的 Linux 机器非常原始(它是 igel),所以它没有 rsync ......
在我的 OSX 10.9 机器上使用自制软件安装 SWI-Prolog 时,我遇到了一个奇怪的问题。我正在尝试调试它以找出它是谁的错误(SWI-Prolog 的、自制软件的或 OSX 的),所以我可以适当地报告它并修复它。
将swipl
在我的道路是/usr/local/bin/swipl
其符号链接到/usr/local/Cellar/swi-prolog/6.2.3/bin/swipl
该符号链接/usr/local/Cellar/swi-prolog/6.2.3/lib/swipl-6.2.3/bin/x86_64-darwin13.0.0/swipl
。
% which swipl
/usr/local/bin/swipl
% find /usr/local -name swipl -exec ls -l {} \;
lrwxr-xr-x 1 rampion admin 36 Oct 23 20:54 /usr/local/bin/swipl -> ../Cellar/swi-prolog/6.2.3/bin/swipl
lrwxr-xr-x 1 rampion admin 48 Oct 23 20:54 /usr/local/Cellar/swi-prolog/6.2.3/bin/swipl -> ../lib/swipl-6.2.3/bin/x86_64-darwin13.0.0/swipl
-r-xr-xr-x 1 rampion admin 8760 Oct 23 20:54 /usr/local/Cellar/swi-prolog/6.2.3/lib/swipl-6.2.3/bin/x86_64-darwin13.0.0/swipl
Run Code Online (Sandbox Code Playgroud)
我可以在/usr/local/Cellar/swi-prolog/6.2.3/lib/swipl-6.2.3/bin/x86_64-darwin13.0.0/swipl
以下位置运行实际的可执行文件:
% /usr/local/Cellar/swi-prolog/6.2.3/lib/swipl-6.2.3/bin/x86_64-darwin13.0.0/swipl
Welcome to SWI-Prolog (Multi-threaded, 64 bits, Version 6.2.3)
...
Run Code Online (Sandbox Code Playgroud)
我可以在/usr/local/Cellar/swi-prolog/6.2.3/bin/swipl
以下位置使用符号链接: …
我有一个包含不同音乐片段的外部驱动器。该驱动器是 vfat 格式的驱动器,可以与任意设备一起使用。
在设备上,我存储了来自不同艺术家的音乐,并根据他们的名字进行了排序。但是,我想将单个音乐作品也分类到其他文件夹中,而不是复制它们。因此,例如,标题“Addicted to you”应该可以从文件夹“Avicii”中访问,但也可以从名为“dance”的不同文件夹访问。
有没有办法在磁盘上创建某种链接?我曾尝试这样做,ln
但出现错误:
ln: failed to create symbolic link
ln: failed to create hard link
Run Code Online (Sandbox Code Playgroud)
还有其他方法可以链接这些文件吗?并确保它适用于所有 USB 硬件(收音机、电视、媒体设备、汽车收音机等)?
我有一个运行符号链接的 PHP 脚本。
要确认它是哪个用户:
file_put_contents("testFile", "test");
$user = fileowner("testFile");
unlink("testFile");
echo "running as user '" . $user . "'";
var_dump( exec('whoami'));
Run Code Online (Sandbox Code Playgroud)
就这样跑...
$ php script.php
Run Code Online (Sandbox Code Playgroud)
正确运行所有符号链接,输出为:
running as user '999'string(5) "admin"
Run Code Online (Sandbox Code Playgroud)
通过 shell 脚本运行:
#!/bin/sh
php /path/to/script.php
Run Code Online (Sandbox Code Playgroud)
给出以下输出并且不起作用:
PHP 警告:symlink(): 权限被拒绝在第 8 行的 /path/to/script.php 中以用户 '999'string(5) "admin" 身份运行
我不确定两者之间的区别是什么,因为它们运行的用户是相同的。
关于如何使它们都具有正确的符号链接权限的任何建议?
cat /proc/version
Run Code Online (Sandbox Code Playgroud)
给出:
Linux version 2.6.39 (root@cross-builder) (gcc version 4.6.3 (x86 32-bit toolchain - ASUSTOR Inc.) ) #1 SMP PREEMPT Thu Oct 31 21:27:37 CST 2013
Run Code Online (Sandbox Code Playgroud)
这是我可以为任何类型的发布信息生成的唯一输出。
所有代码:
$files = …
Run Code Online (Sandbox Code Playgroud) 我正在尝试将参数组合到ls
命令中以列出目录内容。我基本上想要实现的是列出取消引用所有链接的目录,但明确显示列出的项目是一个链接。我尝试组合--dereference
和--classify
选项,但没有显示链接符号 ( @
),我得到了 a,*
因为链接针对的是一个可执行文件。
关于如何获得这样的结果的任何想法?我对ls
命令以外的其他选择持开放态度。
编辑:
我实际上使用ls
命令中的其他选项。我当前的命令及其选项如下:
ls -ogq -LB --group-directories-first --time-style=long-iso
Run Code Online (Sandbox Code Playgroud)
我打算在我正在构建的应用程序中解析输出,并且不能使用带有箭头 ( ->
)的默认链接输出。目录中的其他项目(例如文件夹和文件)也必须列出。
编辑(2):
澄清一下,我正在开发一个 Java 应用程序,它使用 SSH2 API 连接到服务器并列出目录。然后,使用 jsTree jQuery 插件将列表中的结果用于填充树。目前我上面引用的命令给了我以下输出:
felipe@simba:/mnt/drive$ ls -ogq --group-directories-first --time-style=long-iso
total 12
drwxr-sr-x 2 4096 2014-06-11 18:04 folder1
drwxr-sr-x 6 4096 2014-06-27 19:35 folder2
dr-Sr-s-wt 2 4096 2014-06-27 13:51 folderWithPermissions
-rw-r--r-- 1 0 2014-06-30 10:42 file.txt
lrwxrwxrwx 1 49 2014-06-30 11:36 linkTeste -> folder2/dir/otherfile.txt
Run Code Online (Sandbox Code Playgroud)
通过应用正则表达式,我可以通过查看权限来识别文件夹、文件或链接是什么。但是当我有一个链接时,我只需要列出链接名称,而不是name …
我有一大堆符号链接的/home
在文件和子目录/foo
。我想定位新目录/bar
.
我的方法是查看所有无效的符号链接并验证它们是否指向/foo
. 然后我做了以下事情:
sudo find . -type l -! -exec test -e {} \; -exec sh -c '\
old_link_target=$(readlink "$0"); \
new_link_target=${old_link_target//foo/bar}; \
ln -snf $new_link_target $0' {} \;
Run Code Online (Sandbox Code Playgroud)
但是,我想要一种更精确的方法,它不包括将目光放在无效符号链接上的初始步骤。所以,为了这个问题,假设/foo
仍然存在,所以需要另一种方法。
我正在寻找一种简单的方法来导航到跨越多个硬盘驱动器的目录,并希望在终端中设置与快捷方式等效的内容。
在 Windows 中,我将使用mklink
并创建符号链接来跳转到目录,或者创建连接以将位置附加到当前文件路径的末尾。
由于这实际上只是关于导航,因此它也不需要是链接或任何东西,也许我可以设置一些环境变量以便我可以cd $myDir
(最好)。
这样的事情是可能的,还是我真的需要更好地学习我的目录?
符号链接 libssl.so.6 出现在 中/usr/lib/x86_64-linux-gnu
,我运行了ldconfig
但我仍然收到此错误:
error while loading shared libraries: libssl.so.6: cannot open shared object file: No such file or directory
Run Code Online (Sandbox Code Playgroud)
是权限问题还是链接定义不正确?
在二进制文件上运行 ldd 后更新:
linux-vdso.so.1 => (0x00007fff1efe2000)
libssl.so.6 => not found
libcrypto.so.6 => not found
libuuid.so.1 => /lib/x86_64-linux-gnu/libuuid.so.1 (0x00007feb2a3c4000)
librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007feb2a1bb000)
libcrypt.so.1 => /lib/x86_64-linux-gnu/libcrypt.so.1 (0x00007feb29f82000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007feb29d65000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007feb29b60000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007feb297a1000)
/lib64/ld-linux-x86-64.so.2 (0x00007feb2b159000)
Run Code Online (Sandbox Code Playgroud) symlink ×10
command-line ×3
cd-command ×2
hard-link ×2
ls ×2
shell ×2
alias ×1
bash ×1
cp ×1
files ×1
filesystems ×1
find ×1
homebrew ×1
ln ×1
osx ×1
permissions ×1
php ×1
scp ×1
ubuntu ×1
vfat ×1