我发现自己需要经常在我的主文件夹中的几个目录中跳来跳去,并且厌倦了编写它们。我想要一种更快的方法,这在传统上是一个符号链接。
但是,我不想用几十个符号链接弄乱我的主目录。我可以创建一些~/links/目录和杂波它与符号链接,但它仍然是丑陋的。此外,我可能想创建每天都会改变的符号链接(在 .bashrc 中定义)以跳转到当前目录。
有没有办法有效地为符号链接设置别名,创建一些将被识别为快速导航链接的东西,但当我执行ls我的主目录时实际上不会出现,并且不会持续到当前会话之后?
我遇到了一个 Linux 命令,builtin cd.
命令builtin cd和之间有什么区别cd?
事实上,我对差异做了一些研究,但我找不到对此的显着和重要的解释。
光盘~
做同样的事情
cd $HOME
Run Code Online (Sandbox Code Playgroud)
这也与
cd /home/tandu
Run Code Online (Sandbox Code Playgroud)
然而,
cd ~not-tandu
Run Code Online (Sandbox Code Playgroud)
更改为 /home/not-tandu
这纯粹是一个语法选择吗?内核(或cd可执行文件)是如何处理的?~如果省略其他所有内容,是否有添加斜杠的特殊情况?也就是说,~/和~换到同一个目录,不过~a是一个目录上去。对于您更改到的任何其他目录,不能说同样的话。
我有三个文件夹叫做ProjectA,ProjectB和ProjectC. 当我tab-completecd到cd Project并按Enter,它选择ProjectC。我发现其他类似案例也是如此;它默认为词典顺序的最后一个(但这也可能是最近更改/添加的)。
这是预期的默认行为cd,还是我在这里不小心设置了一些东西?
我正在使用 bash 4.3 运行 OSX 10.10.3。
当我在 bash 的目录中并按 时cd Space Tab,它会显示目录中的所有内容作为可能。( Show all 1000 possibilities?) 当我在一个有很多常规文件和相对较少目录的目录中时,这真的很麻烦。
那么,是否可以选择cd仅包含目录的自动完成功能?
我知道我可以通过执行获得目录中的目录列表
ls -d */
但我不确定如何从那里开始。
我正在使用CentOS 6.6 Final。
我试图了解..(双点)的性质。它似乎指向不同的目标,具体取决于您访问它的方式。
例子:-
/outer/
middle/
inner/
inner --> ./middle/inner/
Run Code Online (Sandbox Code Playgroud)
现在,/outer/middle/inner/..导致/outer/middle/,但如果我通过符号链接访问它,则/outer/inner/..导致/outer/. ..这里似乎有两种不同。
究竟是..什么?符号链接?硬链接?还是根据访问目录时的路径动态生成的?或者我对符号链接的理解是错误的。
编辑:
其他相关观察
/outer/
middle/
file
inner/
f --> ./../file
inner --> ./middle/inner/
Run Code Online (Sandbox Code Playgroud)
现在,如果我尝试通过/outer/inner/f它访问文件。但它不应该,因为/outer/inner/../file它不指向文件。该文件在/outer/middle/inner/... 这似乎与上面的行为相矛盾!?
假设有一个我无权访问的目录。显然是sudo cd foo行不通的,因为cd在每个 shell 中都内置了一个 shell。
到目前为止,我一直在使用sudo bash(是的,我知道有更好的方法)来获取 root 提示。然后,我就可以cd进入该目录四处看看了。
有一个更好的方法吗?
我想构建一个简短的函数来执行以下操作。假设我将文件“file.tex”移动到我的文档目录:
mv file.tex ~/Documents
Run Code Online (Sandbox Code Playgroud)
然后,我cd想到那个目录:
cd ~/Documents
Run Code Online (Sandbox Code Playgroud)
我想将其推广到任何目录,以便我可以这样做:
mv file.tex ~/Documents
follow
Run Code Online (Sandbox Code Playgroud)
并让follow命令从上一个命令读取目标,然后相应地执行。对于一个简单的目录,这不会节省很多时间,但是在处理嵌套目录时,能够只使用
mv file.tex ~/Documents/folder1/subfolder1
follow
Run Code Online (Sandbox Code Playgroud)
我认为这会相对简单,我可以做这样的事情:
follow()
{
place=`history 2 | sed -n '1p;1q' | rev | cut -d ' ' -f1 | rev`
cd $place
}
Run Code Online (Sandbox Code Playgroud)
但这似乎不起作用。如果我 echo $place,我确实得到了所需的字符串(我正在用 测试它~/Documents),但最后一个命令返回
No such file or directory
Run Code Online (Sandbox Code Playgroud)
该目录肯定存在。我不知所措。你能帮我吗?
抱歉,如果这在其他地方有答案,我不知道如何搜索我的问题。
我在 redhat linux HPC 服务器上运行了一些模拟,我处理文件夹结构以保存输出的代码有一个不幸的错误。我创建文件夹的matlab代码是:
folder = [sp.saveLocation, 'run_', sp.run_number, '/'];
Run Code Online (Sandbox Code Playgroud)
其中sp.run_number是一个整数。我忘了将它转换为字符串,但由于某种原因运行mkdir(folder);(在 matlab 中)仍然成功。事实上,模拟运行顺利,数据被保存到匹配的目录中。
现在,当查询/打印文件夹结构时,我会遇到以下情况:
run_ run_^A/ run_^B/ run_^C/ run_^D/ run_^E/ run_^F/ run_^G/ run_^H/ run_^I/ls: run_ run_? run_? run_? run_? run_? run_? run_? run_? run_? run_?。--progress选项显示:run_\#003/等(我假设)与sp.run_number填充为三位数的整数匹配的数字,所以第 10 次运行是run_\#010/run_ run_ run_ run_ run_ run_ run_ run_ run_ run_?ls | LC_ALL=C sed …cd-command ×10
bash ×5
directory ×2
ls ×2
shell ×2
symlink ×2
autocomplete ×1
filenames ×1
filesystems ×1
home ×1
mkdir ×1
shell-script ×1
sudo ×1