LINUX.ORG.RU

История изменений

Исправление 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 "--------------------------------------------------------------------------------"