如何使用Shell脚本创建并立即导航到目录?

时间:2019-05-18 12:14:38

标签: shell

我需要使用一行命令创建并导航到目录。并且它必须在函数内部。我是终端和Shell脚本的新手,对此了解不多。

我的过程是这样的:

我写目录的名称并将其存储到$dirname变量中,然后键入“ create”并将其存储到另一个名为$thecommand的变量中,以创建名称为I的目录给,并导航到它。

我有一个create()函数。在函数内部,我先执行mkdir ./$dirname,然后执行cd $dirname。然后,我施加了一个条件:如果用户在$thecommand变量中写入的内容(顺便说一句,$dirname$thecommand都被读取,所以用户写入了值)等于“创建”。

目录已创建,但未导航到该目录。因此,我尝试创建别名p="$dirname",并将别名应用到函数中,尽管如此,它仍创建了目录,但没有导航!

如果有人帮助我,我将不胜感激。

这是我的代码:

echo "Write Folder name"
read dirname
echo "Write -create- to create the folder"
read thecommand

p="$dirname"

function create() {
    mkdir ./"$p"
    cd "$p"
}

if [ "$thecommand" == "create" ]
then
    create
fi

1 个答案:

答案 0 :(得分:0)

您可以做一些事情。

首先,只需修改mkdir.bashrc中的.bash_aliases函数

function mkdir() {
  command mkdir -p $1  # This creates the folder
  command cd $1        # Then it immediately switches
  command pwd          # Remove this if you don't need confirmation. This just prints out current directory
}

如果您不希望每次 都发生这种情况,可以将函数名称更改为create或任何您喜欢的名称。

function create() {
  command mkdir -p $1     # Note: the `-p` flag just creates a folder, 
                          # like if you do `mkdir test/more` 
                          # you will get an error that it is not valid. 
                          # This does not change a regular `mkdir` command

  command cd $1
  command pwd
}

或者,您可以cd进入新创建的文件夹