8 опечаток, которых действительно нужно избегать в Linux

Опубликовано: 2023-01-15
Крупный план клавиши с надписью «Ой!»
Redpixel.pl/Shutterstock
Дважды проверьте, правильно ли вы ввели команду, прежде чем нажимать «Enter». В Linux опечатка может иметь разрушительные последствия. Используйте завершение с помощью табуляции, чтобы автоматически заполнять как можно больше записей командной строки. Псевдонимы для длинных и сложных команд — тоже отличная идея.

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

Оглавление

Командная строка Linux
1. Не забывайте -а
2. Использование неправильного идентификатора диска с dd
3. Использование неправильного идентификатора диска с mkfs
4. Не удаляйте файл crontab
5. Повторение истории
6. Бедствие пространств
7. Использование > вместо >>
8. Перенаправление в неверном направлении
Как избежать опечаток в командной строке

Командная строка Linux

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

Когда вы нажимаете «Enter», все, что вы набираете, обрабатывается оболочкой. Псевдонимы и переменные расширяются. Идентифицируются команды, опции и параметры. Это называется разбором. На следующем шаге ваш проанализированный ввод передается командам, которые будут выполнять ваши инструкции.

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

Простая опечатка может быть поистине разрушительной. Уровень разрушения зависит от команды и ошибки. Вы можете потерять время. Вы можете потерять файл. Вы можете потерять всю файловую систему.

СВЯЗАННЫЕ С: Что такое оболочка Bash и почему она так важна для Linux?

1. Не забывайте -а

Возможно, вам потребуется добавить кого-то в группу, чтобы разрешить ему, скажем, использовать определенную часть программного обеспечения. Например, VirtualBox требует, чтобы пользователи были частью группы «vboxusers». Мы можем сделать это с помощью usermod .

Команда groups выводит список групп пользователя.

 группы 

Список групп пользователя с помощью команды groups

Мы добавим пользователя dave в новую группу. Параметр -a (дополнение) добавляет новую группу в список существующих групп, в которых состоит пользователь. Параметр -G (группы) идентифицирует группу.

 sudo usermod -a -G vboxusers Дэйв 

Добавление пользователя в новую группу с помощью команды usermod

Новая группа видна после входа и выхода пользователя.

 группы 

Группа vboxusers отображается в списке групп, в которых состоит этот пользователь

Сейчас он в группе «vboxusers». Однако, если вы забудете использовать параметр -a (добавить), все существующие группы пользователя будут удалены. Единственная группа, в которой они будут, это новая группа.

Это неправильная команда:

 sudo usermod -G vboxusers Дэйв 

Добавление пользователя в группу без использования параметра -a append

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

 группы 

Теперь пользователь находится в одной группе

Если у вас есть один настроенный пользователь, и вы делаете это с ним, у вас будут серьезные проблемы. Во-первых, пользователь больше не является членом группы «sudo», поэтому вы не можете использовать sudo , чтобы начать что-то исправлять.

СВЯЗАННЫЕ: добавление пользователя в группу (или вторую группу) в Linux

2. Использование неправильного идентификатора диска с dd

Команда dd записывает блоки данных в файловые системы. Он часто используется для записи образов ISO на USB-накопители.

В схеме именования устройств хранения данных в Linux для идентификации используется одна буква. Первый жесткий диск называется «/dev/sda», второй — «/dev/sdb», третий — «/dev/sdc» и так далее. Разделы идентифицируются номером. Первый раздел на первом жестком диске — «/dev/sda1», второй — «/dev/sda2» и так далее.

Если вы записываете образ на карту памяти USB, вам необходимо знать идентификатор накопителя карты памяти USB. Мы обнаружим это, lsblk через grep , ища записи с «sd» в них.

 лблк | grep сд 

Использование grep для поиска строк с «sd» в выводе команды lsblk

Мы видим, что жесткий диск «/dev/sda» представляет собой диск объемом 32 ГБ с тремя разделами. Один из разделов — это «/boot», а раздел «/dev/sda3» монтируется в «/», что является корнем файловой системы.

Жесткий диск «/dev/sdb» указан как диск емкостью 7,5 ГБ. Он смонтирован в «/media/dave/Pink». Проще говоря, диск «/dev/sda» — это основной жесткий диск на этом компьютере, а «/dev/sdb» — это USB-накопитель.

Команда для записи файла ISO, который находится в каталоге «~/Downloads», на нашу карту памяти USB:

 sudo dd bs=4M if=Downloads/distro-image.iso of=/dev/sdb conv=fdatasync status=progress 

Запись образа на флешку с помощью команды dd

Нас просят ввести пароль, после чего dd начинает действовать. Нет никаких «Вы уверены?» предупреждения или возможности отступить. Написание начинается немедленно.

