Две утилиты могут сделать это за вас: file
и readlink
:
файл some_symlink
отобразит some_symlink: символическую ссылку на «some_target»
readlink some_symlink
завершится с кодом 0, тогда как readlink some_file
завершится с кодом 1 Обратите внимание, что код выхода хранится в переменной $?
, и может отображаться с помощью echo $?
.
Благодаря воспроизведению @jeff -Schaller я внес свой вклад в проект Kconfiglib, и теперь для этой задачи есть новый пример сценария. Вот шаги по его использованию:
Внутри каталога с исходным кодом Linux клонируйте репозиторий:
root@23e196045c6f:/usr/src/linux-source-4.9# git clone git://github.com/ulfalizer/Kconfiglib.git
Cloning into 'Kconfiglib'...
remote: Counting objects: 3367, done.
remote: Compressing objects: 100% (57/57), done.
remote: Total 3367 (delta 64), reused 89 (delta 50), pack-reused 3259
Receiving objects: 100% (3367/3367), 1.25 MiB | 1.79 MiB/s, done.
Resolving deltas: 100% (2184/2184), done.
Исправление make-файла:
root@23e196045c6f:/usr/src/linux-source-4.9# patch -p1 < Kconfiglib/makefile.patch
patching file scripts/kconfig/Makefile
Настройте по мере необходимости, в основном для получения файла.config:
root@23e196045c6f:/usr/src/linux-source-4.9# make menuconfig
Запустить скрипт с конфигурационным файлом:
root@23e196045c6f:/usr/src/linux-source-4.9# make scriptconfig SCRIPT=Kconfiglib/examples/print_config_tree.py SCRIPT_ARG=.config
======== Linux/x86 4.9.65 Kernel Configuration ========
[*] 64-bit kernel (64BIT)
General setup
() Cross-compiler tool prefix (CROSS_COMPILE)
[ ] Compile also drivers which will not load (COMPILE_TEST)
() Local version - append to kernel release (LOCALVERSION)
[ ] Automatically append version information to the version string (LOCALVERSION_AUTO)
-*- Kernel compression mode
--> Gzip (KERNEL_GZIP)
Bzip2 (KERNEL_BZIP2)
LZMA (KERNEL_LZMA)
...
Но приятно то, что можно передавать разные конфигурации ядра и легко сопоставлять изменения:
root@23e196045c6f:/usr/src/linux-source-4.9# make scriptconfig SCRIPT=Kconfiglib/examples/print_config_tree.py SCRIPT_ARG=/tmp/config1 > config1-list.txt
root@23e196045c6f:/usr/src/linux-source-4.9# make scriptconfig SCRIPT=Kconfiglib/examples/print_config_tree.py SCRIPT_ARG=/tmp/config2 > config2-list.txt
И, наконец, инструмент сравнения: