Есть ли способ изменить каталог, в который переходит cd без аргумента?

Если вложенные папки имеют одинаковые имена, вы можете использовать ответ roaima . Если нет, вы можете использовать простой цикл оболочки:

mkdir -p destination
for name in folder/*; do
    [ ! -d "$name" ] && continue
    mv "$name" destination
done

Это зациклит все записи каталогов вfolder(файлах и каталогах ), проверит каждую из них на предмет того, является ли она директорией или нет, и переместит их, если это так.

Другой возможностью является использованиеfind:

mkdir -p destination
find folder -mindepth 1 -maxdepth 1 -type d -exec mv {} destination ';'

Это позволит найти все пути ко всем каталогам в folder(, но не ниже, а не к самому каталогу folder), и переместить каждый найденный каталог в destination.

1
24.04.2020, 10:04
1 ответ
cd () {
    if [ $# -eq 0 ]; then
        builtin cd /some/other/dir
    else
        builtin cd "$@"
    fi
}

Это переопределяет cdфункцией. Если функция не получает аргументов, она вызывает встроенную функцию cdдля перехода в предопределенный каталог. В противном случае он запускает встроенный cdс исходными аргументами.

Другим другим способом сделать это было бы изменить значение HOMEна какой-то другой каталог, но это также может изменить поведение других утилит.

4
19.03.2021, 02:26

Теги

Похожие вопросы