Команда поиска, эквивалентная ls -p

Для каждого процесса в дереве укажите имя процесса, имя , и имя владельца процесса.

Вам нужен способ получить эту информацию, возможно, на основе PID ("идентификационный номер процесса"), поскольку PPID (идентификатор родительского процесса) приведет вас вверх по дереву к родительскому процессу. Подсказка: PID текущего процесса bash находится в $BASHPID (или $$).

Нарисуйте дерево процессов и родительских процессов, начиная с вашей оболочки и до самого ядра

Разгадка №2: Ядро запускает только один процесс - демон init (традиционно называется init, но может называться и по-другому). PID этого процесса равен 1, а его родительского процесса - 0. Все остальное является потомками init, так что именно к нему ведет ваше дерево.

Технически, я не думаю, что вас просят нарисовать дерево, вас просят нарисовать цепочку, хотя концептуально эта цепочка - путь через дерево (вспомните файл путь, который является серией/цепочкой каталогов, которые являются частью большего дерева каталогов). Вы прослеживаете путь через ветви этого концептуального дерева к "корню" дерева (деревья в информатике обычно представляются перевернутыми по сравнению с реальным деревом, где основание/корень находится наверху, а ветви разветвляются вниз).

          root
         /    \
        /\    /\
       /\/\  /\/\
0
21.11.2018, 00:36
2 ответа
$ find /path/to -mindepth 1 -maxdepth 1 -exec sh -c '
     [ -d "$1" ] && printf "%s/\n" "${1##*/}" || printf "%s\n" "${1##*/}" ' _ {} \;
aDirectory/
afile

Пояснения:

  • [ -d "$1" ], это проверяет, является ли это каталогом , если да, то запустите егоprintf:

    printf "%s/\n" "${1##*/}"
    

    иначе, запустить нижеprintf:

    printf "%s\n" "${1##*/}"
    
    • ${1##*/}:это удаляет самое длинное совпадение всего *до последней косой черты /, увиденное начало от начала пути к файлу/каталогу, что приведет только к последнему имени каталога/файла.
0
28.01.2020, 04:27

По крайней мере, с GNU find вы можете использовать встроенный -в -printf, например.

find. -mindepth 1 -maxdepth 1 -type d -printf '%f/\n' -o -type f -printf '%f\n'
0
28.01.2020, 04:27

Теги

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