我正在使用 Zsh 在 Arch 上运行 gnome 3.10.1。我面临的问题是,当我从终端窗口创建新选项卡或窗口时,它会将当前目录重置为我的主目录。
我已经尝试过这个:gnome-terminal: keep track of directory in new tab,但它没有用。
我认为这可能是我的.zshrc文件中的一些配置,因此,我清理了它并只添加了以下行:
. /etc/profile.d/vte.sh
Run Code Online (Sandbox Code Playgroud)
但是,它没有按预期工作。
是的,这个文件存在,这里是它的内容:
# Copyright © 2006 Shaun McCance <shaunm@gnome.org>
# Copyright © 2013 Peter De Wachter <pdewacht@gmail.com>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at …Run Code Online (Sandbox Code Playgroud) 我想找到一个文件,然后进入包含它的目录。我试过了,find /media/storage -name "Fedora" | xargs cd但当然,我的is not a directory错误。
如何使用一行命令进入其父目录?
我经常有这样的项目目录布局
project
`-- component-a
| `-- files...
`-- component-b
| `-- files...
`-- component-c
`-- files...
Run Code Online (Sandbox Code Playgroud)
我通常会在其中一个component目录中工作,因为文件就在那里。当我返回到 shell 时,我通常只需要移动到同级目录,尤其是当我需要对每个组件进行一些非脚本化更改时。在这些情况下,我什至不会关心我将处理的前一个同级目录是什么,或者下一个同级目录。
我可以定义一个命令prev还是next直接cd进入上一个目录或下一个目录(按字母表或其他方式)?因为一直打字cd ../com<TAB><Arrow keys>已经有点老了。
我正在尝试在我运行的服务器上设置一些东西,每当我cd进入public_html文件夹时,95% 的时间我都会运行一些命令来检查某些事情。
无论如何我可以挂钩,cd所以如果目录是 a public_html,它会自动为我运行命令吗?
如果我无法进入cd命令,我还能做其他事情来实现我所追求的结果吗?
我正在运行 CentOS 5.8。
有没有办法将现代 shell 的历史功能限定为路径?
我的工作环境被拆分为文件系统上的路径,并且 shell 活动的模式(例如重复发出的命令)往往因每个“项目”而异。如果我可以将历史功能范围限定为从当前路径(或子路径)发出的命令,那就太好了。
在 Linux 中,每个实体都被视为文件。如果我这样做vim <cd-Name>,vim会将目录内容打开到它的编辑器中,因为它不区分文件和目录。
但是今天在工作的时候,遇到了一件事,很想知道。
我计划从嵌套目录中打开一个文件
vim a/b/c/d/file
Run Code Online (Sandbox Code Playgroud)
但是vim,我输入了
cd a/b/c/d/
Run Code Online (Sandbox Code Playgroud)
并点击TAB两次,但命令仅显示“d”目录的可用目录而不是文件。
难道cd命令不尊重“一切都是文件”吗?或者我错过了什么?
这个答案让我cd -可以快速切换到我在 Bash 中的上一个目录。它确实有一个主要问题:它打印它更改到的目录,浪费了我的屏幕空间,因为该目录然后在下一行的提示中重复。
我知道我可以做cd $OLDPWD,在那个答案中也提到过,cd - >/dev/null但打字要多得多。
在bash手册页中它说:
... 或者如果 - 是第一个参数,并且目录更改成功,则将新工作目录的绝对路径名写入标准输出。
我怎样才能-不成为第一个论点?通过使用任何cd可选参数?有没有其他方法可以抑制回声或尽量减少打字,而无需在我使用的每台机器上定义函数/别名?
function我的.bashrc文件中有一个。我知道它是做什么的,它增加了 X 个目录cd
这里是:
up()
{
local d=""
limit=$1
for ((i=1 ; i <= limit ; i++))
do
d=$d/..
done
d=$(echo $d | sed 's/^\///')
if [ -z "$d" ]; then
d=..
fi
cd $d
}
Run Code Online (Sandbox Code Playgroud)
但是你能帮我解释一下这三件事吗?
d=$d/..sed 's/^\///'d=..为什么不这样做:
up()
{
limit=$1
for ((i=1 ; i <= limit ; i++))
do
cd ..
done
}
Run Code Online (Sandbox Code Playgroud)
用法:
<<<>>>~$ up 3
<<<>>>/$
Run Code Online (Sandbox Code Playgroud) 我今天遇到了一个非常奇怪的问题,对此我完全无能为力。
我管理的一些服务器由 Nagios 监控。最近我看到磁盘使用情况探测失败并出现此错误:
DISK CRITICAL - /sys/kernel/debug/tracing 不可访问:权限被拒绝
我想进行调查,我的第一次尝试是检查此目录权限,并将这些权限与另一台服务器(运行良好)进行比较。这是我在工作服务器上运行的命令,一旦我cd进入目录,您就会看到其权限已更改:
# Here we've got 555 for /sys/kernel/debug/tracing
root@vps690079:/home/admin# cd /sys/kernel/debug
root@vps690079:/sys/kernel/debug# ll
total 0
drwx------ 30 root root 0 Jul 19 13:13 ./
drwxr-xr-x 13 root root 0 Jul 19 13:13 ../
…
dr-xr-xr-x 3 root root 0 Jul 19 13:13 tracing/
drwxr-xr-x 6 root root 0 Jul 19 13:13 usb/
drwxr-xr-x 2 root root 0 Jul 19 13:13 virtio-ports/
-r--r--r-- 1 root root 0 Jul …Run Code Online (Sandbox Code Playgroud) 我有许多文件夹的工作区,所有文件夹都由长路径组成。例如:
|- workspace
|-- this.is.very.long.name.context
|-- this.is.another.long.path.authors
|-- // 20 more folders
|-- this.is.folder.with.too.many.characters.folder
Run Code Online (Sandbox Code Playgroud)
它们都以相同的阶段 ( this.is) 开始,在我的实际情况下,该阶段是 20 个字符长,并且它们在最后一个序列中大多不同。有什么方法可以使用cd命令快速浏览它们吗?任何野生字符像??
cd-command ×10
shell ×5
bash ×2
command-line ×2
directory ×2
linux ×2
find ×1
function ×1
gnome ×1
linux-kernel ×1
permissions ×1
sed ×1
sysfs ×1
variable ×1
xargs ×1
zsh ×1