Нам нужно обойти две проблемы:
dd не знает, что для каталогов dd можно копировать только один файл за разСначала давайте определим директории ввода и вывода:
SOURCE="/media/source-dir"
TARGET="/media/target-dir"
Теперь давайте cd в исходный каталог, чтобы find будет сообщать относительные каталоги, с которыми мы можем легко манипулировать:
cd "$SOURCE"
Дублировать дерево каталогов с $SOURCE до $TARGET
find . -type d -exec mkdir -p "$TARGET{}" \;
Дублировать файлы из $SOURCE к $TARGET, опускающему кеш-запись (но используя кэш чтения!)
find . -type f -exec dd if={} of="$TARGET{}" bs=8M oflag=direct \;
Обратите внимание, что это не будет сохранять время изменения файла, права собственности и другие атрибуты.
Это то, что я смог выяснить, хотя это не так удовлетворительно, как просто получить координаты x, y.
Вы можете получить упорядоченный список элементов панели запуска, находящихся в данный момент на панели, затем найти индекс списка модулей запуска в списке и умножить на размер значка + некоторые отступы для верхней панели и интервал между значками, чтобы получить приблизительно y координат.
См. код ниже. Я надеюсь, что это поможет любому, кто может искать способ сделать это.
from gi.repository import Unity
import gconf
#Get Icon size
LF_ICONSIZE=gconf.client_get_default().get_int('/apps/compiz-1/plugins/unityshell/screen0/options/icon_size')
LF_ICONPADDING=10 # Guesstimate
PANEL_HEIGHT=16 # Guesstimate, will depend on fontsize. Don't know where to get this
#Use unity api to get a list of launcher panel items
lf=Unity.LauncherFavorites.get_default().enumerate_ids()
#Find the position of my .desktop file
#(add 2 for the dash icon and because lists start at 0)
pos=lf.index('nautilus.desktop') + 2
#calculate approximate y coordinate
y = pos * (LF_ICONSIZE + LF_ICONPADDING) + PANEL_HEIGHT
Это то, что я смог выяснить, хотя это не так удовлетворительно, как просто получить координаты x, y.
Вы можете получить упорядоченный список элементов панели запуска, находящихся в данный момент на панели, затем найти индекс списка модулей запуска в списке и умножить на размер значка + некоторые отступы для верхней панели и интервал между значками, чтобы получить приблизительно y координат.
См. код ниже. Я надеюсь, что это поможет любому, кто может искать способ сделать это.
from gi.repository import Unity
import gconf
#Get Icon size
LF_ICONSIZE=gconf.client_get_default().get_int('/apps/compiz-1/plugins/unityshell/screen0/options/icon_size')
LF_ICONPADDING=10 # Guesstimate
PANEL_HEIGHT=16 # Guesstimate, will depend on fontsize. Don't know where to get this
#Use unity api to get a list of launcher panel items
lf=Unity.LauncherFavorites.get_default().enumerate_ids()
#Find the position of my .desktop file
#(add 2 for the dash icon and because lists start at 0)
pos=lf.index('nautilus.desktop') + 2
#calculate approximate y coordinate
y = pos * (LF_ICONSIZE + LF_ICONPADDING) + PANEL_HEIGHT
Это то, что я смог выяснить, хотя это не так удовлетворительно, как просто получить координаты x, y.
Вы можете получить упорядоченный список элементов панели запуска, находящихся в данный момент на панели, затем найти индекс списка модулей запуска в списке и умножить на размер значка + некоторые отступы для верхней панели и интервал между значками, чтобы получить приблизительно y координат.
См. код ниже. Я надеюсь, что это поможет любому, кто может искать способ сделать это.
from gi.repository import Unity
import gconf
#Get Icon size
LF_ICONSIZE=gconf.client_get_default().get_int('/apps/compiz-1/plugins/unityshell/screen0/options/icon_size')
LF_ICONPADDING=10 # Guesstimate
PANEL_HEIGHT=16 # Guesstimate, will depend on fontsize. Don't know where to get this
#Use unity api to get a list of launcher panel items
lf=Unity.LauncherFavorites.get_default().enumerate_ids()
#Find the position of my .desktop file
#(add 2 for the dash icon and because lists start at 0)
pos=lf.index('nautilus.desktop') + 2
#calculate approximate y coordinate
y = pos * (LF_ICONSIZE + LF_ICONPADDING) + PANEL_HEIGHT
Это то, что я смог выяснить, хотя это не так удовлетворительно, как просто получить координаты x, y.
Вы можете получить упорядоченный список элементов панели запуска, находящихся в данный момент на панели, затем найти индекс списка модулей запуска в списке и умножить на размер значка + некоторые отступы для верхней панели и интервал между значками, чтобы получить приблизительно y координат.
См. код ниже. Я надеюсь, что это поможет любому, кто может искать способ сделать это.
from gi.repository import Unity
import gconf
#Get Icon size
LF_ICONSIZE=gconf.client_get_default().get_int('/apps/compiz-1/plugins/unityshell/screen0/options/icon_size')
LF_ICONPADDING=10 # Guesstimate
PANEL_HEIGHT=16 # Guesstimate, will depend on fontsize. Don't know where to get this
#Use unity api to get a list of launcher panel items
lf=Unity.LauncherFavorites.get_default().enumerate_ids()
#Find the position of my .desktop file
#(add 2 for the dash icon and because lists start at 0)
pos=lf.index('nautilus.desktop') + 2
#calculate approximate y coordinate
y = pos * (LF_ICONSIZE + LF_ICONPADDING) + PANEL_HEIGHT
Это то, что я смог выяснить, хотя это не так удовлетворительно, как просто получить координаты x, y.
Вы можете получить упорядоченный список элементов панели запуска, находящихся в данный момент на панели, затем найти индекс списка модулей запуска в списке и умножить на размер значка + некоторые отступы для верхней панели и интервал между значками, чтобы получить приблизительно y координат.
См. код ниже. Я надеюсь, что это поможет любому, кто может искать способ сделать это.
from gi.repository import Unity
import gconf
#Get Icon size
LF_ICONSIZE=gconf.client_get_default().get_int('/apps/compiz-1/plugins/unityshell/screen0/options/icon_size')
LF_ICONPADDING=10 # Guesstimate
PANEL_HEIGHT=16 # Guesstimate, will depend on fontsize. Don't know where to get this
#Use unity api to get a list of launcher panel items
lf=Unity.LauncherFavorites.get_default().enumerate_ids()
#Find the position of my .desktop file
#(add 2 for the dash icon and because lists start at 0)
pos=lf.index('nautilus.desktop') + 2
#calculate approximate y coordinate
y = pos * (LF_ICONSIZE + LF_ICONPADDING) + PANEL_HEIGHT
Это то, что я смог выяснить, хотя это не так удовлетворительно, как просто получить координаты x, y.
Вы можете получить упорядоченный список элементов панели запуска, находящихся в данный момент на панели, затем найти индекс списка модулей запуска в списке и умножить на размер значка + некоторые отступы для верхней панели и интервал между значками, чтобы получить приблизительно y координат.
См. код ниже. Я надеюсь, что это поможет любому, кто может искать способ сделать это.
from gi.repository import Unity
import gconf
#Get Icon size
LF_ICONSIZE=gconf.client_get_default().get_int('/apps/compiz-1/plugins/unityshell/screen0/options/icon_size')
LF_ICONPADDING=10 # Guesstimate
PANEL_HEIGHT=16 # Guesstimate, will depend on fontsize. Don't know where to get this
#Use unity api to get a list of launcher panel items
lf=Unity.LauncherFavorites.get_default().enumerate_ids()
#Find the position of my .desktop file
#(add 2 for the dash icon and because lists start at 0)
pos=lf.index('nautilus.desktop') + 2
#calculate approximate y coordinate
y = pos * (LF_ICONSIZE + LF_ICONPADDING) + PANEL_HEIGHT
Это то, что я смог выяснить, хотя это не так удовлетворительно, как просто получить координаты x, y.
Вы можете получить упорядоченный список элементов панели запуска, находящихся в данный момент на панели, затем найти индекс списка модулей запуска в списке и умножить на размер значка + некоторые отступы для верхней панели и интервал между значками, чтобы получить приблизительно y координат.
См. код ниже. Я надеюсь, что это поможет любому, кто может искать способ сделать это.
from gi.repository import Unity
import gconf
#Get Icon size
LF_ICONSIZE=gconf.client_get_default().get_int('/apps/compiz-1/plugins/unityshell/screen0/options/icon_size')
LF_ICONPADDING=10 # Guesstimate
PANEL_HEIGHT=16 # Guesstimate, will depend on fontsize. Don't know where to get this
#Use unity api to get a list of launcher panel items
lf=Unity.LauncherFavorites.get_default().enumerate_ids()
#Find the position of my .desktop file
#(add 2 for the dash icon and because lists start at 0)
pos=lf.index('nautilus.desktop') + 2
#calculate approximate y coordinate
y = pos * (LF_ICONSIZE + LF_ICONPADDING) + PANEL_HEIGHT