8 опечаток, которых действительно нужно избегать в Linux
Опубликовано: 2023-01-15Командная строка Linux обеспечивает большие возможности. Проблема в том, что правильное использование этой силы зависит от точности вашего набора текста. Вот восемь опечаток, которые вы никогда не захотите сделать.
Командная строка Linux
1. Не забывайте -а
2. Использование неправильного идентификатора диска с dd
3. Использование неправильного идентификатора диска с mkfs
4. Не удаляйте файл crontab
5. Повторение истории
6. Бедствие пространств
7. Использование > вместо >>
8. Перенаправление в неверном направлении
Как избежать опечаток в командной строке
Командная строка Linux
Командная строка Linux — это портал к великой силе, но одной опечатки достаточно, чтобы эта сила повернулась против вас. Мы все слышали о команде, которую вы никогда не должны запускать. Здесь мы говорим о командах, которые вы действительно хотите запускать, но одна ошибка может привести к катастрофе.
Когда вы нажимаете «Enter», все, что вы набираете, обрабатывается оболочкой. Псевдонимы и переменные расширяются. Идентифицируются команды, опции и параметры. Это называется разбором. На следующем шаге ваш проанализированный ввод передается командам, которые будут выполнять ваши инструкции.
Если вы сделаете ошибку при вводе команд, она может быть воспринята как синтаксическая ошибка. Но если ваша ошибка создаст другую допустимую командную строку, она будет выполнена.
Простая опечатка может быть поистине разрушительной. Уровень разрушения зависит от команды и ошибки. Вы можете потерять время. Вы можете потерять файл. Вы можете потерять всю файловую систему.
СВЯЗАННЫЕ С: Что такое оболочка Bash и почему она так важна для Linux?
1. Не забывайте -а
Возможно, вам потребуется добавить кого-то в группу, чтобы разрешить ему, скажем, использовать определенную часть программного обеспечения. Например, VirtualBox требует, чтобы пользователи были частью группы «vboxusers». Мы можем сделать это с помощью usermod
.
Команда groups
выводит список групп пользователя.
группы
Мы добавим пользователя dave
в новую группу. Параметр -a
(дополнение) добавляет новую группу в список существующих групп, в которых состоит пользователь. Параметр -G
(группы) идентифицирует группу.
sudo usermod -a -G vboxusers Дэйв
Новая группа видна после входа и выхода пользователя.
группы
Сейчас он в группе «vboxusers». Однако, если вы забудете использовать параметр -a
(добавить), все существующие группы пользователя будут удалены. Единственная группа, в которой они будут, это новая группа.
Это неправильная команда:
sudo usermod -G vboxusers Дэйв
Когда они войдут в следующий раз, они обнаружат, что находятся только в одной группе.
группы
Если у вас есть один настроенный пользователь, и вы делаете это с ним, у вас будут серьезные проблемы. Во-первых, пользователь больше не является членом группы «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 сд
Мы видим, что жесткий диск «/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
начинает действовать. Нет никаких «Вы уверены?» предупреждения или возможности отступить. Написание начинается немедленно.
Однако, если вы введете неправильную букву для идентификатора диска, и она совпадает с существующим жестким диском, вы перезапишете этот диск вместо карты памяти.
Это неправильная команда:
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 ГБ.
Если мы хотим создать файловую систему Ext4 в первом разделе 10-гигабайтного диска, мы будем использовать эти команды.
sudo размонтировать /dev/sdb1
судо mkfs.ext4 /dev/sdb1
Но если мы совершим ошибку, используя «a» вместо «b» в идентификаторе диска, мы сотрем один из разделов на 25-гигабайтном диске и сделаем наш компьютер недоступным для загрузки.
Это неправильная команда:
sudo размонтировать /dev/sda1
судо mkfs.ext4 /dev/sda1
Эта маленькая буква имеет большое значение, поэтому убедитесь, что вы выбрали правильный диск.
СВЯЗАННЫЕ С: Как использовать команду mkfs в Linux
4. Не удаляйте файл crontab
Демон cron
запускает задачи в заданное для вас время. Он берет свою конфигурацию из файла crontab
. Каждый пользователь, включая root, может иметь файл crontab
. Чтобы отредактировать ваш crontab
, используйте эту команду:
кронтаб -е
Файл crontab
открывается в редакторе. Вы можете вносить изменения и добавлять новые команды.
Но если вы наберете команду с ошибкой и нажмете «r» вместо «e», вы удалите — как при удалении — ваш файл crontab
.
Это неправильная команда:
кронтаб -р
В следующий раз, когда вы воспользуетесь командой crontab -e
, вы увидите пустой файл по умолчанию.
Эту ошибку легко совершить, потому что на большинстве клавиатур буквы «e» и «r» расположены рядом друг с другом. Пересборка сложного файла crontab
не доставляет удовольствия.
СВЯЗАННЫЕ С: Что такое Cron Job и как вы их используете?
5. Повторение истории
Использование команды history
полезно, когда вы пытаетесь сократить число нажатий клавиш и сэкономить время. Если вы можете вытащить многословную команду из истории, вы получаете скорость и точность. Пока вы выбираете правильную команду из своей истории.
Команда history
перечисляет ваши предыдущие команды в окне терминала. Они пронумерованы. Чтобы повторно использовать команду, поставьте перед ее номером восклицательный знак « !
", и нажмите клавишу "Enter".
история
Предположим, мы клонировали репозиторий Git, запутались с ним и удалили его. Нам нужно клонировать его еще раз. Прокручивая окно терминала, мы вскоре можем обнаружить команду git clone
. Мы можем повторно запустить его, набрав:
!60
Но если мы только взглянули на экран и неправильно прочитали число, мы можем ошибочно выбрать следующее число:
!61
Это запускает следующую команду в списке, rm *
. Это удалит все файлы в вашем текущем каталоге.
Вы также можете использовать « !
восклицательный знак со строкой текста. Первая совпадающая команда выполняется для вас. Он не отображается, чтобы вы могли убедиться, что это тот, о котором вы думали, он выполняется немедленно.
Представьте себе сценарий, в котором у вас есть скрипт с именем «restart.sh». Этот сценарий устанавливает по умолчанию набор файлов конфигурации для некоторого программного обеспечения, которое вы пишете. Периодически, когда вы разрабатываете и тестируете, вам нужно стереть все с доски, поэтому вы вызываете свой сценарий.
Этой команды должно быть достаточно, чтобы найти и сопоставить команду в вашей истории и выполнить ее.
!ре
Но если вы использовали команду reboot
с тех пор, как в последний раз использовали свой сценарий, это команда reboot
будет найдена и немедленно выполнена.
На вашем однопользовательском домашнем компьютере это, вероятно, просто раздражает. На общем сервере это раздражает и многих других людей.
СВЯЗАННЫЕ С: Как использовать команду history в Linux
6. Бедствие пространств
Пробелы в именах файлов и путях к каталогам могут вызвать хаос. Вот почему их всегда следует экранировать или заключать в кавычки.
Проблем с пробелами можно избежать, используя автодополнение с помощью табуляции. Нажмите клавишу «Tab», когда вы вводите имя файла или путь к каталогу, и оболочка автоматически заполнит столько путей или имен файлов, сколько сможет. Возможно, вам придется ввести букву, чтобы отличить нужный файл от любых других файлов, которые имеют часть того же имени, но еще одно нажатие клавиши «Tab» дополнит оставшуюся часть имени файла для вас.
Это экономит количество нажатий клавиш, предотвращает появление пробелов из-за опечаток и правильно экранирует любые допустимые пробелы, чтобы они не вызывали проблем.
Допустим, у нас есть каталог «Разработка», который содержит два других каталога: «геокодер» и «бин». Внутри каталога «geocoder» также есть каталог «bin».
Чтобы удалить файлы в каталоге «geocoder/bin» и удалить каталог, вы должны использовать эту команду.
rm -r геокодер/бин
Теперь представьте, что вы случайно добавили пробел после «geocoder/», вот так.
Это неправильная команда:
rm -r геокодер/бин
Бум. Каталог «Разработка» теперь пуст. Каталоги «Development/geocoder», «Development/geocoder/bin» и «Development/bin» были полностью уничтожены.
Помните, завершение табуляции — ваш друг.
СВЯЗАННЫЕ С: Используйте автозаполнение табуляции для быстрого ввода команд в любой операционной системе
7. Использование > вместо >>
Перенаправление отправляет вывод процесса в файл. Мы используем знак «больше» « >
», чтобы зафиксировать выходные данные процесса. Если файл существует, он сначала очищается.
Допустим, мы расследуем утечку памяти. У нас есть скрипт под названием «memlog.sh». Он отображает статистику памяти один раз в секунду. Мы собираемся перенаправить это в файл с именем «memory.txt» для последующего анализа.
memlog.sh > memory.txt
головная память.txt
На следующий день мы хотим продолжить наше расследование и перезапускаем скрипт. На этот раз нам нужно использовать два знака «больше» « >>
», чтобы новые данные добавлялись к файлу.
memlog.sh >> memory.txt
Если мы используем один знак «больше» «>», мы потеряем вчерашние данные, потому что файл очищается первым.
СВЯЗАННЫЕ: Что такое stdin, stdout и stderr в Linux?
8. Перенаправление в неверном направлении
Перенаправление может использовать содержимое файла в качестве входных данных для программы.
У нас есть файл с именем «placenames.sql», который мы хотим импортировать в sqlite3
. Файл схемы описывает, как воссоздать таблицы базы данных. Он также содержит данные, которые мы хотим сохранить в базе данных. 1,3 ГБ и более 11 миллионов строк — это большой файл.
ls -hl топонимы.sql
wc топонимы.sql
С помощью этой команды мы можем создать новую базу данных с именем «places.sqlite3».
sqlite3 places.sqlite3 < placenames.sql
Чаще всего при перенаправлении мы используем символ «>». Вы должны сконцентрироваться, чтобы не набирать «>» по привычке. Если вы это сделаете, любой вывод, который генерирует sqlite3
, записывается в ваш файл схемы, уничтожая его.
Это неправильная команда:
sqlite3 places.sqlite3 > топонимы.sql
Наш файл схемы был уничтожен, перезаписан приветственным сообщением оболочки sqlite3
.
кошачьи топонимы.sql
До свидания, 1,3 ГБ данных.
Как избежать опечаток в командной строке
Есть хорошие привычки, которые вы можете принять, чтобы избежать подобных ошибок.
Используйте завершение с помощью табуляции везде, где это возможно. Вы избежите проблем с пробелами в путях к каталогам и именах файлов.
Создайте свои собственные короткие и запоминающиеся псевдонимы для длинных и сложных команд, которые вам время от времени нужно использовать. Таким образом, вы не запутаетесь, используя неправильные параметры и параметры.
Общеизвестно, что трудно вычитывать собственное письмо, но это то, что вам нужно сделать в командной строке. Почитайте, что там на самом деле. Не смотрите на него и не думайте, что он говорит то, что вы хотели напечатать. Что это на самом деле говорит? Потому что это то, что он действительно собирается сделать.
СВЯЗАННЫЕ С: 8 смертельных команд, которые вы никогда не должны запускать в Linux