Отображение прогресса dd во время записи изображения на карту памяти USB

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

Это неправильная команда:

 sudo dd bs=4M if=Downloads/distro-image.iso of=/dev/sda conv=fdatasync status=progress 

Ошибочная запись образа на основной жесткий диск заканчивается сообщением об ошибке

Мы сказали dd использовать «/dev/sd a », что он и сделал. Действие записи выполняется намного быстрее, но заканчивается предупреждением. Вы только что испортили свою установку Linux.

Проверьте и перепроверьте идентификаторы дисков, прежде чем нажимать «Enter».

СВЯЗАННЫЕ С: Как записать файл ISO на USB-накопитель в Linux

3. Использование неправильного идентификатора диска с mkfs

Существуют и другие команды, которые принимают идентификаторы дисков как часть своей командной строки, например инструменты mkfs . Эти диски форматируют, создавая файловые системы на разделах.

На этом компьютере у нас есть диск на 25 ГБ и диск на 10 ГБ.

Вывод lsblk, переданный через grep, отображает жесткие диски в компьютере.

Если мы хотим создать файловую систему Ext4 в первом разделе 10-гигабайтного диска, мы будем использовать эти команды.

 sudo размонтировать /dev/sdb1
 судо mkfs.ext4 /dev/sdb1 

Создание файловой системы ext4 на USB-накопителе

Но если мы совершим ошибку, используя «a» вместо «b» в идентификаторе диска, мы сотрем один из разделов на 25-гигабайтном диске и сделаем наш компьютер недоступным для загрузки.

Это неправильная команда:

 sudo размонтировать /dev/sda1
 судо mkfs.ext4 /dev/sda1 

Ошибочное форматирование основного диска компьютера

Эта маленькая буква имеет большое значение, поэтому убедитесь, что вы выбрали правильный диск.

СВЯЗАННЫЕ С: Как использовать команду mkfs в Linux

4. Не удаляйте файл crontab

Демон cron запускает задачи в заданное для вас время. Он берет свою конфигурацию из файла crontab . Каждый пользователь, включая root, может иметь файл crontab . Чтобы отредактировать ваш crontab , используйте эту команду:

 кронтаб -е 

Команда для редактирования файла crontab: crontab -e

Файл crontab открывается в редакторе. Вы можете вносить изменения и добавлять новые команды.

Файл crontab, открытый в редакторе

Но если вы наберете команду с ошибкой и нажмете «r» вместо «e», вы удалите — как при удалении — ваш файл crontab .

Это неправильная команда:

 кронтаб -р 

Команда, которая удаляет ваш файл crontab: crontab -r

В следующий раз, когда вы воспользуетесь командой crontab -e , вы увидите пустой файл по умолчанию.

Эту ошибку легко совершить, потому что на большинстве клавиатур буквы «e» и «r» расположены рядом друг с другом. Пересборка сложного файла crontab не доставляет удовольствия.

СВЯЗАННЫЕ С: Что такое Cron Job и как вы их используете?

5. Повторение истории

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

Команда history перечисляет ваши предыдущие команды в окне терминала. Они пронумерованы. Чтобы повторно использовать команду, поставьте перед ее номером восклицательный знак « ! ", и нажмите клавишу "Enter".

 история 

Предположим, мы клонировали репозиторий Git, запутались с ним и удалили его. Нам нужно клонировать его еще раз. Прокручивая окно терминала, мы вскоре можем обнаружить команду git clone . Мы можем повторно запустить его, набрав:

 !60

Но если мы только взглянули на экран и неправильно прочитали число, мы можем ошибочно выбрать следующее число:

 !61

Это запускает следующую команду в списке, rm * . Это удалит все файлы в вашем текущем каталоге.

Вы также можете использовать « ! восклицательный знак со строкой текста. Первая совпадающая команда выполняется для вас. Он не отображается, чтобы вы могли убедиться, что это тот, о котором вы думали, он выполняется немедленно.

Представьте себе сценарий, в котором у вас есть скрипт с именем «restart.sh». Этот сценарий устанавливает по умолчанию набор файлов конфигурации для некоторого программного обеспечения, которое вы пишете. Периодически, когда вы разрабатываете и тестируете, вам нужно стереть все с доски, поэтому вы вызываете свой сценарий.

Этой команды должно быть достаточно, чтобы найти и сопоставить команду в вашей истории и выполнить ее.

 !ре

Но если вы использовали команду reboot с тех пор, как в последний раз использовали свой сценарий, это команда reboot будет найдена и немедленно выполнена.

Команда rm * запускается по ошибке

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

СВЯЗАННЫЕ С: Как использовать команду history в Linux

6. Бедствие пространств

Пробелы в именах файлов и путях к каталогам могут вызвать хаос. Вот почему их всегда следует экранировать или заключать в кавычки.

