Вы можете использовать этот простой скрипт:
#!/bin/bash
if [[ -f $1 ]]; then
echo "Yes"
exit 0
else
exit 1
fi
Сохранить его как file-exists.sh. Затем в терминале введите chmod +x file-exists.sh.
Используйте его как: ./file-exists.sh FILE, где вы замените FILE на файл, который вы хотите проверить, например:
./file-exists.sh file.txt
Если file.txt существует, Yes будет напечатано в терминале, и программа выйдет со статусом 0 (успех). Если файл не существует, ничего не будет напечатано, и программа выйдет со статусом 1 (сбой).
Если вам интересно, почему я включил команду exit, прочитайте ...
exit вызывает нормальное завершение процесса. Это означает, в основном: он останавливает скрипт. Он принимает необязательный (числовой) параметр, который будет статусом выхода скрипта, который его вызвал.
Этот статус выхода позволяет другим скриптам использовать ваш скрипт file-exists и является способом узнать файл существует или нет.
Простым примером, который использует этот сценарий, является этот сценарий (сохраните его как file-exists-cli.sh):
#!/bin/bash
echo "Enter a filename and I will tell you if it exists or not: "
read FILE
# Run `file-exists.sh` but discard any output because we don't need it in this example
./file-exists.sh $FILE &>> /dev/null
# #? is a special variable that holds the exit status of the previous command
if [[ $? == 0 ]]; then
echo "$FILE exists"
else
echo "$FILE does not exist"
fi
Сделайте обычную chmod +x file-exists-cli.sh, а затем запустите это: ./file-exists-cli.sh. Вы увидите что-то вроде этого:
Файл существует (exit 0):
➜ ~ ./file-exists-cli.sh
Enter a filename and I will tell you if it exists or not:
booleans.py
booleans.py exists
Файл существует (exit 0):
➜ ~ ./file-exists-cli.sh
Enter a filename and I will tell you if it exists or not:
asdf
asdf does not exist
XKB будет подходящим для графических интерфейсов Xwindows или Wayland. Это не повлияет на виртуальные консоли, но эмуляторы терминала GUI будут в порядке. Для фона XKB я укажу вам на некоторые (обзор, система и пользователь) .. другие (настраиваемые параметры) .. ответы (пользовательские правила).
Следующее позволит вам добавить новый параметр, например caps:myf13 в существующую раскладку XKB с любыми инструментами, которые вы обычно используете (настройки setxkbmap, localectl, панель GNOME и т. д.).
Существующие опции кеш-ключа XKB перечислены в /usr/share/X11/xkb/rules/evdev.lst. Если посмотреть на соответствующие параметры в файле .../rules/evdev, вы увидите, что все эти параметры загружены из файла .../symbols/capslock. Все они являются ключами-модификаторами, которые, вероятно, не являются лучшим примером, но caps:backspace может быть хорошим сравнением. Если посмотреть на файл, мы найдем строфу, определяющую эту опцию:
hidden partial modifier_keys
xkb_symbols "backspace" {
key <CAPS> { [ BackSpace ] };
};
grep, используя другие файлы символов, мы можем видеть, что символ F13 просто F13. Новая строфа параметров может выглядеть так:
hidden partial modifier_keys
xkb_symbols "myf13" {
key <CAPS> { [ F13 ] };
};
Как вы можете видеть, мы только изменили имя опции и символ, назначенный клавише.
Осталось только подключить новую строфу. В базовой системе Xwindows, используя инструменты командной строки, такие как setxkbmap и xkbcomp, некоторые некоторые (обзор, система против пользователя) будут делать хорошо; для GNOME, KDE или системы Wayland вам необходимо внести изменения в базу данных XKB системы.
В качестве примера для системных изменений (вам понадобится sudo доступ для создания или редактирования этих файлов) :
Поместите пользовательскую строфу в новый файл символа, например /usr/share/X11/xkb/symbols/mycaps. Добавьте это в /usr/share/X11/xkb/rules/evdev чуть ниже строки для caps:backspace: caps:myf13 = +mycaps(myf13)
... добавьте в /usr/share/X11/xkb/rules/evdev.lst: caps:myf13 Caps Lock is F13
... добавьте в /usr/share/X11/xkb/rules/evdev.xml: <option>
<configItem>
<name>caps:myf13</name>
<description>Caps Lock is F13</description>
</configItem>
</option>
Наконец, создайте резервные копии своего .../rules/evdev* или создать файл исправления. Ваши изменения будут перезаписаны всякий раз, когда обновляется пакет xkb-data. Если вы сохранили строфу модификации в файле .../symbols/capslock, ее также нужно будет скопировать. После внесения этих изменений вы должны установить этот параметр, как если бы это была другая опция XKB. Возможно, вам придется перезапустить любой сеанс GNOME / KDE для панелей управления, чтобы получить изменения, но такие инструменты, как setxkbmap, должны найти его немедленно: setxkbmap -option caps:myf13
XKB будет подходящим для графических интерфейсов Xwindows или Wayland. Это не повлияет на виртуальные консоли, но эмуляторы терминала GUI будут в порядке. Для фона XKB я укажу вам на некоторые (обзор, система и пользователь) .. другие (настраиваемые параметры) .. ответы (пользовательские правила).
Следующее позволит вам добавить новый параметр, например caps:myf13 в существующую раскладку XKB с любыми инструментами, которые вы обычно используете (настройки setxkbmap, localectl, панель GNOME и т. д.).
Существующие опции кеш-ключа XKB перечислены в /usr/share/X11/xkb/rules/evdev.lst. Если посмотреть на соответствующие параметры в файле .../rules/evdev, вы увидите, что все эти параметры загружены из файла .../symbols/capslock. Все они являются ключами-модификаторами, которые, вероятно, не являются лучшим примером, но caps:backspace может быть хорошим сравнением. Если посмотреть на файл, мы найдем строфу, определяющую эту опцию:
hidden partial modifier_keys
xkb_symbols "backspace" {
key <CAPS> { [ BackSpace ] };
};
grep, используя другие файлы символов, мы можем видеть, что символ F13 просто F13. Новая строфа параметров может выглядеть так:
hidden partial modifier_keys
xkb_symbols "myf13" {
key <CAPS> { [ F13 ] };
};
Как вы можете видеть, мы только изменили имя опции и символ, назначенный клавише.
Осталось только подключить новую строфу. В базовой системе Xwindows, используя инструменты командной строки, такие как setxkbmap и xkbcomp, некоторые некоторые (обзор, система против пользователя) будут делать хорошо; для GNOME, KDE или системы Wayland вам необходимо внести изменения в базу данных XKB системы.
В качестве примера для системных изменений (вам понадобится sudo доступ для создания или редактирования этих файлов) :
Поместите пользовательскую строфу в новый файл символа, например /usr/share/X11/xkb/symbols/mycaps. Добавьте это в /usr/share/X11/xkb/rules/evdev чуть ниже строки для caps:backspace: caps:myf13 = +mycaps(myf13)
... добавьте в /usr/share/X11/xkb/rules/evdev.lst: caps:myf13 Caps Lock is F13
... добавьте в /usr/share/X11/xkb/rules/evdev.xml: <option>
<configItem>
<name>caps:myf13</name>
<description>Caps Lock is F13</description>
</configItem>
</option>
Наконец, создайте резервные копии своего .../rules/evdev* или создать файл исправления. Ваши изменения будут перезаписаны всякий раз, когда обновляется пакет xkb-data. Если вы сохранили строфу модификации в файле .../symbols/capslock, ее также нужно будет скопировать. После внесения этих изменений вы должны установить этот параметр, как если бы это была другая опция XKB. Возможно, вам придется перезапустить любой сеанс GNOME / KDE для панелей управления, чтобы получить изменения, но такие инструменты, как setxkbmap, должны найти его немедленно: setxkbmap -option caps:myf13