Как вывести список только директорий используя ls в Bash

Alexey 04.05.2020 0 Файловая система Bash, cut, echo, find, grep, ls, printf, tree, директории / папки

Что такое алиас домена и зачем он нужен?

Алиас — это дополнительный ресурс, который предоставляет посетителю доступ ко всему контенту с основного домена без переадресации. Допустим, человек хотел зайти на ваш сайт , но не вспомнил суффикс и написал В случае с алиасом произойдет одно из двух:

  1. Посетитель увидит контент, хранящийся на основном сайте, но в адресной строке будет ссылка с «ошибкой» (как с «зеркалом»).
  2. Или будет перенаправлен на главную страницу.

Типы алиасов

Вебмастеры создают связанные адреса нескольких типов в зависимости от поставленных задач. Вот некоторые из них:

  1. Синонимы с одинаковыми названиями сайтов, но с разными доменными именами: , , Нужны, чтобы пользователям не приходилось ломать голову и вспоминать суффикс.
  2. Синонимы с опечатками. , Такие алиасы защищают потенциальных посетителей от распространенных опечаток, а владельцев ресурса от появления подставных страниц, ворующих данные и портящих репутацию бренда.
  3. Еще синонимы используют для создания сокращенных ссылок и названий на русском языке. У Яндекса, например, есть и , ведущие на главную страницу поисковика.

gadgetshelp,com gadgetshelp,com Основные команды Bash | Losst Псевдонимы (алиасы) bash для Laravel / Хабр Bash в ОС Linux / Unix / Mac OS X …

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

Недостатки и неудобства, связанные с алиасами

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

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

Если ваш сайт блокируют, то лучше настроить «зеркало».

Влияние на SEO-продвижение

При индексации вашего сайта поисковыми роботами (Яндекс, Google), в базу данных попадут и основной адрес сайта и все псевдонимы. При этом поисковой робот сам выберет тот адрес, который будет «главным».

Чтобы самостоятельно выбрать главный домен, который будет занесён в базы поисковых систем, необходимо выбрать «главное зеркало» сайта. Например для нашего сайта главным зеркалом является «», а с адресов «» и «» настроена переадресация на главное зеркало.

Чтобы узнать, как настроить главное зеркало, воспользуйтесь справкой Яндекса.

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

Зарегистрируйте домен

Зарегистрируйте домен и получите бесплатно 2 месяца хостинга и SSL-сертификат.

ПодробнееПомогла ли вам статья? ДаНет 129 раз уже помогла

Advanced bash

