我有一个上周未能完成的 shell 脚本;这是一个失败的“ cd”命令,如果失败则退出。
该脚本是bash用于配置新 Debian 安装的shell 脚本。这是完整的脚本:debianConfigAswome.sh。该脚本以 root 身份运行,因此它可以完全访问文件系统。
您能否列出脚本无法成功执行cd命令的所有原因以及如何避免错误?
我有一个函数,我希望它能让我对我一直在查看的最新目录进行模糊搜索并节省时间,这是一个简单的 1 行:
dirs | sed 'y/ /\n/' | fzf | xargs cd
Run Code Online (Sandbox Code Playgroud)
2 小时后,我不知道出了什么问题):
我不断收到以下错误:
/usr/bin/cd: line 4: cd: ~/Downloads/demo: No such file or directory
Run Code Online (Sandbox Code Playgroud)
即使目录确实存在,无论我做什么。cd 怎么了,为什么这不起作用?
感谢您的评论:更多信息 我尝试了其他一些方法,例如编写函数:
fdr() {
local dir
dir=`dirs | sed 'y/ /\n/' | fzf`
cd $dir
}
Run Code Online (Sandbox Code Playgroud)
虽然 dir具有正确的值,我得到与上面相同的错误。
我的最终功能
感谢您的帮助,sub shells 正在让我思考,这是我的最终答案,有点hackey,但现在不是什么。
/usr/bin/cd: line 4: cd: ~/Downloads/demo: No such file or directory
Run Code Online (Sandbox Code Playgroud) 下面是我的代码的一小部分摘录,以便您更好地了解我的问题。当目录中的每个文件进入循环时,将从文件名中提取 em 值,并将其与声明的 em 值进行比较,以执行下一个操作。执行我的代码后,我注意到我的第一个条件有效,但是当它从 Em1 目录中出来时,第二个条件没有得到更多验证,因为我打开了 Em2 目录,它是空的,同时我有具有 em2 值的文件。所以我想知道出了什么问题
em1="first"
em2="second"
for file in *;
do
em=$( echo "$file" | awk -F'[.-]' '{print $1}' )
if [[ "$em" == "$em1" ]];
then
cd Em1 #directory to execute action
month_range #function for action
cd_ret #function to come back to current directory
elif [[ "$em" == "$em2" ]];
then
cd Em2
month_range
cd_ret
else
echo "Nothing to do"
fi
done
Run Code Online (Sandbox Code Playgroud) 我正在做一项任务,要求我从当前目录切换到我的主目录,即~/sample_dir1/sample_dir/cambridge.
它要求我使用相对路径名更改到我的主目录,而不是单独使用cd,没有参数。
我已经试过的众多组合cd ~/和cd ..等,但似乎没有任何工作。
我一直在研究 git,我试图 cd into/home/pi/Desktop/python_git/.git但它抱怨没有名为 .git 的目录/.git。我知道这是因为它以 a 开头,.因此被隐藏,但我不知道正确的论点,当我运行man cd它时说No manual entry for cd.
我在 Raspberry Pi 3 上运行 Debian Linux。
pwd和cd(无参数)之间有区别吗?它们都打印当前目录的路径,但是否有我遗漏的细微差别,如果是,我应该什么时候使用哪个?
我曾经在 O'Reilly 的一本 Bash 书中读到以下内容(我的总结):
cd () {
echo "Improved CD !"
# Improvement one;
command cd
# Improvement two;
# Do cool stuff...
}
cd
Run Code Online (Sandbox Code Playgroud)
command当包含内置函数的函数与内置函数同名时,该命令很有用 - 它可以防止函数中内置函数的递归循环;
我的问题是,如果我们只调用一次函数,为什么首先会出现递归循环?
我想知道如何将目录添加到路径(例如我的Downloads文件夹),以便每当我cd Downloads从任何目录键入时,我都会转到~/Downloads.
我在 Linux 终端中输入 cd -- ,它把我带到了一个我不认识的目录。cd -- 带你去哪里?是你的根目录吗?
通过向 .bashrc 文件中添加一个函数,我发现了一种很酷的方法来提升 1 个以上的目录级别。
只需打开 .bashrc 文件并插入函数即可完成:
#user defined functions
function cd_up() {
cd $(printf "%0.s../" $(seq 1 $1 ));
}
alias 'cd..'='cd_up'
Run Code Online (Sandbox Code Playgroud)
我想了解如何阅读它。
它是用什么语言编写的?
cd-command ×13
bash ×5
command ×2
pwd ×2
shell-script ×2
directory ×1
fzf ×1
home ×1
kali-linux ×1
linux ×1
path ×1
syntax ×1
tilde ×1
ubuntu ×1
wildcards ×1