Администрирование FreeBSD, Linux, ... Мой переход с Windows на Ubuntu Sun, April 21 2024  

Поделиться

Нашли опечатку?

Пожалуйста, сообщите об этом - просто выделите ошибочное слово или фразу и нажмите Shift Enter.

Мой переход с Windows на Ubuntu Печать
Добавил(а) microsin   

Программисты Linux уже многое сделали, чтобы интерфейс пользователя был как можно удобнее. В результате наблюдается тенденция сближения общих принципов поведения (и даже некоторых аспектов внутреннего устройства) Linux и Windows. На новой работе мне пришлось пересесть с Windows на Ubuntu 20.04, и здесь решил написать о личных впечатлениях от перехода.

Самая большая беда Windows, из-за которой дальнейшая работа на ней стала невозможной - очень медленная работа GNU-утилит кросс-компиляции для процессоров BEKEN и ESP32 (скрипты CMake и scons, компилятор и ассемблер gcc-arm-none-eabi-5_4-2016q3, и другие утилиты, запускаемые скриптами конфигурирования и компиляции). Даже если отключить все антивирусы и различные службы, на Windows все происходит намного медленнее, чем на Linux. Если кто-то читает эти строки, и есть опыт решения проблемы медленной компиляции на Windows, пожалуйста напишите об этом в комментарии к статье, или напишите мне на email (см. раздел "КОНТАКТЫ").

Проблема тут собственно не в Windows, а в криворуких админах, которые накатили на неё антивирус, политику безопасности и в результате в ответ на любые дисковые операции она дико тормозит.

[Сравнение скорости работы Ubuntu 22.04 и Windows 10]

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

Время загрузки практически не отличается. Отзывчивость системы в целом у Windows показалась лучше, чем у Ubuntu.

Однако некоторые программы в Ubuntu все-таки работают быстрее. Например Android Studio загружается быстрее, процесс компиляции проекта в ESP-IDF также занимает намного меньше времени. Таким образом, если вам нужен просто компьютер для работы, например для написания программ, и компьютерное железо довольно старое (как в моем случае материнская плата ASUS P8H61 с памятью 8 гигабайт и процессором Intel Pentium G630 2.7 ГГц), то лучше все-таки Ubuntu.

Вывод: если компьютер современный, и вы привыкли к Windows, то лучше дома использовать Windows 10 или Windows 11. Но на работе бывают нюансы, как в моем случае. Загадить Windows админы могли легко, а вот Ubuntu им уже не по зубам.

[Что не понравилось в Linux]

Дальше пойдет речь о недостатках использования Linux и о том, как их по возможности исправить или обойти. Конечно, большинство "недостатков" происходит из-за недостаточного опыта работы на новой системе, однако для накопления опыта необходимо потратить определенное время. Мне хватило двух месяцев, чтобы получить для себя вполне удобную и комфортную рабочую среду, в которой можно реализовать (почти) все, что необходимо.

В основном раздражает то, что по сравнению с Windows явно недоделано. Конечно, к таким мелочам, как другие горячие клавиши, другая командная строка, другая организация системных имен и файловой системы (слеш / вместо \, другие допустимые символы в именах, другая кодировка русскоязычных имен фалов), утилита sudo, справка man, функционал find и grep быстро привыкаешь, и даже начинаешь постепенно входить во вкус. Но...

Многозадачность Ubuntu для GUI-приложений все еще хромает, что довольно заметно. Например, если в редакторе текста gedit нажать Ctrl+S (сохранение файла) и после этого сразу ввести несколько символов текста, то эти символы будут теряться, пока не завершится сохранение файла. Неизвестно, чем это вызвано - криво написанный софт или проблема самой операционной системы. В случае критичных багов система намертво вешается на несколько секунд.

