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

1. Вам нужно создать длинное/сложное древо каталогов, аналогичное приведенному ниже. Какой самый эффективный способ достичь этого?
Структура дерева каталогов для достижения указанного ниже.
$ cd /home/$USER/Desktop $ mkdir tecmint $ mkdir tecmint/etc $ mkdir tecmint/lib $ mkdir tecmint/usr $ mkdir tecmint/bin $ mkdir tecmint/tmp $ mkdir tecmint/opt $ mkdir tecmint/var $ mkdir tecmint/etc/x1 $ mkdir tecmint/usr/x2 $ mkdir tecmint/usr/x3 $ mkdir tecmint/tmp/Y1 $ mkdir tecmint/tmp/Y2 $ mkdir tecmint/tmp/Y3 $ mkdir tecmint/tmp/Y3/z
Приведенную выше ситуацию можно легко реализовать, запустив следующую однострочную команду.
$ mkdir -p /home/$USER/Desktop/tecmint/{etc/x1,lib,usr/{x2,x3},bin,tmp/{Y1,Y2,Y3/z},opt,var}
Чтобы проверить, вы можете использовать команду tree. Если она не установлена, вы можете установить пакет ‘tree‘ с помощью apt или yum.
$ tree tecmint

Мы можем создавать структуру дерева каталогов любой сложности, используя указанный выше способ. Обратите внимание, что это ничто иное, как обычная команда, но она использует {}
для создания иерархии каталогов. Это может оказаться очень полезным при использовании изнутри сценария оболочки по мере необходимости и в общем.
2. Создайте файл (назовем его test) на своем Рабочем столе (/home/$USER/Desktop) и заполните его содержимым, указанным ниже.
ABC DEF GHI JKL MNO PQR STU VWX Y Z
Что бы сделал обычный пользователь в этой ситуации?
a. He will create the file first, preferably using touch command, as:
$ touch /home/$USER/Desktop/test
b. He will use a text editor to open the file, which may be nano, vim, or any other editor.
$ nano /home/$USER/Desktop/test
c. He will then place the above text into this file, save and exit.
Таким образом, независимо от времени, затраченного на него/неё, ему/ей нужно как минимум 3 шага для выполнения указанной выше ситуации.
Что сделает умный опытный пользователь Linux? Он просто напишет нижеуказанный текст в терминале одним действием, и всё готово. Ему не нужно выполнять каждое действие отдельно.
cat << EOF > /home/$USER/Desktop/test ABC DEF GHI JKL MNO PQR STU VWX Y Z EOF
Вы можете использовать команду «cat», чтобы проверить, был ли файл и его содержимое успешно создан.
$ cat /home/avi/Desktop/test
3. Мы очень часто работаем с архивами (особенно TAR-архивами) в Linux. Во многих случаях нам приходится использовать этот TAR-архив в другом месте, отличном от папки Загрузки. Что мы делаем в этом случае?
Обычно мы делаем две вещи в этом случае.
a. Copy/Move the tar ball and extract it at destination, as:
$ cp firefox-37.0.2.tar.bz2 /opt/ or $ mv firefox-37.0.2.tar.bz2 /opt/
b. cd to /opt/ directory.
$ cd /opt/
c. Extract the Tarball.
# tar -jxvf firefox-37.0.2.tar.bz2
Мы можем сделать это наоборот.
Мы извлечем Tarball там, где он находится, и скопируем/переместим извлеченный архив в необходимое место следующим образом:
$ tar -jxvf firefox-37.0.2.tar.bz2 $ cp -R firefox/ /opt/ or $ mv firefox/ /opt/
В любом случае работа занимает два или более шагов для завершения. Профессионал может завершить эту задачу за один шаг, используя:
$ tar -jxvf firefox-37.0.2.tar.bz2 -C /opt/
Опция -C заставляет tar извлечь архив в указанную папку (здесь /opt/).
Нет, это не об опции (-C), а об обычаях. Сделайте привычку использовать опцию -C с tar. Это облегчит вашу жизнь. Теперь не перемещайте архив или копируйте/перемещайте извлеченный файл, просто оставьте TAR-архив в папке Загрузки и извлеките его в любом месте, где захотите.
4. Как мы завершаем процесс традиционным способом?
В наиболее общем случае мы сначала перечисляем все процессы с помощью команды ps -A
и передаем их через канал в grep, чтобы найти процесс/сервис (скажем, apache2), просто как:
$ ps -A | grep -i apache2
Пример вывода
1006 ? 00:00:00 apache2 2702 ? 00:00:00 apache2 2703 ? 00:00:00 apache2 2704 ? 00:00:00 apache2 2705 ? 00:00:00 apache2 2706 ? 00:00:00 apache2 2707 ? 00:00:00 apache2
Вышеуказанный вывод показывает все в настоящее время запущенные процессы apache2 с их PID, затем вы можете использовать эти PID для завершения apache2 с помощью следующей команды.
# kill 1006 2702 2703 2704 2705 2706 2707
и затем проверьте, работает ли какой-либо процесс/сервис с именем «apache2» или нет, как:
$ ps -A | grep -i apache2
Однако мы можем сделать это в более понятном формате, используя утилиты, такие как pgrep и pkill. Вы можете найти соответствующую информацию о процессе, просто используя pgrep. Скажем, вам нужно найти информацию о процессе для apache2, вы можете просто сделать следующее:
$ pgrep apache2
Пример вывода
15396 15400 15401 15402 15403 15404 15405
Вы также можете перечислить имя процесса по pid, запустив.
$ pgrep -l apache2
Пример вывода
15396 apache2 15400 apache2 15401 apache2 15402 apache2 15403 apache2 15404 apache2 15405 apache2
Убить процесс с помощью pkill очень просто. Просто введите имя ресурса для завершения и вы готовы. Я написал пост о pkill, который вам может понравиться, ссылка здесь: https://www.tecmint.com/how-to-kill-a-process-in-linux/.
Чтобы убить процесс (скажем, apache2) с помощью pkill, вам нужно сделать следующее:
# pkill apache2
Вы можете проверить, был ли убит apache2, запустив следующую команду.
$ pgrep -l apache2
Если он возвращает приглашение и ничего не печатает, это означает, что процесс с именем apache2 не запущен.
Это все на данный момент от меня. Все вышеупомянутые моменты недостаточны, но обязательно помогут. Мы не только стремимся создавать учебные пособия, чтобы вы учились чему-то новому каждый раз, но и хотим показать «Как быть более продуктивным в том же кадре». Предоставьте нам свои ценные отзывы в комментариях ниже. Оставайтесь на связи. Продолжайте комментировать.
Source:
https://www.tecmint.com/mkdir-tar-and-kill-commands-in-linux/