似乎对于许多在符号链接上操作的基本功能,默认使用物理路径。但是, cd 工作正常。当进入符号链接时, cd 会记住我来自哪里,因此它使用符号链接的逻辑地址(请参阅相关文章以获取示例:符号链接和 cd)。
像 ls 这样的函数只是部分地以这种方式工作。如果我通过点击选项卡 ($ ls ../ {tab}) 列出目录内容,它将列出符号链接所在目录的内容,但如果执行命令 ($ ls ../ {enter}) 目录内容列表来自物理路径。有没有办法让 ls、mv、rm 等命令像 cd 一样操作并记住符号链接的逻辑路径?
感谢您的任何建议。
有没有办法将文件从一个目录移动到另一个目录,然后在一个命令中 cd 进入后者?类似mv /a/file /another/dir && cd _但没有第二次输入目录路径的东西。
我有这个脚本:
echo $HOME
cd $HOME
cd /
cd /usr/local/src/
Run Code Online (Sandbox Code Playgroud)
当我像这样运行时
. script.sh
Run Code Online (Sandbox Code Playgroud)
我得到这个输出:
/home/user
: No such file or directory
: No such file or directory
: No such file or directory
Run Code Online (Sandbox Code Playgroud)
如果我正常运行(我#!/bin/bash在第一行之前添加)
sh script.sh
Run Code Online (Sandbox Code Playgroud)
我得到这个输出:
: not found.sh: 2: script.sh
/home/user
script.sh: 3: Can't cd to /home/user
script.sh: 4: Can't cd to /
script.sh: 5: Can't cd to /usr/local/src/
Run Code Online (Sandbox Code Playgroud)
脚本$HOME每次都从目录运行。如果我从 shell 一个一个地运行每个命令,它会毫无问题地执行(cd $HOME从内部调用$HOME根本不会改变目录)。
我必须做什么才能使这项工作发挥作用?
我正在尝试创建一个方便的别名来更改目录,然后在该目录中启动节点服务器。我大部分时间都在工作,只有一个小问题我无法弄清楚。
当我将别名设置为仅更改目录(在我的~/.bashrc文件中)时,我得到了预期的行为:
alias ta='cd /Users/scotty/Develop/Meteor/task-assist'
Run Code Online (Sandbox Code Playgroud)
我所说的预期行为是,当我$ ta在终端中运行时,它不仅会更改目录,而且我还可以在终端中打开新选项卡,并且该目录会转移到新选项卡。
但是由于某种原因,当我在该别名上添加一个额外的命令来启动一个节点服务器时,$ ta再次运行后,当前目录不会转移到新的终端选项卡(新选项卡只是在 root 下打开)。目录更改并且服务器启动,但就像更改的目录实际上并未在终端中设置一样。当我杀死服务器时ctrl +c,只有在终端中更新目录。我已经尝试了别名和函数来让它工作,但没有成功:
### meteor is the command that starts the server
alias ta='cd /Users/scotty/Develop/Meteor/task-assist && meteor'
### Also tried a function
ta(){
cd /Users/scotty/Develop/Meteor/task-assist
meteor
}
Run Code Online (Sandbox Code Playgroud)
几乎就像更改目录和运行meteor 需要两个单独的命令一样,以便使用当前工作目录打开新的终端选项卡。只是重申并进一步澄清,当我在终端中运行$ta然后按cmd + t打开一个新选项卡时,我希望新选项卡的当前目录为:/Users/scotty/Develop/Meteor/task-assist。
关于如何使用别名实现这一点的任何想法?
我有一个文件夹中chmod 000有很多不同的东西,它的权限,我得到的方式是开始bash在sudo运行sudo bash。
为什么我做不到&&?我想cd用这样的一个命令进入目录:
sudo bash && cd desktop
Run Code Online (Sandbox Code Playgroud)
当我运行这个时,我仍然在~默认目录中。
我必须运行它
sudo bash
cd desktop
Run Code Online (Sandbox Code Playgroud)
另外,桌面不是文件夹,它是桌面的子文件夹,但没关系。反正都是一样的。
在我们的服务器上,我们有几个重复的文件夹结构用于测试、暂存和生产。除了微小的变化之外,所有三个之间的文件夹结构通常是相同的。
当我在开发 WordPress 插件时,我深入开发文件夹结构(例如~/dev/com/wp-content/plugins/myplugin)。我知道那是~/staging/com/wp-content/plugins/myplugin存在的。
如果我当前的工作目录是~/dev/com/wp-content/plugins/myplugin,我是否可以在~/staging/com/wp-content/plugins/myplugin 不输入整个目录结构的情况下轻松切换到?
我想输入类似, 或者甚至让命令尝试使用我当前的目录路径遍历新目录。显然,如果新文件夹不包含正确的结构,就会出错。cdx~/stagingcdx../../../../../staging
我是否一直在输入整个目录结构?或者,还有更好的方法?
我正在寻找一种简单的方法来导航到跨越多个硬盘驱动器的目录,并希望在终端中设置与快捷方式等效的内容。
在 Windows 中,我将使用mklink并创建符号链接来跳转到目录,或者创建连接以将位置附加到当前文件路径的末尾。
由于这实际上只是关于导航,因此它也不需要是链接或任何东西,也许我可以设置一些环境变量以便我可以cd $myDir(最好)。
这样的事情是可能的,还是我真的需要更好地学习我的目录?
Drectories包含.和..它们硬链接到当前和父目录。
那么 shell 如何知道例如在提示中当前目录在 中被称为“a” cd a/path/..?它有专门的外壳吗?
否则从它的角度来看,是不是进入了一个名为 的目录..,而不是知道这个目录也是上面的目录?它怎么知道名字的?
背景
我在 VirtualBox 中使用 tmux 2.0、Ubuntu 14.04.2 LTS。
为了让 tmux 使用与当前窗口相同的路径打开新窗口,我将此行添加到我的~/.tmux.conf文件中:
bind c new-window -c "#{pane_current_path}"
Run Code Online (Sandbox Code Playgroud)
请注意,在 tmux 中,如果我通过 symlinkcd从家到子目录,然后检查并得到:pwdpwd -P
~$ cd pythons
~/pythons$ # An awesome prompt
~/pythons$ pwd # According to "man pwd" this shows the "logical" path
/home/qiime/pythons
~/pythons$ pwd -P # and this shows the "physical" path
/media/sf_Google_Drive/Home/Programs/Pythons
Run Code Online (Sandbox Code Playgroud)
问题是
如果我在新的 bash 提示中打开一个新的tmux 窗口,则~/pythons该窗口将采用物理路径:
/media/sf_Google_Drive/Home/Programs/Pythons$ # Not an awesome prompt
Run Code Online (Sandbox Code Playgroud)
问:是的,它打开到了正确的 …
我正在做一些我经常在系统文件树中彼此远离的两个目录之间切换的事情。
无论如何,我是否可以为每个名称分配某种短名称以与cd命令一起使用,以便我可以键入cd directoryA,cd directoryB例如,而不是重复键入cd C:/A/Really/Long/File/Path/Name/Makes/My/Fingers/Hurt?
cd-command ×10
bash ×6
shell ×4
alias ×2
directory ×2
symlink ×2
command-line ×1
cp ×1
ls ×1
rename ×1
shell-script ×1
sudo ×1
tmux ×1