Не хватает по-настоящему качественного ПО и ассортимента программ, доступных на Windows. Например, файловый менеджер Double Commander постарались сделать максимально похожим на Total Commander, но его функции работают далеко не так же хорошо. Больше всего не хватает функции синхронизации и сравнения файлов и каталогов, как они из коробки работают в Total Commander. Другой пример - не хватает функционала текстового редактора Notepad2, который позволяет удобно редактировать текст, манипулируя как строками, так и столбцами текста, легко перекодировать текст из одной кодировки в другую, подсвечивать символы пробела и табуляции и т. д. Сейчас пишу текст в редакторе gedit, который похож на редактор notepad2, но страдает мелкими глюками - например, в строке ввода текста для поиска не работает переключение языка ввода, из коробки работают другие комбинации клавиш [1], и т. д. Теряется текст, который был скопирован в буфер обмена из окна putty, если окно putty было закрыто из-за отключения последовательного порта. Нет удобного просмотра событий и ошибок системы по сравнению с Windows (попробуйте-ка найти что-то полезное в /var/log/syslog), функционал putty не дотягивает, нет удобных утилит бэкапа и клонирования дисков и их разделов. И глюкавость, периодически появляются сообщения о системных ошибках, наподобие следующего:

Ubuntu20 04 internal error

Этот список можно продолжать очень долго. Конечно, с опытом и накоплением многих новых привычек такие недостатки со временем потеряют актуальность либо будут исправлены (на что очень надеюсь) и забудутся, но сейчас что есть, то есть.

[Заметки]

1. Клавишу Win на клавиатуре в Linux обычно называют "Super".

2. Правая кнопка на ярлычке -> "Добавить в избранное" добавит этот ярлычок на левую панель запуска.

3. Права на выполнение скрипта устанавливаются командой chmod +x имяскрипта. Также можно воспользоваться удобным контекстным меню Double Commander (правый клик на файле).

4. Создание переменных присвоением VAR1=значение работает только для текущей сессии терминала, а export VAR1=значение работает и для всех дочерних сессий. Команда export в скрипте позволяет сохраняться переменным в текущем окружении после завершения работы скрипта.

5. Команда printenv показывает переменные окружения текущей сессии терминала (аналогичная команда set для Windows). Примеры просмотра переменных окружения:

$ printenv
$ echo $ИМЯПЕРЕМЕННОЙ

Подробнее про настройку и просмотр переменных окружения см. [].

6. Чтобы из скрипта поменять директорию, надо запускать его через команду source, или через . и пробел (см. Q007 далее, секция "Запуск "через точку", команда source").

7. Как узнать, какая установлена графическая оболочка:

$ echo $XDG_CURRENT_DESKTOP
ubuntu:GNOME

8. Чтобы быстро сделать снимок рабочего стола, окна или области на экране, используйте эти глобальные комбинации клавиш:

Print Screen делает скриншот всего рабочего пространства.
Alt + Print Screen делает скриншот текущего окна.
Shift + Print предлагает мышью обвести область экрана, для которой будет сделан скриншот.

При использовании этих комбинаций клавиш изображение автоматически будет сохранено в папку Изображения, имя файла с изображением начинается со слов "Снимок экрана от" и содержит дату и время снимка.

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

Можно также удерживать нажатой Ctrl при использовании одной из описанных выше комбинаций клавиш, чтобы вместо сохранения снимка экрана скопировать его в буфер обмена.

8. Настройка putty для копирования и вставки текста. Стандартное копирование выделением: свойства сессии -> Window -> Selection -> поставить галочку "Auto-copy selected text to CLIPBOARD".

Контекстное меню для выделенного текста доступно при удерживании Ctrl и правом клике мыши. Вставка текста делается средней кнопкой мыши.

9. Как сравнить 2 файла:

$ meld файл1 файл2
$ wdiff файл1 файл2
$ diff файл1 файл2

10. Настройки Double Commander, чтобы он работал почти как Total Commander:

(a) В глобальных настройках горячих клавиш переназначить комбинацию Alt+F7 на Super+F7, чтобы мог работать стандартный запуск поиска файлов.
(b) Настройки -> Редактор -> Ширина табуляции: 4.
(c) Настройки -> Список файлов -> поменять форматирование размеров на Б. После этого все размеры будут отображаться точно в байтах.
(d) Настройки -> Список файлов (дополнительно) -> поставить галочку "Показывать системные и скрытые файлы".
(e) Настройки -> Файловые операции -> Поиск файлов -> Снять галочку "При запуске поиска очистить фильтр маски поиска".

11. Подключенные флешки/диски появляются в каталоге /media. Подключенные томы veracrypt появляются в папке имяпользователя/veracryptN.

12. Конвертеры и кодировки: enca, iconv, piconv, locale.

13. Часто окна и закладки в приложениях закрываются Ctrl+W, а не Ctrl+F4.

14. Раскладка клавиатуры по умолчанию переключается через Super + Пробел. Поменять на Ctrl+Shift можно с помощью утилиты Gnome Tweak Tool [4].

15. Копирование и вставка текста в x-terminal-emulator (Ctrl + Alt + T) по умолчанию работает через контекстное меню, что довольно неудобно.

К сожалению, в терминале x-terminal-emulator не получится легко настроить стандартное копирование и вставку текста Ctrl+C и Ctrl+V. Можно настроить горячие клавиши копирования и вставки через меню Параметры -> Комбинации клавиш (например Super+С, Super+V). Приходится привыкать, увы.

16. Нажмите Alt + F7 чтобы переместить окно, или Alt + F8, чтобы изменить его размер. Переместите окно или измените размер клавишами со стрелками, затем нажмите Enter для завершения операции или Esc, чтобы вернуться к исходному положению и размеру. Разверните окно, перетащив его к верху экрана.

Также можно удерживать кнопку Win (Super), и перетаскивать окно левой кнопкой мыши.

17. Посмотреть все процессы можно командой ps:

$ ps -A

Процессы текущего пользователя можно посмотреть командой:

$ ps -u

18. Посмотреть, к каким группам принадлежит текущий пользователь:

$ groups

Посмотреть список всех пользователей:

$ compgen -u

Посмотреть список всех групп:

$ compgen -g

18. Все ярлычки, которые видит пользователь, когда нажимает на кнопку «Пуск», описаны здесь [8]:

/usr/share/applications/ общесистемные ярлыки приложений, видны всем пользователям;
~/.local/share/applications/ ярлыки приложений, которые будут видны только одному пользователю.

[Горячие клавиши]

Alt + F1 выводит удобное меню поиска и запуска приложений.
Ctrl + Alt + F1 переключается на вход нового пользователя в GUI.
Ctrl + Alt + F2 возврат в текущую сессию.
Ctrl + Alt + F3 .. F6 переключение на текстовую консоль tty3 .. tty6.
Ctrl + Alt + F7 .. F12 переключение на черный экран.
Ctrl + Alt + T запускает терминал x-terminal-emulator.

Альтернативный способ переключения между окнами Alt + Esc. Он удобнее, чем Alt + TAB.

Часто окна и закладки в приложениях закрываются Ctrl+W, а не Ctrl+F4.

Раскладка клавиатуры по умолчанию переключается через Super + Пробел. Поменять на Ctrl+Shift можно с помощью утилиты Gnome Tweak Tool [4].

Нажмите Alt + F7 чтобы переместить окно, или Alt + F8, чтобы изменить его размер. Переместите окно или измените размер клавишами со стрелками, затем нажмите Enter для завершения операции или Esc , чтобы вернуться к исходному положению и размеру. Разверните окно, перетащив его к верху экрана.

Также можно удерживать кнопку Win (Super), и перетаскивать окно левой кнопкой мыши.

[Ubuntu FAQ]

Проблема такого странного сообщения при попытке запуска скрипта bash в том, что в тексте скрипта используются неправильные окончаниях строк 0D0A. Как исправить. см. [3].

По умолчанию в Ubuntu текущая раскладка клавиатуры меняется сразу для всех программ, глобально.

Исправить это можно следующим образом: зайдите в настройки, раздел Регион и язык -> кликните на шестеренку пункта "Источники ввода". Выберите радиокнопку "Использовать различные источники для каждого окна".

После этого в каждом открытом окне раскладка клавиатуры будет переключаться независимо от других [4].

Помог wine, описание установки взял в статье [5]. Другие средства, которые упоминались в этой статье - Winetricks, PlayOnLinux - мне не подошли.

Установка на Ubuntu, Debian, Mint:

sudo dpkg --add-architecture i386
wget -nc https://dl.winehq.org/wine-builds/Release.key
sudo apt-key add Release.key
sudo add-apt-repository "deb https://dl.winehq.org/wine-builds/ubuntu/ artful main"
sudo apt-get update
sudo apt-get install --install-recommends winehq-stable

Используйте команды find, locate, whereis, grep. Много полезных советов нашел в [6].

[Примеры использования find]

$ find /путь/до/каталога/гдеискать -iname имяфайла
$ find -iname имяфайла

В этом примере первая команда ищет файл относительно корневого каталога в указанной папке, вторая команда ищет файл в текущем каталоге (текущий каталог . указывать необязательно).

Как искать по всему диску без сообщений "отказано в доступе":

$ find / -iname 'SCons' 2>/dev/null

Вот ещё полезные перенаправления:

>файл перенаправить стандартный вывод (stdout) в файл.
&>файл перенаправить стандартный вывод (stdout) и ошибки в файл.
2>&1 | tee файл копировать вывод ошибок в stdout, показывать на экране и одновременно писать в файл.

[Примеры использования grep]

Поиск файла (или файлов, если таких попадется несколько) в указанной папке на содержимое текста по шаблону регулярного выражения pattern:

$ grep -rnw -e 'pattern' /путь/где/искать/

Часто используемые опции grep (в этом примере использовались следующие опции r, n, w):

-r или -R рекурсивно искать по всем каталогам относительно указанного пути.
-n показывать номер строки, где был найден указанный текст.
-w означает, что совпадение должно быть со строкой целиком. Без -w допускается совпадение с частью строки.
-l (буква L в нижнем регистре) можно добавить, чтобы выводить просто имена файлов, где в его содержимом найдено совпадение указанного текста.
-e шаблон регулярного выражения для поиска текста.
-i не обращать внимание на регистр символов.

Поиск слова word в файлах текущего каталога и его подкаталогах (для поиска используется текущий каталог, если не указано, где искать):

$ grep -rn word

Если в искомом тексте встречается точка, то её нужно экранировать обратным слешем '\'. Экранирование также надо применять к символам '?' и символам двойной или одинарной кавычки.

$ grep -rn "usb\.h"

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

$ grep -rn "Hello World"

См. также [7].

Чтобы искать в файлах определенного вида, можно применять шаблоны имен файлов (wildcards * и ?), для чего используется опция --include=. Шаблоны необходимо заключать в двойные кавычки. Например, для поиска текста в заголовочных файлах языка C используйте следующую команду:

$ grep --include="*.h" -rnw sprintf

См. также [7].

Операционные системы семейства Linux, в отличие от Windows, не ищут запускаемый скрипт или программу в текущем каталоге. Поэтому если скрипт (или программа) находится в текущем каталоге, то необходимо указать перед его именем комбинацию символов ./ иначе скрипт не запустится. Это сделано в целях безопасности, чтобы пользователь случайно не запустил что-нибудь, что может навредить системе.

~$ work
 
Команда «work» не найдена. Возможно, вы имели в виду:
 
  command 'zork' from snap zork (1.0.2)
  command 'worm' from deb bsdgames (2.17-28build1)
 
See 'snap info < snapname>' for additional versions.

Если запустить через ./, то команда выполнится правильно:

