Кажется, что GTK и GTK+ одинаковы, а GTK1 довольно старый, поэтому в моей системе у меня есть:
Один из способов узнать, какой инструментарий использует приложение, — посмотреть на зависимости для приложения, например, в системе Debian, такой как Ubuntu, найти зависимости для коврика для мыши приложения:
dpkg -s mousepad | grep "Depends"
Depends: libc6 (>= 2.4), libdbus-1-3 (>= 1.9.14), libdbus-glib-1-2 (>= 0.88), libglib2.0-0 (>= 2.41.1), libgtk-3-0 (>= 3.2.1), libgtksourceview-3.0-1 (>= 2.91.4), libpango-1.0-0 (>= 1.14.0), dconf-gsettings-backend | gsettings-backend
Здесь вы можете видеть, что коврик для мыши зависит от libgtk -3 -0. Точно так же зависимости для приложения GTK2, такого как leafpad, имеют libgtk2.0 -0, а зависимости для приложения QT, такого как VirtualBox, имеют что-то вроде libqt5core5a
.
Обратите внимание, чтобы узнать имя пакета для приложения, такого как виртуальный бокс, который вы можете использовать
dpkg -l | grep -i virtualbox
, поэтому в этом примере он возвращает «virtualbox -5.1» в качестве имени пакета.
После того, как вы узнали, как выглядит каждый из GTK2, GTK3 и QT, вы можете сказать по значкам, что использует приложение. Кажется маловероятным, что GTK2, GTK3 и QT будут использовать одну и ту же тему значков (на самом деле я не смог найти тему значков, которую я мог бы использовать как для GTK2, так и для GTK3 ).
Это не только внешний вид значков, вы также можете сказать, что отображается на левой панели при открытии файла, как кажется:
GTK2 отобразит:
Search
Recently Used
Home folder
Desktop
Devices (so will always show FileSystem, plus any separate partitions)
ALL bookmarks
GTK3 отобразит:
Recently Used
Home folder
Desktop
Documents
Downloads
Music
Pictures
Videos
Rubbish Bin
Bookmarks excluding Documents, Downloads, Music, Pictures and Videos
+ Other Locations
Таким образом, в GTK3 кажется, что вы не можете отображать устройства на левой панели (, кроме съемных устройств ), поэтому вам нужно нажать «+ Другие местоположения», чтобы перейти к вашим разделам, и, кажется, нет способа исключить Документы, загрузки, музыка, изображения, видео и мусорное ведро. Если есть способ настроить средство выбора файлов GTK3 для отображения устройств, мне было бы интересно узнать.
Причина, по которой вы не можете использовать одну и ту же тему значков для GTK2 и GTK3, заключается в том, что они используют разные имена для файлов значков,поэтому вам нужно будет найти схему значков, которая имеет имена значков как для GTK2, так и для GTK3.
QT выглядит совершенно по-другому, поэтому левая панель выглядит так:
Так что это очень минималистский взгляд
Несколько вариантов использования in -редактирования места, а не перенаправления:
ed -s file.csv <<'EOF'
1r !some_command
1,.wq
EOF
или аналогичный
some_command | sed -i.bak -e '1r /dev/stdin' -e 1q file.csv
хотя, насколько мне известно, последний использует временный файл «под капотом».
Если вы хотите сохранить неизменный заголовок, вы можете записать заголовок в другой файл с помощью head -1 file.csv > header.csv
и использовать следующий синтаксис:
{ head -1 header.csv && some_command; } > file.csv
Как описано в комментариях, Bash сначала усекает file.csv
перед выполнением команд внутри { }
, что означает, что вы не можете просто запустить head -1 file.csv
внутри { }
.
Этот синтаксис { }
также можно использовать для объединения вывода двух команд, как описано здесь .
Нет простого способа заставить оболочку перезаписывать файл, начиная со смещения. И вы все равно не должны редактировать файлы на месте, потому что это оставляет усеченный файл, если редактирование прерывается сбоем или сбоем питания.
Создайте новый файл. Начните с копирования первой строки, затем напишите остальную часть содержимого. Когда вы закончите, переместите новый файл на место.
read -r first_line <file.csv
{
printf '%s\n' "$first_line
… # write the rest of the content to standard output
} >file.csv.new
mv -f file.csv.new file.csv
sed -i '2,$d' file.csv && some_command >> file.csv
sed -i '2,$d' file.csv
удалит все, кроме первой строки файла.
-i
указывает sed работать в -месте
2,$
адреса от строки 2 до конца файла
d
выполняет удаление.
Вы можете проверить, делает ли команда то, что вам нужно, опустив-i
После этого && some_command >> file.csv
будет добавляться к файлу только в том случае, еслиsed
успешно его очистил.
execute command >csvfile
sed -i '1i mention the header here' csvfile