История изменений
Исправление sunjob, (текущая версия) :
к mount тоже относится.
#!/bin/bash
echo "--------------------------------------------------------------------------------
mount list
--------------------------------------------------------------------------------"
# Получаем вывод mount
MOUNT_ALL=$(mount)
# Разделяем на группы
MOUNT_SD=$(echo "$MOUNT_ALL" | grep '^/dev/sd' | sort -k3)
MOUNT_SHM=$(echo "$MOUNT_ALL" | grep '/dev/shm' | sort -k3)
MOUNT_OTHER=$(echo "$MOUNT_ALL" | grep -v '^/dev/sd' | grep -v '/dev/shm' | sort -k3)
# Объединяем с пустыми строками между группами
MOUNT_OUTPUT="${MOUNT_SD}
${MOUNT_SHM}
${MOUNT_OTHER}"
# Убираем множественные пустые строки, но оставляем по одной между группами
MOUNT_OUTPUT=$(echo "$MOUNT_OUTPUT" | cat -s)
# Инициализируем максимальные позиции
MAX_ON_POS=0
MAX_TYPE_POS=0
MAX_PAREN_POS=0
# Проходим по строкам для поиска максимальных позиций
while IFS= read -r line; do
[ -z "$line" ] && continue
ON_POS=$(echo "$line" | grep -b -o ' on ' | cut -d: -f1)
if [ -n "$ON_POS" ] && [ "$ON_POS" -gt "$MAX_ON_POS" ]; then
MAX_ON_POS=$ON_POS
fi
TYPE_POS=$(echo "$line" | grep -b -o ' type ' | cut -d: -f1)
if [ -n "$TYPE_POS" ] && [ "$TYPE_POS" -gt "$MAX_TYPE_POS" ]; then
MAX_TYPE_POS=$TYPE_POS
fi
PAREN_POS=$(echo "$line" | grep -b -o '(' | head -1 | cut -d: -f1)
if [ -n "$PAREN_POS" ] && [ "$PAREN_POS" -gt "$MAX_PAREN_POS" ]; then
MAX_PAREN_POS=$PAREN_POS
fi
done <<< "$MOUNT_OUTPUT"
# Если ничего не нашли, выводим как есть
if [ "$MAX_ON_POS" -eq 0 ] || [ "$MAX_TYPE_POS" -eq 0 ] || [ "$MAX_PAREN_POS" -eq 0 ]; then
echo "$MOUNT_OUTPUT"
exit 0
fi
# Выравниваем строки
while IFS= read -r line; do
if [ -z "$line" ]; then
echo ""
continue
fi
ON_POS=$(echo "$line" | grep -b -o ' on ' | cut -d: -f1)
TYPE_POS=$(echo "$line" | grep -b -o ' type ' | cut -d: -f1)
PAREN_POS=$(echo "$line" | grep -b -o '(' | head -1 | cut -d: -f1)
if [ -n "$ON_POS" ] && [ -n "$TYPE_POS" ] && [ -n "$PAREN_POS" ]; then
# Выравниваем 'on'
ON_SPACES=$((MAX_ON_POS - ON_POS))
LINE_WITH_ON="${line:0:$ON_POS}$(printf '%*s' $ON_SPACES '')${line:$ON_POS}"
# Пересчитываем позицию 'type' после выравнивания 'on'
NEW_TYPE_POS=$(echo "$LINE_WITH_ON" | grep -b -o ' type ' | cut -d: -f1)
# Выравниваем 'type'
TYPE_SPACES=$((MAX_TYPE_POS - NEW_TYPE_POS))
LINE_WITH_TYPE="${LINE_WITH_ON:0:$NEW_TYPE_POS}$(printf '%*s' $TYPE_SPACES '')${LINE_WITH_ON:$NEW_TYPE_POS}"
# Пересчитываем позицию '(' после выравнивания 'type'
NEW_PAREN_POS=$(echo "$LINE_WITH_TYPE" | grep -b -o '(' | head -1 | cut -d: -f1)
# Выравниваем '('
PAREN_SPACES=$((MAX_PAREN_POS - NEW_PAREN_POS))
echo "${LINE_WITH_TYPE:0:$NEW_PAREN_POS}$(printf '%*s' $PAREN_SPACES '')${LINE_WITH_TYPE:$NEW_PAREN_POS}"
else
echo "$line"
fi
done <<< "$MOUNT_OUTPUT"
echo "--------------------------------------------------------------------------------"
-->
--------------------------------------------------------------------------------
/dev/sda1 on / type ext4 (rw,noatime,nodiratime,discard,errors=remount-ro)
/dev/sdc1 on /home type ext4 (rw,noatime,nodiratime,data=writeback,commit=15)
/dev/sdd1 on /mnt/add type ext4 (rw,noatime,nodiratime,data=writeback,commit=15)
tmpfs on /dev/shm type tmpfs (rw)
/dev/fuse on /dev/shm/sun/.var/run/doc type fuse (rw,nosuid,nodev,user=sun)
gvfsd-fuse on /dev/shm/sun/.var/run/gvfs type fuse.gvfsd-fuse (rw,nosuid,nodev,user=sun)
proc on /proc type proc (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
sysfs on /sys type sysfs (rw)
fusectl on /sys/fs/fuse/connections type fusectl (rw)
--------------------------------------------------------------------------------
df
#!/bin/bash
# Получаем вывод df -H
DF_OUTPUT=$(df -H)
# Разделяем на группы
DF_SD=$(echo "$DF_OUTPUT" | grep '^/dev/sd')
DF_RAM=$(echo "$DF_OUTPUT" | grep -E '^(tmpfs|devtmpfs)')
DF_OTHER=$(echo "$DF_OUTPUT" | grep -v '^/dev/sd' | grep -v -E '^(tmpfs|devtmpfs)' | grep -v '^Filesystem')
# Заголовок
HEADER=$(echo "$DF_OUTPUT" | head -1)
# Линия-разделитель
LINE=$(printf '%*s' 80 | tr ' ' '-')
# Вывод с обрамлением
echo "$LINE"
echo "$HEADER"
echo "$LINE"
echo "${DF_SD}"
echo ""
echo "${DF_RAM}"
echo ""
echo "${DF_OTHER}"
echo "$LINE"
-->
--------------------------------------------------------------------------------
Filesystem Size Used Avail Use% Mounted on
--------------------------------------------------------------------------------
/dev/sda1 984G 149G 786G 16% /
/dev/sdc1 4.0T 1.9T 1.9T 51% /home
/dev/sdd1 2.0T 1.1T 823G 56% /mnt/add
tmpfs 17G 1.2M 17G 1% /run
devtmpfs 17G 0 17G 0% /dev
tmpfs 4.3G 454M 3.9G 11% /dev/shm
cgroup_root 8.4M 0 8.4M 0% /sys/fs/cgroup
--------------------------------------------------------------------------------
Исправление sunjob, :
к mount тоже относится.
#!/bin/bash
echo "--------------------------------------------------------------------------------
mount list
--------------------------------------------------------------------------------"
# Получаем вывод mount
MOUNT_ALL=$(mount)
# Разделяем на группы
MOUNT_SD=$(echo "$MOUNT_ALL" | grep '^/dev/sd' | sort -k3)
MOUNT_SHM=$(echo "$MOUNT_ALL" | grep '/dev/shm' | sort -k3)
MOUNT_OTHER=$(echo "$MOUNT_ALL" | grep -v '^/dev/sd' | grep -v '/dev/shm' | sort -k3)
# Объединяем с пустыми строками между группами
MOUNT_OUTPUT="${MOUNT_SD}
${MOUNT_SHM}
${MOUNT_OTHER}"
# Убираем множественные пустые строки, но оставляем по одной между группами
MOUNT_OUTPUT=$(echo "$MOUNT_OUTPUT" | cat -s)
# Инициализируем максимальные позиции
MAX_ON_POS=0
MAX_TYPE_POS=0
MAX_PAREN_POS=0
# Проходим по строкам для поиска максимальных позиций
while IFS= read -r line; do
[ -z "$line" ] && continue
ON_POS=$(echo "$line" | grep -b -o ' on ' | cut -d: -f1)
if [ -n "$ON_POS" ] && [ "$ON_POS" -gt "$MAX_ON_POS" ]; then
MAX_ON_POS=$ON_POS
fi
TYPE_POS=$(echo "$line" | grep -b -o ' type ' | cut -d: -f1)
if [ -n "$TYPE_POS" ] && [ "$TYPE_POS" -gt "$MAX_TYPE_POS" ]; then
MAX_TYPE_POS=$TYPE_POS
fi
PAREN_POS=$(echo "$line" | grep -b -o '(' | head -1 | cut -d: -f1)
if [ -n "$PAREN_POS" ] && [ "$PAREN_POS" -gt "$MAX_PAREN_POS" ]; then
MAX_PAREN_POS=$PAREN_POS
fi
done <<< "$MOUNT_OUTPUT"
# Если ничего не нашли, выводим как есть
if [ "$MAX_ON_POS" -eq 0 ] || [ "$MAX_TYPE_POS" -eq 0 ] || [ "$MAX_PAREN_POS" -eq 0 ]; then
echo "$MOUNT_OUTPUT"
exit 0
fi
# Выравниваем строки
while IFS= read -r line; do
if [ -z "$line" ]; then
echo ""
continue
fi
ON_POS=$(echo "$line" | grep -b -o ' on ' | cut -d: -f1)
TYPE_POS=$(echo "$line" | grep -b -o ' type ' | cut -d: -f1)
PAREN_POS=$(echo "$line" | grep -b -o '(' | head -1 | cut -d: -f1)
if [ -n "$ON_POS" ] && [ -n "$TYPE_POS" ] && [ -n "$PAREN_POS" ]; then
# Выравниваем 'on'
ON_SPACES=$((MAX_ON_POS - ON_POS))
LINE_WITH_ON="${line:0:$ON_POS}$(printf '%*s' $ON_SPACES '')${line:$ON_POS}"
# Пересчитываем позицию 'type' после выравнивания 'on'
NEW_TYPE_POS=$(echo "$LINE_WITH_ON" | grep -b -o ' type ' | cut -d: -f1)
# Выравниваем 'type'
TYPE_SPACES=$((MAX_TYPE_POS - NEW_TYPE_POS))
LINE_WITH_TYPE="${LINE_WITH_ON:0:$NEW_TYPE_POS}$(printf '%*s' $TYPE_SPACES '')${LINE_WITH_ON:$NEW_TYPE_POS}"
# Пересчитываем позицию '(' после выравнивания 'type'
NEW_PAREN_POS=$(echo "$LINE_WITH_TYPE" | grep -b -o '(' | head -1 | cut -d: -f1)
# Выравниваем '('
PAREN_SPACES=$((MAX_PAREN_POS - NEW_PAREN_POS))
echo "${LINE_WITH_TYPE:0:$NEW_PAREN_POS}$(printf '%*s' $PAREN_SPACES '')${LINE_WITH_TYPE:$NEW_PAREN_POS}"
else
echo "$line"
fi
done <<< "$MOUNT_OUTPUT"
echo "--------------------------------------------------------------------------------"
df
#!/bin/bash
# Получаем вывод df -H
DF_OUTPUT=$(df -H)
# Разделяем на группы
DF_SD=$(echo "$DF_OUTPUT" | grep '^/dev/sd')
DF_RAM=$(echo "$DF_OUTPUT" | grep -E '^(tmpfs|devtmpfs)')
DF_OTHER=$(echo "$DF_OUTPUT" | grep -v '^/dev/sd' | grep -v -E '^(tmpfs|devtmpfs)' | grep -v '^Filesystem')
# Заголовок
HEADER=$(echo "$DF_OUTPUT" | head -1)
# Линия-разделитель
LINE=$(printf '%*s' 80 | tr ' ' '-')
# Вывод с обрамлением
echo "$LINE"
echo "$HEADER"
echo "$LINE"
echo "${DF_SD}"
echo ""
echo "${DF_RAM}"
echo ""
echo "${DF_OTHER}"
echo "$LINE"
Исправление sunjob, :
к mount тоже относится.
#!/bin/bash
echo "--------------------------------------------------------------------------------
mount list
--------------------------------------------------------------------------------"
# Получаем вывод mount
MOUNT_ALL=$(mount)
# Разделяем на группы
MOUNT_SD=$(echo "$MOUNT_ALL" | grep '^/dev/sd' | sort -k3)
MOUNT_SHM=$(echo "$MOUNT_ALL" | grep '/dev/shm' | sort -k3)
MOUNT_OTHER=$(echo "$MOUNT_ALL" | grep -v '^/dev/sd' | grep -v '/dev/shm' | sort -k3)
# Объединяем с пустыми строками между группами
MOUNT_OUTPUT="${MOUNT_SD}
${MOUNT_SHM}
${MOUNT_OTHER}"
# Убираем множественные пустые строки, но оставляем по одной между группами
MOUNT_OUTPUT=$(echo "$MOUNT_OUTPUT" | cat -s)
# Инициализируем максимальные позиции
MAX_ON_POS=0
MAX_TYPE_POS=0
MAX_PAREN_POS=0
# Проходим по строкам для поиска максимальных позиций
while IFS= read -r line; do
[ -z "$line" ] && continue
ON_POS=$(echo "$line" | grep -b -o ' on ' | cut -d: -f1)
if [ -n "$ON_POS" ] && [ "$ON_POS" -gt "$MAX_ON_POS" ]; then
MAX_ON_POS=$ON_POS
fi
TYPE_POS=$(echo "$line" | grep -b -o ' type ' | cut -d: -f1)
if [ -n "$TYPE_POS" ] && [ "$TYPE_POS" -gt "$MAX_TYPE_POS" ]; then
MAX_TYPE_POS=$TYPE_POS
fi
PAREN_POS=$(echo "$line" | grep -b -o '(' | head -1 | cut -d: -f1)
if [ -n "$PAREN_POS" ] && [ "$PAREN_POS" -gt "$MAX_PAREN_POS" ]; then
MAX_PAREN_POS=$PAREN_POS
fi
done <<< "$MOUNT_OUTPUT"
# Если ничего не нашли, выводим как есть
if [ "$MAX_ON_POS" -eq 0 ] || [ "$MAX_TYPE_POS" -eq 0 ] || [ "$MAX_PAREN_POS" -eq 0 ]; then
echo "$MOUNT_OUTPUT"
exit 0
fi
# Выравниваем строки
while IFS= read -r line; do
if [ -z "$line" ]; then
echo ""
continue
fi
ON_POS=$(echo "$line" | grep -b -o ' on ' | cut -d: -f1)
TYPE_POS=$(echo "$line" | grep -b -o ' type ' | cut -d: -f1)
PAREN_POS=$(echo "$line" | grep -b -o '(' | head -1 | cut -d: -f1)
if [ -n "$ON_POS" ] && [ -n "$TYPE_POS" ] && [ -n "$PAREN_POS" ]; then
# Выравниваем 'on'
ON_SPACES=$((MAX_ON_POS - ON_POS))
LINE_WITH_ON="${line:0:$ON_POS}$(printf '%*s' $ON_SPACES '')${line:$ON_POS}"
# Пересчитываем позицию 'type' после выравнивания 'on'
NEW_TYPE_POS=$(echo "$LINE_WITH_ON" | grep -b -o ' type ' | cut -d: -f1)
# Выравниваем 'type'
TYPE_SPACES=$((MAX_TYPE_POS - NEW_TYPE_POS))
LINE_WITH_TYPE="${LINE_WITH_ON:0:$NEW_TYPE_POS}$(printf '%*s' $TYPE_SPACES '')${LINE_WITH_ON:$NEW_TYPE_POS}"
# Пересчитываем позицию '(' после выравнивания 'type'
NEW_PAREN_POS=$(echo "$LINE_WITH_TYPE" | grep -b -o '(' | head -1 | cut -d: -f1)
# Выравниваем '('
PAREN_SPACES=$((MAX_PAREN_POS - NEW_PAREN_POS))
echo "${LINE_WITH_TYPE:0:$NEW_PAREN_POS}$(printf '%*s' $PAREN_SPACES '')${LINE_WITH_TYPE:$NEW_PAREN_POS}"
else
echo "$line"
fi
done <<< "$MOUNT_OUTPUT"
echo "--------------------------------------------------------------------------------"
Исходная версия sunjob, :
#!/bin/bash
echo "--------------------------------------------------------------------------------
mount list
--------------------------------------------------------------------------------"
# Получаем вывод mount
MOUNT_ALL=$(mount)
# Разделяем на группы
MOUNT_SD=$(echo "$MOUNT_ALL" | grep '^/dev/sd' | sort -k3)
MOUNT_SHM=$(echo "$MOUNT_ALL" | grep '/dev/shm' | sort -k3)
MOUNT_OTHER=$(echo "$MOUNT_ALL" | grep -v '^/dev/sd' | grep -v '/dev/shm' | sort -k3)
# Объединяем с пустыми строками между группами
MOUNT_OUTPUT="${MOUNT_SD}
${MOUNT_SHM}
${MOUNT_OTHER}"
# Убираем множественные пустые строки, но оставляем по одной между группами
MOUNT_OUTPUT=$(echo "$MOUNT_OUTPUT" | cat -s)
# Инициализируем максимальные позиции
MAX_ON_POS=0
MAX_TYPE_POS=0
MAX_PAREN_POS=0
# Проходим по строкам для поиска максимальных позиций
while IFS= read -r line; do
[ -z "$line" ] && continue
ON_POS=$(echo "$line" | grep -b -o ' on ' | cut -d: -f1)
if [ -n "$ON_POS" ] && [ "$ON_POS" -gt "$MAX_ON_POS" ]; then
MAX_ON_POS=$ON_POS
fi
TYPE_POS=$(echo "$line" | grep -b -o ' type ' | cut -d: -f1)
if [ -n "$TYPE_POS" ] && [ "$TYPE_POS" -gt "$MAX_TYPE_POS" ]; then
MAX_TYPE_POS=$TYPE_POS
fi
PAREN_POS=$(echo "$line" | grep -b -o '(' | head -1 | cut -d: -f1)
if [ -n "$PAREN_POS" ] && [ "$PAREN_POS" -gt "$MAX_PAREN_POS" ]; then
MAX_PAREN_POS=$PAREN_POS
fi
done <<< "$MOUNT_OUTPUT"
# Если ничего не нашли, выводим как есть
if [ "$MAX_ON_POS" -eq 0 ] || [ "$MAX_TYPE_POS" -eq 0 ] || [ "$MAX_PAREN_POS" -eq 0 ]; then
echo "$MOUNT_OUTPUT"
exit 0
fi
# Выравниваем строки
while IFS= read -r line; do
if [ -z "$line" ]; then
echo ""
continue
fi
ON_POS=$(echo "$line" | grep -b -o ' on ' | cut -d: -f1)
TYPE_POS=$(echo "$line" | grep -b -o ' type ' | cut -d: -f1)
PAREN_POS=$(echo "$line" | grep -b -o '(' | head -1 | cut -d: -f1)
if [ -n "$ON_POS" ] && [ -n "$TYPE_POS" ] && [ -n "$PAREN_POS" ]; then
# Выравниваем 'on'
ON_SPACES=$((MAX_ON_POS - ON_POS))
LINE_WITH_ON="${line:0:$ON_POS}$(printf '%*s' $ON_SPACES '')${line:$ON_POS}"
# Пересчитываем позицию 'type' после выравнивания 'on'
NEW_TYPE_POS=$(echo "$LINE_WITH_ON" | grep -b -o ' type ' | cut -d: -f1)
# Выравниваем 'type'
TYPE_SPACES=$((MAX_TYPE_POS - NEW_TYPE_POS))
LINE_WITH_TYPE="${LINE_WITH_ON:0:$NEW_TYPE_POS}$(printf '%*s' $TYPE_SPACES '')${LINE_WITH_ON:$NEW_TYPE_POS}"
# Пересчитываем позицию '(' после выравнивания 'type'
NEW_PAREN_POS=$(echo "$LINE_WITH_TYPE" | grep -b -o '(' | head -1 | cut -d: -f1)
# Выравниваем '('
PAREN_SPACES=$((MAX_PAREN_POS - NEW_PAREN_POS))
echo "${LINE_WITH_TYPE:0:$NEW_PAREN_POS}$(printf '%*s' $PAREN_SPACES '')${LINE_WITH_TYPE:$NEW_PAREN_POS}"
else
echo "$line"
fi
done <<< "$MOUNT_OUTPUT"
echo "--------------------------------------------------------------------------------"