~$ ./work
Detecting the Python interpreter
Checking "python" ...
Checking "python3" ...
Python 3.8.10
"python3" has been detected
Adding ESP-IDF tools to PATH...
Using Python interpreter in /home/домен/пользователь/.espressif/python_env/idf4.4_py3.8_env/bin/python
Checking if Python packages are up to date...
Python requirements from /home/домен/пользователь/esp/esp-idf/requirements.txt are satisfied.
Added the following directories to PATH:
  /home/домен/пользователь/esp/esp-idf/components/esptool_py/esptool
  /home/домен/пользователь/esp/esp-idf/components/espcoredump
  /home/домен/пользователь/esp/esp-idf/components/partition_table
  /home/домен/пользователь/esp/esp-idf/components/app_update
  /home/домен/пользователь/.espressif/tools/xtensa-esp32-elf/esp-2021r2-patch3-8.4.0/xtensa-esp32-elf/bin
  /home/домен/пользователь/.espressif/tools/xtensa-esp32s2-elf/esp-2021r2-patch3-8.4.0/xtensa-esp32s2-elf/bin
  /home/домен/пользователь/.espressif/tools/xtensa-esp32s3-elf/esp-2021r2-patch3-8.4.0/xtensa-esp32s3-elf/bin
  /home/домен/пользователь/.espressif/tools/riscv32-esp-elf/esp-2021r2-patch3-8.4.0/riscv32-esp-elf/bin
  /home/домен/пользователь/.espressif/tools/esp32ulp-elf/2.28.51-esp-20191205/esp32ulp-elf-binutils/bin
  /home/домен/пользователь/.espressif/tools/esp32s2ulp-elf/2.28.51-esp-20191205/esp32s2ulp-elf-binutils/bin
  /home/домен/пользователь/.espressif/tools/openocd-esp32/v0.11.0-esp32-20211220/openocd-esp32/bin
  /home/домен/пользователь/.espressif/python_env/idf4.4_py3.8_env/bin
  /home/домен/пользователь/esp/esp-idf/tools
Done! You can now compile ESP-IDF projects.
Go to the project directory and run:
 
  idf.py build

Чтобы иметь возможность не указывая ./ запускать скрипт или программу, необходимо записать исполняемый файл в один из каталогов, на который указывает переменная окружения $PATH (отдельные пути отделены друг от друга двоеточием):

$ echo $PATH
/home/linuxbrew/.linuxbrew/bin:/home/linuxbrew/.linuxbrew/sbin:/home/домен/пользователь/.local/bin
 :/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

[Запуск "через точку", команда source]

Скрипт в текущем каталоге можно запускать, указав перед именем скрипта точку и пробел:

$ . work
Detecting the Python interpreter
Checking "python" ...
Checking "python3" ...
Python 3.8.10
"python3" has been detected
Adding ESP-IDF tools to PATH...
Using Python interpreter in /home/домен/пользователь/.espressif/python_env/idf4.4_py3.8_env/bin/python
Checking if Python packages are up to date...
Python requirements from /home/домен/пользователь/esp/esp-idf/requirements.txt are satisfied.
Added the following directories to PATH:
  /home/домен/пользователь/esp/esp-idf/components/esptool_py/esptool
  /home/домен/пользователь/esp/esp-idf/components/espcoredump
  /home/домен/пользователь/esp/esp-idf/components/partition_table
  /home/домен/пользователь/esp/esp-idf/components/app_update
  /home/домен/пользователь/.espressif/tools/xtensa-esp32-elf/esp-2021r2-patch3-8.4.0/xtensa-esp32-elf/bin
  /home/домен/пользователь/.espressif/tools/xtensa-esp32s2-elf/esp-2021r2-patch3-8.4.0/xtensa-esp32s2-elf/bin
  /home/домен/пользователь/.espressif/tools/xtensa-esp32s3-elf/esp-2021r2-patch3-8.4.0/xtensa-esp32s3-elf/bin
  /home/домен/пользователь/.espressif/tools/riscv32-esp-elf/esp-2021r2-patch3-8.4.0/riscv32-esp-elf/bin
  /home/домен/пользователь/.espressif/tools/esp32ulp-elf/2.28.51-esp-20191205/esp32ulp-elf-binutils/bin
  /home/домен/пользователь/.espressif/tools/esp32s2ulp-elf/2.28.51-esp-20191205/esp32s2ulp-elf-binutils/bin
  /home/домен/пользователь/.espressif/tools/openocd-esp32/v0.11.0-esp32-20211220/openocd-esp32/bin
  /home/домен/пользователь/.espressif/python_env/idf4.4_py3.8_env/bin
  /home/домен/пользователь/esp/esp-idf/tools
Done! You can now compile ESP-IDF projects.
Go to the project directory and run:
  idf.py build

Это сделано для того, чтобы скрипт мог экспортировать результаты своей работы (например модификацию переменной $Path) в текущее рабочее окружение (сеанс работы в консоли команд). Поэтому чтобы из скрипта можно было поменять текущую директорию, надо запускать его через точку или команду команду source.