[[ > [

[ (команда «test») и [[ (новый тест) используются для вычисления выражений. [[ работает только в Bash, Zsh и Korn shell. Также он более мощный. [ доступен в POSIX shells.

#POSIX [ «$variable» ] || echo ‘переменная не задана или пуста’ [ -f «$filename» ] || printf ‘Файла (обычного) нет: %s\n’ «$filename» if [[ ! -e $file ]]; then echo «Файла нет, лидо он не доступен: $file» fi if [[ $file0 -nt $file1 ]]; then printf ‘файл %s новее %s\n’ «$file0» «$file1» fi

Читайте также:  Cockpit: веб-интерфейс управления сервером CentOS/RHEL

Короче говоря, в bash мы используем [[ ]] — он новее, быстрее и т.д. Если имеем какую-нибудь старую POSIX-совместимую Unix оболочку, то используем [ ]. По большей части синтаксис [[ ]] и [ ] схож.

# Унарные операции [[ -d $file ]] # файл типа директория [[ -e $file ]] # файл любого типа (проверка на существование (exists)) [[ -f $file ]] # обычный файл [[ ! -f $file ]] # не (обычный файл). «!» — отрицание [[ -z $var ]] # истина, когда переменная пуста (zero) [[ -n $var ]] # ложь , когда переменная пуста (nonzero) [[ -r $file ]] # файл существует и доступен для чтения [[ -w $file ]] # файл существует и доступен для запись [[ -x $file ]] # догадайтесь сами # Сравнение строк (лексикографический порядок) [[ a < b ]] [[ dog > cat ]] [[ sh = sh ]] [[ bash != sh ]] # Сравнение чисел [[ 5 -lt 10 ]] # less than [[ 100 -gt 99 ]] # greater than [[ 5 -eq 05 ]] # equal [[ 50 -ne 05 ]] # not equal # Логические операции [[ -n $var && -f $var ]] # переменная определеня и есть файл, указанный в ней. [[ $(pwd) == $HOME || $(pwd) == ‘/’ ]] # мы в директории $HOME или в корне. # Сравнение с шаблоном [[ $(pwd) == $HOME/* ]] # мы в поддиректории домашней папки или в ней # Регулярные выражения [[ $(date) =~ ^пятница ]] && echo Сегодня пара по ОСям

printf

printf — везде!

Его можно найти в bash, C, C++, python, perl, php, …

По сути — форматированный вывод. Рассмотрим варианты шаблонов вывода:

%c Символ %d Десятичное целое число со знаком %i Десятичное целое число со знаком %e Научный формат (строчная буква е) %Е Научный формат (прописная буква Е) %f Десятичное число с плавающей точкой %g В зависимости от того, какой формат короче, применяется либо %e, либо %f %G В зависимости от того, какой формат короче, применяется либо %E, либо %f %o Восьмеричное число без знака %s Строка символов %u Десятичное целое число без знака %x Шестнадцатеричное число без знака (строчные буквы) %X Шестнадцатеричное число без знака (прописные буквы) %% Знак %

Хех, не всё так просто!

  • Например, спецификатор %05d заполнит нулями пустующие позиции поля вывода, если количество цифр в целом числе, подлежащем выводу, будет меньше пяти.
  • Например, форматный код % выведет на экран число, у которого количество цифр не превышает 10, четыре из которых размещаются после десятичной точки.
  • На­пример, спецификатор % выравнивает число с двумя знаками после точки по левому краю поля, состоящего из 10 позиций.

Немного примеров:

printf «%s\n» «Hello world» # Вывести строку с переводом строки printf «%.2f рублей» 2,3333333 # «2,33 рублей» printf «\e[1;34m%.3d\e[0m\n» 42 # Вывести жирным синим цифры

Не успели. Всё же 2 пары за одну… Успели бы без ответов на вопросы. Но это не наш путь!

  • awk
  • раскраска вывода
  • sed

printf

Чтобы вывести все директории на отдельных строках (аналогично -1)

printf "%s\n" */

Предыдущий пример работает правильно с именами "-", пробелами и переводами строк (newline).

Улучшенный пример, удаляет последний слэш (/), правильно работает с именами, содержащими пробелы и переводы строк:

set — */; printf "%s\n" "${@%/}"

Пример с функцией. Наконец, использование списка аргументов внутри функции не повлияет на список аргументов текущей запущенной оболочки:

listdirs(){ set — */; printf "%s\n" "${@%/}"; }

Для запуска функции:

listdirs

Связанная статья: Инструкция по использованию printf в Bash для форматирования и вывода данных

Читайте также:  Linux Admin — Резервное копирование и восстановление

Информация о файлах, каталогах и процессах

Для вывода информации о содержании каталога используется команда ls. Если использовать ее без ключей, то она просто выведет информацию об имеющихся в данной (или указанной) директории файлах и директориях. Основные ключи, которые часто используются с этой командой:

-a — вам будут показаны все файлы директории, в том числе те, которые начинаются с . (точки);

-s — запрос информации о размерах файлов (или директорий);

-l — данные о файлах, в частности имя пользователя, который их создал, права доступа и время создания;

-h — перевод размера файлов в удобном для восприятия формат (Кбайт, Мбайт и т.д.).

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

ls -sh

Другой командой, которая поможет вам получить необходимую информацию, является команда du. К примеру, введя эту команду:

du -sk *

вы получите информацию о размерах и именах файлов.

Информацию о работающих процессах вы можете получить при помощи команды df. Лучше всего использовать ее сразу с ключом -h, чтобы данные были показаны в более удобном для чтения формате:

df -h

Потоки

Файл, из которого осуществляется чтение, называется стандартным потоком ввода, а в который осуществляется запись — стандартным потоком вывода.

Стандартные потоки:

0 stdin, ввод 1 stdout, вывод 2 stderr, поток ошибок

При перенаправлении потоков, вы можете указывать ссылки на определенные потоки. Например, перенаправим вывод и ошибки команды в файл:

command 2>&1 # ошибки (stderr) в stdout command > ~/ 2>&1 # stdout в файл command &> ~/ # весь вывод в файл

Перенаправление потоков

Для перенаправления потоков используются основные команды: <, >, >>, <<<, |. Рассмотрим как можно перенаправлять стандартные потоки.

Перенаправление потока вывода:

> перенаправить поток вывода в файл (файл будет создан или перезаписан) >> дописать поток вывода в конец файла

Перенаправление потока ввода (прием данных):

< файл в поток ввода (файл будет источником данных) <<< чтение ОДНОЙ строки вместо содержимого файла (для bash 3 и выше)

Перенаправление вывода ошибок:

2> перенаправить поток ошибок в файл 2>> дописать ошибки в файл (файл будет создан или перезаписан)

Примечание

Если вам нужно захватить вывод команды в переменную и при этом отобразить вывод на экране, используйте tee:

my_var=$(my_ | tee /dev/tty)

Подстановка процессов

Передать процессу команда1 файл (созданный налету канал или файл /dev/fd/…), в котором находятся данные, которые выводит команда2:

команда1 <(команда2)

Примеры

Логировать результат поиска и ошибки:

find . -maxdepth 1 -name ‘*.png’ > ~/ 2> ~/

Эта конструкция позволяет читать из строки как из файла. Демонстрационный пример:

str=’one,two’; tr ‘,’ ‘ ‘ <<<$str

Создаем временный файл и записываем в него поток переданный скрипту:

tmp_file=$(tempfile) # /tmp/fileXXXXXX cat > $tmp_file

А теперь откроем файл в текстовом редакторе с «отвязкой» (отключением) от терминала, подавляем вывод сообщений в терминал:

(sublime-text $tmp_file &) 2> /dev/null > /dev/null

Примеры работы с учетными записями

Команда useradd

Во-первых, давайте посмотрим на поведение команды useradd по умолчанию. Вы когда-нибудь запускали следующую команду?

useradd NewUser

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

Например, в нашей системе указанная выше команда добавила следующую запись в файл /etc/passwd.

Если вы читали статью о перечислении пользователей в Linux, вы, вероятно, уже знакомы с содержанием файла /etc/passwd. Сначала это выглядит хорошо, но если вы начнете копать, вы скоро заметите, что некоторые вещи не совсем правильные.

Читайте также:  Восстановление Windows 10 из «Командной строки»

Во-первых, второе поле содержит «х». Это означает, что заполнитель для информации о пароле находится в /etc/shadow. Но мы не установили пароль. Это означает, что тестовый пользователь не сможет войти в систему.

Во-вторых, домашний каталог. Дело в том, что /home/test не существует. Даже после того, как вы установили пароль, произойдет ошибка, если пользователь войдет в систему. В зависимости от другой конфигурации ваша система Linux может запретить пользователю входить без действительного домашнего каталога. Скорее всего, пользователь test позволит войти в систему, по крайней мере, в текстовом режиме. Но пользователь test не сможет создать свой домашний каталог.

В-третьих, оболочкой по умолчанию является sh, а не bash. Мы не используем sh как оболочку. Вы, вероятно, тоже не знаете, потому что bash является оболочкой по умолчанию в большинстве дистрибутивов Linux.

В то время как useradd-х поведение можно немного изменить, отредактировав /etc/, существует мало шансов, что приведенная выше команда создаст полную учетную запись пользователя. Useradd является низкоуровневая утилита. Тем не менее, просмотр настроек в /etc/ может быть полезен.

Синтаксис команды useradd

Команда useradd принимает в качестве аргумента имя пользователя, а также различные опции.

Синтаксис команды следующий:

useradd опцииимяпользователя

Создание нового пользователя

Чтобы просто создать пользователя используется команда useradd без каких-либо опций. Указывается только имя пользователя.

sudo useradd pupkin

Данная команда создает нового пользователя с системными параметрами по умолчанию, которые прописаны в файле /etc/default/useradd

Чтобы пользователь мог войти в систему, необходимо задать для него пароль. Для этого используем команду:

sudo passwd pupkin

Создание нового пользователя с домашней директорией в /home

Создадим пользователя и его домашнюю директорию.

sudo useradd -m pupkin

Домашняя директория создается по умолчанию в каталоге /home. Имя директории совпадает с именем пользователя.

Создание нового пользователя с произвольной домашней директорией

Чтобы создать пользователя с домашней директорией, расположенной в произвольном месте, используется опция -d, после которой указывается путь до директории. Директорию необходимо создать заранее.

Создаем домашнюю директорию для будущего пользователя:

sudo mkdir -p /users/pupkin

Копируем файлы и директории, которые по умолчанию создаются в домашней директории пользователя в данной системе. Данные файлы находятся в директории /etc/skel

sudo cp -rT /etc/skel /users/pupkin

Создаем пользователя и указываем домашнюю директорию:

sudo useradd -d /users/pupkin pupkin

Меняем права доступа у домашней директории:

sudo chown -R pupkin:pupkin /users/pupkin

Задаем пароль для пользователя:

sudo passwd pupkin

Можно просмотреть информацию о пользователе, которая сохранена в файле /etc/passwd

cat /etc/passwd | grep pupkin pupkin:x:1001:1001::/users/pupkin:/bin/sh

Создание нового пользователя с произвольными UID, GID

Каждый пользователь в Linux имеет свой числовой идентификатор — UID, а также идентификатор основной группы пользователя — GID.

При создании пользователя можно задать произвольные номера UID и/или GID. При указании номера группы, группа с этим номером должна быть создана заранее.

useradd -u 1234 -g 1222 pupkin

Создание пользователя с указанием оболочки (shell)

По умолчанию новые пользователи создаются с оболочкой /bin/sh Чтобы задать другую оболочку, используется опция -s /путь/до/оболочки

sudo useradd -m -s /bin/bash pupkin

Смотрите также: Как определить и изменить командную оболочку (shell) в Linux

Создать пользователя и добавить его в группы

Обычно пользователи в Linux принадлежат нескольким группам. Чтобы при создании нового пользователя задать группы, к которым он будет принадлежать, используется опция -G список,групп

sudo useradd -m -G adm,cdrom,wheel -s /bin/bash pupkin

Смотрите также: «Добавление пользователя в группу. Списки пользователей и групп в Linux»