Как работать с пробелами в именах файлов в Linux
СВЯЗАННЫЕ Как работать с пробелами в именах файлов в Linux

Проблем с пробелами можно избежать, используя автодополнение с помощью табуляции. Нажмите клавишу «Tab», когда вы вводите имя файла или путь к каталогу, и оболочка автоматически заполнит столько путей или имен файлов, сколько сможет. Возможно, вам придется ввести букву, чтобы отличить нужный файл от любых других файлов, которые имеют часть того же имени, но еще одно нажатие клавиши «Tab» дополнит оставшуюся часть имени файла для вас.

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

Допустим, у нас есть каталог «Разработка», который содержит два других каталога: «геокодер» и «бин». Внутри каталога «geocoder» также есть каталог «bin».

Чтобы удалить файлы в каталоге «geocoder/bin» и удалить каталог, вы должны использовать эту команду.

 rm -r геокодер/бин 

Удаление каталога geocoder/bin

Теперь представьте, что вы случайно добавили пробел после «geocoder/», вот так.

Это неправильная команда:

 rm -r геокодер/бин 

Ошибочное удаление каталогов geocoder и bin

Бум. Каталог «Разработка» теперь пуст. Каталоги «Development/geocoder», «Development/geocoder/bin» и «Development/bin» были полностью уничтожены.

Помните, завершение табуляции — ваш друг.

СВЯЗАННЫЕ С: Используйте автозаполнение табуляции для быстрого ввода команд в любой операционной системе

7. Использование > вместо >>

Перенаправление отправляет вывод процесса в файл. Мы используем знак «больше» « > », чтобы зафиксировать выходные данные процесса. Если файл существует, он сначала очищается.

Допустим, мы расследуем утечку памяти. У нас есть скрипт под названием «memlog.sh». Он отображает статистику памяти один раз в секунду. Мы собираемся перенаправить это в файл с именем «memory.txt» для последующего анализа.

 memlog.sh > memory.txt
 головная память.txt 

Захват и отображение вывода сценария memlog.sh

На следующий день мы хотим продолжить наше расследование и перезапускаем скрипт. На этот раз нам нужно использовать два знака «больше» « >> », чтобы новые данные добавлялись к файлу.

 memlog.sh >> memory.txt 

Добавление новых данных в конец существующего файла

Если мы используем один знак «больше» «>», мы потеряем вчерашние данные, потому что файл очищается первым.

СВЯЗАННЫЕ: Что такое stdin, stdout и stderr в Linux?

8. Перенаправление в неверном направлении

Перенаправление может использовать содержимое файла в качестве входных данных для программы.

У нас есть файл с именем «placenames.sql», который мы хотим импортировать в sqlite3 . Файл схемы описывает, как воссоздать таблицы базы данных. Он также содержит данные, которые мы хотим сохранить в базе данных. 1,3 ГБ и более 11 миллионов строк — это большой файл.

 ls -hl топонимы.sql
 wc топонимы.sql 

Проверка размера файла с помощью ls и wc

С помощью этой команды мы можем создать новую базу данных с именем «places.sqlite3».

 sqlite3 places.sqlite3 < placenames.sql 

Импорт схемы из файла в sqlite3

Чаще всего при перенаправлении мы используем символ «>». Вы должны сконцентрироваться, чтобы не набирать «>» по привычке. Если вы это сделаете, любой вывод, который генерирует sqlite3 , записывается в ваш файл схемы, уничтожая его.

Это неправильная команда:

 sqlite3 places.sqlite3 > топонимы.sql 

Ошибочное перенаправление в файл схемы из sqlite3

Наш файл схемы был уничтожен, перезаписан приветственным сообщением оболочки sqlite3 .

 кошачьи топонимы.sql 

Перезаписанный файл схемы, содержащий приветственное сообщение sqlite3.

До свидания, 1,3 ГБ данных.

Как избежать опечаток в командной строке

Есть хорошие привычки, которые вы можете принять, чтобы избежать подобных ошибок.

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

Создайте свои собственные короткие и запоминающиеся псевдонимы для длинных и сложных команд, которые вам время от времени нужно использовать. Таким образом, вы не запутаетесь, используя неправильные параметры и параметры.

Как печатать меньше и работать быстрее в терминале Linux
СВЯЗАННЫЕ С : Как меньше печатать и работать быстрее в терминале Linux

Общеизвестно, что трудно вычитывать собственное письмо, но это то, что вам нужно сделать в командной строке. Почитайте, что там на самом деле. Не смотрите на него и не думайте, что он говорит то, что вы хотели напечатать. Что это на самом деле говорит? Потому что это то, что он действительно собирается сделать.

СВЯЗАННЫЕ С: 8 смертельных команд, которые вы никогда не должны запускать в Linux