Ao pedir ajuda com um problema de software, geralmente é bom identificar não apenas quais versões desse código específico estão sendo executadas, mas também caracterizar a plataforma do aplicativo. O hardware de consulta do CLI pode ser irritante , mas felizmente o hardware muitas vezes não faz parte de um etiology ou é padrão o suficiente para ser irrelevante. Consultar os fundamentos de um host Linux via CLI é relativamente simples (pelo menos desde o LSB), então pode-se roteirizar o bash de propósito geral assim:
#!/usr/bin/env bash
### Attempt to create a high-level commandline-query for
### basic host configuration information (at least, for that
### part of the platform just above the hardware.
# constants------------------------------------------------------------
### "Marker file" paths for specific distros. TODO: complete the set.
DEBIAN_FILE='/etc/debian_version'
# code-----------------------------------------------------------------
### Absolute basics: kernel, distro
for CMD in \
'date' \
'uname -rsv' \
'lsb_release -ds' \
; do
echo -e "\$ ${CMD}"
eval "${CMD}"
done
### Distro details via marker file. TODO: extend to all major distros.
### Feel free to add stanzas for your distro's marker.
if [[ -r "${DEBIAN_FILE}" ]] ; then
for CMD in \
"cat ${DEBIAN_FILE}" \
; do
echo -e "\$ ${CMD}"
eval "${CMD}"
done
fi
### Other important non-graphical libraries, toolkits, etc.
for CMD in \
'gcc --version | head -n 1' \
; do
echo -e "\$ ${CMD}"
eval "${CMD}"
done
Isso produz saída como
$ date
Sat Sep 17 14:18:28 MST 2016
$ uname -rsv
Linux 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt25-2+deb8u3 (2016-07-02)
$ lsb_release -ds
LMDE 2 Betsy
$ cat /etc/debian_version
8.5
$ gcc --version | head -n 1
gcc (Debian 4.9.2-10) 4.9.2
O que eu não sei é como rotular de forma semelhante as consultas para obter informações importantes sobre a pilha de área de trabalho de uma pessoa? Eu sei que estou rodando X, então posso fazer
## Dunno why X:
## * throws error on '--version'
## * outputs version info to 'stderr'
## * wants to include hostname in 'Current Operating System:' line
$ Xorg -version 2>&1 | grep -ve '^$\|^[[:space:]]\|Current Operating System:'
X.Org X Server 1.16.4
Release Date: 2014-12-20
X Protocol Version 11, Revision 0
Build Operating System: Linux 3.16.0-4-amd64 x86_64 Debian
Kernel command line: BOOT_IMAGE=/vmlinuz-3.16.0-4-amd64 root=/dev/mapper/LVM2_crypt-root ro nomodeset nouveau.modeset=0
Build Date: 11 February 2015 12:32:02AM
xorg-server 2:1.16.4-1 (http://www.debian.org/support)
Current version of pixman: 0.32.6
$ x-window-manager --version | head -1
metacity 3.14.3
e eu (por acaso) sei que estou usando o Canela desktop e assim posso fazer
$ cinnamon --version
Cinnamon 3.0.6
mas não faço ideia de como consultar o CLI para versões de coisas como o GTK (que eu sei que o Cinnamon usa) ou como fazer consultas semelhantes de alto nível no "mundo do Qt" ou o que fazer pelo Wayland, ou sobre quais outras partes da pilha WM / DE / GUI são geralmente importantes para descrições de problemas. Quais comandos posso usar para obter essas informações?