如何使用 cd 和 ls 跳转到目录(选择列和项目)?

如何使用 cd 和 ls 跳转到目录(选择列和项目)?

我想使用 cd 和 ls 将目录更改为Typescript-initial-config-with-eslint/

package.json  README.md  tsconfig.json  Typescript-initial-config-with-eslint/
public/       **src/**       tslint.json    yarn.lock

喜欢:

cd ls | (4° item)

有没有更有效的方法来做到这一点?

答案1

我想你可以使用选择循环:

select dir in *; do cd -- "$dir"; break; done

然而,这实际上比cd正常使用需要更多的输入,但你可以用它来创建一个函数:

cdls () {
    local PS3='cdls>'
    select dir in *; do
        if [[ -d "$dir" ]]; then
            cd -- "$dir"
            break
        else
            printf '%s\n' "You can only cd into a directory" >&2
        fi
    done
}

首先显示非目录文件也没有多大用处,因为您无法cd进入它们,所以您可以这样做:

cdls () {
    local PS3='cdls>'
    select dir in */; do
            cd -- "$dir"
            break
    done
}

答案2

如果您问“我如何cd访问列表中的第四项ls?”,那么

cd "$(ls | tail -n +6 | head -n 1)"

相关内容