В Fedora 33, (Gnome 3 )Папки рабочего стола не отображаются

Да, вы можете улучшить код.

Оператор selectв bashобеспечивает способ отображения меню, а также обеспечивает базовый цикл ввода.

#!/bin/bash

menu=(
    Work
    School
    Shopping
)

PS3='What is this note for? '

while true; do
    unset outfile

    select word in Exit "${menu[@]}"; do
        case $REPLY in
            1)
                echo 'Bye!'
                exit ;;
            [2-4])
                outfile="$HOME/${word,,}-notes.txt" ;;
            *)
                echo 'Invalid choice, try again' >&2
        esac

        if [ -n "$outfile" ]; then
            break
        fi
    done

    IFS= read -r -p 'Enter note: '
    printf '%s:\t%s\n' "$(date +%d-%B-%Y)" "$REPLY" >>"$outfile"

    printf 'Note added to "%s"\n' "$outfile"
done

Еще одно изменение здесь заключается в том, что я прошу настоящую заметку только в одном месте. Это облегчает чтение кода и упрощает его обслуживание.

Очевидно, что case... esacможно заменить серией утверждений if... then... elif... fi, если так удобнее. Внутренний оператор breakпрерывает цикл select, если был сделан правильный выбор. Это приводит нас к внешнему циклу, который затем запрашивает у пользователя текст и сохраняет его в файл, прежде чем вернуться к отображению меню. Выбор Exitв меню позволяет выйти из скрипта.

Небольшое замечание состоит в том, что

while [ true ]

в вашем коде имеет тот же эффект, что и

while [ false ]

или, как и

while [ bumblebee ]

Это связано с тем, что когда [... ]содержит одно слово, это слово интерпретируется как строка. Если строка не -пуста, проверка верна .

В моем коде я использую

while true

, которая на самом деле выполняет утилиту true, которая всегда возвращает значение true .

0
11.04.2021, 04:43
1 ответ

Существует по крайней мере одно расширение (https://extensions.gnome.org/extension/2087/desktop-icons-ng-ding/), которое соответствует вашим потребностям.

На момент написания, это (, но большинство всех расширений )совместимо с предпоследней версией GNOME, то есть 3.38.

Если в вашей системе Fedora установлена ​​эта версия, вы можете легко установить расширение и решить проблему!

0
28.04.2021, 22:53

Теги

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