背景

背景

背景

当就软件问题寻求帮助时,通常不仅要确定正在运行的特定代码的版本,还要确定应用程序平台的特征。从 CLI 查询硬件可能很烦人,但幸运的是硬件通常不是一个人的一部分病因学或者是足够标准而无关紧要的。通过 CLI 查询 Linux 主机的基础相对简单(至少从 LSB 开始),因此可以像这样编写通用 bash 脚本:

#!/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

这会产生类似的输出

$ 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

问题

我不知道的是,如何编写类似的脚本来查询有关某人的重要信息桌面堆栈?我知道我正在运行 X,所以可以

## 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

我(碰巧)知道我正在使用肉桂桌面所以可以做

$ cinnamon --version
Cinnamon 3.0.6

但我不知道如何通过 CLI 查询 GTK(我知道 Cinnamon 使用的)等版本,或者如何在“Qt world”中执行类似的高级查询,或者为 Wayland 做什么,或者关于什么WM/DE/GUI 堆栈的其他部分通常对于问题描述很重要。我可以使用哪些命令来获取此信息?

相关内容