Примечание: команда точка эквивалентна команде source, т. е. для этого примера . work и source work дадут одинаковый результат.

Сообщения об ошибках системы нужно смотреть в файлах системного лога (/var/log/syslog) и лога ядра (/var/log/kern.log) [10]. Также очень удобна для этой цели утилита journalctl (запускать надо с правами администратора, через sudo), она подсвечивает сообщения определенного вида разными цветами.

Это можно сделать командой lspci. Более подробный вывод можно получить, если добавить опцию -v, и еще более подробный если опцию -vv.

Также в очень удобном виде информацию о системе предоставляет программа hardinfo (установка командой sudo apt install hardinfo). Вот пример вывода команды hardinfo:

hardinfo

Нажмите Alt + F8, после этого клавишами со стрелками можно изменить размеры окна.

Иногда при открытии файла окно открывается на другом мониторе, да еще и так, что недоступна верхняя плашка окна. Как в таком случае перетащить окно на другое место?

Способ 1. Можно воспользоваться предыдущим советом - уменьшить размер окна, чтобы стала доступна верхняя плашка окна. Потом можно за эту верхнюю плашку перетащить окно.

Способ 2. Нажмите клавишу Win и кликните правой кнопкой мыши на окно. Появится контекстное меню, в которой будет пункт "Переместить". Выберите этот пункт, после этого окно будет перемещаться вслед движениям мыши.

[Мои нерешенные проблемы]

1. При включении каждый раз надо заново вводить логин в приглашении. Вопрос: можно ли от этого избавиться? Возможен ли на Linux автологин, как на Windows?

2. При старте каждый раз запускается Pidgin 2.13.0. Как отключить?

3. Кракозябры на русских именах файлов Windows. И наоборот - Windows 10 тоже показывает русскоязычные имена файлов, которые были созданы на Ubuntu, кракозябрами.

4. Почему не работают некоторые горячие клавиши Double Commander? Например Alt+F5?

5. Как сделать ярлычок, который будет запускать терминал и в нем нужный скрипт?

6. На экране блокировки нет индикации, включен ли CapsLock. Для беспроводной клавиатуры это актуально. Приходится кликать на «глазок», чтобы был виден ввод символов.

7. При включении на двух подключенных, стоящих рядом мониторах рабочие столы поменяны местами. Как это исправить, непонятно. После успешного логина мониторы рабочие столы возвращаются на правильные места.

8. Индикатор en/ru находится в неудобном месте, справа вверху экрана.

9. Как во всей системе глобально настроить стандартные клавиши работы с буфером обмена для вставки и копирования?

10. Как настроить putty и x-terminal-emulator, чтобы у них копирование и вставка текста работали одинаково привычно, как работает это в putty на Windows? Надо чтобы выделение текста мышью автоматически заполняло этим текстом буфер обмена, а правый клик делал вставку текста из буфера обмена.

11. Как запускать putty в качестве локального терминала?

12. Почему имена, начинающиеся с !, отображаются с одинарными кавычками?

13. Звуковой редактор Audiocity я установил простой распаковкой скачанного архива. Как сделать ярлык на рабочем столе для запуска Audiocity?

14. В каком файле прописаны глобальные комбинации клавиш?

15. Process Explorer для Ubuntu?

[Ссылки]

1. Как поменять горячие клавиши gedit.
2. Основные log файлы в Ubuntu site:ubuntu-admin.ru.
3. Ошибка скрипта bash, неверный интерпретатор: Нет такого файла или каталога.
4. Ubuntu: как поменять переключение раскладки клавиатуры.
5. 5 способов установить Windows-программы на Linux site:lifehacker.ru.
6. How to find all files containing specific text (string) on Linux? site:stackoverflow.com.
7. Команда Grep в Linux (поиск текста в файлах) site:routerus.com.
8. Панель Unity site:help.ubuntu.ru.
9. grep: примеры использования.
10Просмотр сообщений dmesg в реальном времени.
11. Ubuntu: автоматическая установка переменных окружения.

 

Добавить комментарий


Защитный код
Обновить

Top of Page