Fedora “диск, полный”, df, du (gui), подтверждает, но gparted показывает, что раздел является достаточно большим

Если вы сменили имя хоста на «богон», поэтому приглашение изменилось. При необходимости можно изменить переменную $ PS1 в /etc/bash.bashrc так, чтобы она всегда отображала username @ localhost вместо username @ hostname .

-121--146239-

Мой сценарий работает, если оба значения, разделенные разделителем, имеют одинаковое количество символов.

Если бы вы хотели произвольное количество мест, это было бы невозможно, потому что вы могли бы попасть в такие ситуации, как:

key1 12|1222 10|15

key1 12 10
key1 1222 15

В этой ситуации вы просто не можете выровнять '15' в столбец под '10', потому что столбец уже занят '1222'.

EDIT: Я переписал код, поэтому он принимает произвольное количество строк и даже произвольное количество труб:-)


CODE:

script.sh:

#!/bin/bash

# count max number of pipes -> recognizes number of lines
countPipes() {
    num=0
    line="$@"
    IFS=' '
    for item in $line; do
        tmp=$(echo "$item" | tr -d "[:alnum:][:space:]" | wc -c)

        if [[ "$num" < "$tmp" ]]; then
            num=$tmp
        fi
    done

    return $num
}

makeLines() {
    strTmp="$@" # one line from input file

    arrTmp=($strTmp)
    key=${arrTmp[0]}
    arrIN=$key

    # create output arrays (one array = one output line)
    countPipes $strTmp
    maxPipeCount=$? # assign the value of the last 'return'

    for((i=0;i<$maxPipeCount;++i)); do
        arrOUT[$i]="$key"
    done

    for item in ${strTmp[@]}; do
        # Delimiter handling
        if [[ $item == *\|* ]]; then # If there is a pipe
            IFS='|'
            tmp=($item) # variable containing pipe character -> split by space -> array
            IFS=' '

            arrIN="$arrIN ${tmp[0]}"

            for ((i=0;i<"${#arrOUT[@]}";++i)); do # fill columns in every output line - i = index in line
                if [[ "${#tmp[$(($i + 1))]}" -gt 0 ]]; then
                    arrOUT[$i]="${arrOUT[$i]} ${tmp[$(($i + 1))]}"
                else
                    # Handling spaces in output
                    for ((j=0;j<="${#tmp[0]}";++j)); do # filling line with spaces - j = just counter, not index
                        arrOUT[$i]="${arrOUT[$i]} "
                    done
                fi
            done

        elif [[ "$item" != "$key" ]]; then # If there isn't a pipe
            arrIN="$arrIN $item"

            # Handling spaces in output
            for ((i=0;i<"${#arrOUT[@]}";++i)); do # for every output line
                for j in { 1.."${#tmp[0]}" }; do # for every char in $item
                    arrOUT[$i]="${arrOUT[$i]} "
                done
            done
        fi
    done

    # PRINT RESULTS
    echo "$arrIN"

    for((i=0;i<"${#arrOUT[@]}";++i)); do # for every output line
        echo "${arrOUT[$i]}"
    done
    unset arrOUT

    echo '-----------------------------------------------------------'
}

while read line; do # load data from STDIN
    makeLines $line
done

Пример:

test.txt:

key1 10|15 20 30 11|XX|55 21 31|20 100
key2 11 25|30 58|22 44 33
key3 12|15|17|19 22 33 55|22 88|44|11 xxxx|2222|7777

Команда:

bash ./script.sh < test.txt 

OUTPUT:

key1 10 20 30 11 21 31 100
key1 15       XX    20   
key1          55         
-----------------------------------------------------------
key2 11 25 58 44 33
key2    30 22      
-----------------------------------------------------------
key3 12 22 33 55 88 xxxx
key3 15       22 44 2222
key3 17          11 7777
key3 19                 
-----------------------------------------------------------

-121--23392-

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

$ | # exec su - [имя _ пользователя]

Это позволит технически зарегистрировать нового пользователя в новом терминологическом процессе и закрыть текущий. Таким образом, когда пользователь пытается выйти или Ctrl-D, терминал закрывается, как если бы этот пользователь был тем, кто создал его экземпляр, то есть пользователь не может выйти обратно в термин исходного пользователя. Вроде бы бессмысленно, учитывая, что они все еще могут просто начать новый терминальный сеанс и автоматически быть в исходном пользовательском термин логин, но есть.

ПРАВКА: Для того, чтобы заблокировать терминальные сессии по умолчанию, можно использовать команду linux vlock в ~/.bashrc, требуя пароль пользователя term session для разблокировки. Это в некоторой степени предотвратит перезапуск вышеупомянутого термина в исходном пользовательском контексте, поскольку этот термин не создается с использованием значения, отличного от значения по умолчанию ~/.bashrc пользователя, как настроено.

0
26.03.2014, 14:24
2 ответа
[1171489] Файловая система составляет 20 Гб на разделе, который имеет 40 Гб. Вам нужно изменить размер файловой системы! [1171951]growfs [1171952] - правильный инструмент.[1171490]
3
28.01.2020, 02:20
[1171491]Ok Massive спасибо нейтрину за то, что укажите мне правильное направление, и за этот пост:[12213]http://allaboutfedora.blogspot.de/2007/01/how-to-resize-or-expand-lvm-partitions. html[12214]I did:[12215]init 3 [12216]sudo lvextend -L+19GB /dev/mapper/vg_chris-lv_root[12217]sudo resize2fs /dev/mapper/vg_chris-lv_root[12218]где -L означает "size" и +19GB добавляет 19GB, запуск resize2fs без аргументов кажется автоматически заполняет пространство[1171500].
1
28.01.2020, 02:20

Теги

Похожие вопросы