标签: cd-command

为什么不能从符号链接目录(没有这样的文件或目录)列出相对于 .. 的文件/目录?

我有一个/usr/tomcat6/logs链接到/var/log/tomcat6.

当我改变了目录/usr/tomcat6/logs,并尝试ls使用相对路径名的文件../conf/Catalina/localhost中,没有这样的文件或目录错误发生。但是,cd ../conf/Catalina/localhost有效。

请参阅以下内容:

[root@fedora ~]# ll /usr/tomcat*
lrwxrwxrwx. 1 root root 21 Jun 17 15:00 /usr/tomcat6 -> apache-tomcat-6.0.32/
lrwxrwxrwx. 1 root root 21 Jun 17 13:03 /usr/tomcat7 -> apache-tomcat-7.0.16/
[root@fedora ~]# cd /usr/tomcat6
[root@fedora tomcat6]# ll logs
lrwxrwxrwx. 1 root root 16 Jun 17 14:51 logs -> /var/log/tomcat6
[root@fedora tomcat6]# cd logs
[root@fedora logs]# cd ../conf/Catalina/localhost
[root@fedora localhost]# pwd
/usr/tomcat6/conf/Catalina/localhost
[root@fedora localhost]# cd /usr/tomcat6/logs
[root@fedora …
Run Code Online (Sandbox Code Playgroud)

ls directory cd-command symlink

3
推荐指数
1
解决办法
3688
查看次数

Perl 脚本,在终端上执行 cd

更改当前目录的脚本 (cd, pwd) 中 ,展示了如何运行更改终端目录的 bash 脚本。

但是我如何运行一个 perl 脚本来运行一个改变终端目录的 bash 脚本?

bash terminal cd-command perl

3
推荐指数
2
解决办法
8465
查看次数

快速访问后台作业的工作目录

重现我正在寻找的东西的最小努力如下

/$ sleep 1h &
[1] 6564
/$ cd
~$ jobs
[1]+  Running                 sleep 1h &  (wd: /)
Run Code Online (Sandbox Code Playgroud)

当我jobs用来管理我的后台进程时,工作目录(wd)与当前目录不同时也会显示出来。

有没有一种简单的方法可以轻松切换到这个显示的工作目录?我正在使用 bash 3.2。

我不是在寻找使用awk或类似工具的包装函数,而是在寻找内置解决方案的 shell。

bash directory cd-command jobs background-process

3
推荐指数
1
解决办法
2168
查看次数

如何 cd 打开/自动完成以特定短语结尾的文件夹

我有一个文件夹,其中包含如下命名的子文件夹:

1122334 important things
1122335 less important things
1122336 notes
1122337 pictures of kittens
Run Code Online (Sandbox Code Playgroud)

等等

开头的数字是日期代码。如果由我决定,我会将日期代码放在最后,但事实并非如此。

在 bash 中,我想做这样的事情:

$ cd *pictu<tab>
Run Code Online (Sandbox Code Playgroud)

得到这个

$ cd 1122337\ pictures\ of\ kittens/
Run Code Online (Sandbox Code Playgroud)

有没有一种简单的方法可以做到这一点,或者我可以放入一些东西.bashrc来使这成为可能?

bash cd-command autocomplete wildcards

3
推荐指数
1
解决办法
2352
查看次数

脚本来记住目录并始终 cd 到它而不是根目录

如何编写脚本以更改到给定目录,但还要记住它,以便在执行 cd 时它始终更改到该目录?

#!/bin/bash
setdir() {
    cd $1
    # remember the directory we are changing to here so whenever we do cd we go back to this set dir
}

setdir "$1"
Run Code Online (Sandbox Code Playgroud)

bash cd-command shell-script

3
推荐指数
1
解决办法
252
查看次数

如何在 zsh 中动态声明一些别名?

我想声明一些快捷命令来在我的各种编码项目之间切换,所以我想出了以下脚本。

projects=$(ls -d ~/Workspace/*/)
prefix="/Users/myuser/Workspace/"
for f in $projects
do
        temp=${f#$prefix}
        temp=${temp/%\//}
        c="alias $temp='cd $f'"
        echo $c
        eval $c
done
Run Code Online (Sandbox Code Playgroud)

我把它放在我的主文件夹中一个名为的文件.workspace-shotcuts.sh中,然后我chmod +X .workspace-shotcuts.sh它。当我运行它时,使用./.workspace-shotcuts.sh我得到

alias project1='cd /Users/myuser/Workspace/project1/'
alias project2='cd /Users/myuser/Workspace/project2/'
Run Code Online (Sandbox Code Playgroud)

在控制台中。但是别名没有声明(zsh: command not found: project1)。

同样在我的.zshrc文件末尾,我添加了/bin/sh .workspace-shotcuts.sh,它提供了相同的输出,但仍然没有别名。

任何人都可以告诉我我缺少什么?我想指出的是,我不是一个出色的 *nix 用户,因此您可能需要对我进行一些 ELI5 操作。

编辑:

有人建议我source改用,我已经这样做了,但这是我收到的错误消息:

(eval):2: permission denied: /Users/myuser/Workspace/project1/
(eval):3: permission denied: /Users/myuser/Workspace/project2/    
(eval):4: permission denied: /Users/myuser/Workspace/project3/
(eval):5: permission denied: /Users/myuser/Workspace/project4/
(eval):6: permission denied: /Users/myuser/Workspace/project5/
(eval):7: permission denied: …
Run Code Online (Sandbox Code Playgroud)

zsh alias cd-command quoting

3
推荐指数
1
解决办法
2053
查看次数

无法 cd 到 .ssh

将新的 ssh 密钥添加到 .ssh/authorized_hosts 后,我无法在不输入密码的情况下 ssh 到机器。

更有趣的是,当我通过 ssh 登录(没有直接控制台访问)时,.ssh 目录突然无法访问:

pi@prodpi ~ $ ls -la
drw-------   2 pi   pi      4096 Mar 13  2015 .ssh

pi@prodpi ~ $ cd .ssh/
-bash: cd: .ssh/: Permission denied

pi@prodpi ~ $ ls .ssh/
ls: cannot access .ssh/authorized_keys: Permission denied
ls: cannot access .ssh/known_hosts: Permission denied
authorized_keys  known_hosts

pi@prodpi ~ $ sudo ls .ssh/
authorized_keys  known_hosts
Run Code Online (Sandbox Code Playgroud)

用户是pi。什么 - 如果不是目录权限 - 会阻止我以所有者身份访问该文件夹并可能导致 ssh 登录?

ssh cd-command permission-denied

3
推荐指数
1
解决办法
5341
查看次数

如何向 mkdir 命令添加自定义选项

我创建了很多目录,我想让我的生活变得懒惰,并自动cd进入我创建的目录,-g结果是mkdir -g foo

终端将是这样的:

User:/$ mkdir -g foo
User:/foo/$ 
Run Code Online (Sandbox Code Playgroud)

我看过这个页面,但没有成功。

是否有一个单线允许我创建一个目录并同时进入它?

我已经尝试过.bash_profile使用此命令,但它只是完全覆盖了该命令。(后来意识到这是一个无限循环)

mkdir() {
 if "$1" -eq "-g"
  mkdir "$2"
  cd "$2"
 else
  ## do the regular code
 fi
}
Run Code Online (Sandbox Code Playgroud)

另一件事是我不想创建更多别名,因为我最终会忘记我拥有的所有别名。

所以不是我不想要这个:

命令完全。(后来意识到这是一个无限循环)

mkcd() {
 if "$1" -eq "-g"
  mkdir "$2"
  cd "$2"
 else
  ## do the regular code
 fi
}
Run Code Online (Sandbox Code Playgroud)

我知道我很可能没有正确的选项,请纠正我,但任何帮助都会很棒!

bash cd-command function mkdir

3
推荐指数
1
解决办法
323
查看次数

使用 CDPATH=".:/some/path" 时,如何禁止打印子目录的完整路径?

我想使用 bashCDPATH指向我经常访问的目录的符号链接目录。但是,这样做:

export CDPATH="~/symlinks"
Run Code Online (Sandbox Code Playgroud)

导致cd SUBDIR停止工作,如果./SUBDIR~/symlinks/SUBDIR同时存在; CDPATH目录优先于当前工作目录。

我尝试使用以下方法解决此问题:

export CDPATH=".:~/symlinks"
Run Code Online (Sandbox Code Playgroud)

这确实解决了优先级问题,但现在cd到子目录总是打印其完整路径:

$ pwd
/foo/bar
$ cd baz
/foo/bar/baz
Run Code Online (Sandbox Code Playgroud)

这有点烦人。我知道我可以通过执行抑制所有cd输出alias cd='> /dev/null cd',但我确实喜欢为其他CDPATH条目(或执行cd -)打印的路径。有什么我可以做的更好的吗?

bash cd-command

3
推荐指数
1
解决办法
263
查看次数

详细更改目录?

我正在将 bash 脚本中执行的每个操作记录到日志文件中。我想cd详细更改目录,以便将输出记录到日志中。

有点像这样:

iMac:~ leetbacoon$ cd -v /new\ path
cd: /Users/leetbacoon -> /new path
iMac:new path leetbacoon$
Run Code Online (Sandbox Code Playgroud)

遗憾的是cd缺少详细的标志。关于如何让这样的事情起作用的任何想法?

shell cd-command macos

3
推荐指数
1
解决办法
138
查看次数