Предполагается, что исходные имена файлов являются статическими и только результат операции переименования непредсказуем. При переименовании файлов создайте дополнительный файл, который будет содержать сопоставление имен исходных файлов с новыми именами, например:
fun1.c=fun1_a.c
fun2.c=fun2_a.c
Если этот созданный файл сопоставления называется rename.mk
, можно изменить Makefile
следующим образом:
include rename.mk
SRC= $(fun1.c) $(fun2.c)
%.o: $.c
$(CC) $(CFLAGS) -c $< -o $@
OBJ= $(SRC:.c=.o)
$(fun2.c:.c=.o): $(fun1.c:.c=.o)
Имена файлов стали именами переменных и используются для доступа к новым именам через сопоставление, указанное в rename.mk
.
Рассмотрим два экземпляра вашего предложения, запущенного одновременно. Они оба обнаружат, что (скажем) число = 4 доступно, и оба попытаются использовать одно и то же целевое имя.
Я не могу проверить эту альтернативу сейчас, но что-то подобное может быть достаточным
num=1 attempt=10
while ! mv --no-clobber "$1" "${PWD}/DUPES/${num}-$1" && [[ 0 -lt $attempt ]]
do
num=$((num+1))
attempt=$((attempt-1))
done
[[ 0 -eq $attempt ]] && echo "ERROR: Too many attempts to handle $1" >&2
-121--54590- После перехода на xterm из-за медленной прокрутки в xfce4-terminal, у меня была та же проблема. В ~/.Xresources устанавливается
XTerm * ptyInitureErase: true
. См. страницу xterm man. Этот параметр оставляет псевдотерминал ^ H
и ^?
.
Чтобы проверить это, я сделал Ctrl-V Ctrl-H и действительно это выводит ^ H
.
Это включает в себя некоторые пробы и ошибки, и, в конце концов, можно спорить, какой результат вы можете считать «лучшим результатом». Так что позвольте мне дать несколько общих советов:
используйте опцию -flatten
, чтобы избавиться от прозрачного фона. Прозрачность затрудняет оценку фактического качества результата. Если вам нужна прозрачность конечного изображения, вы можете удалить -flatten
, как только будете уверены в качестве.
используйте что-то вроде -density 300
, чтобы получить результат с высоким DPI. Основная проблема с convert
заключается в том, что по умолчанию используется очень низкая плотность (72 DPI ). Этот параметр должен быть указан перед входным файлом.
Уменьшение масштаба изображения с высоким DPI может привести к дополнительному размытию, поэтому, возможно, следует рассчитать правильное значение DPI для достижения желаемого разрешения:
$ convert -density 100 file.pdf -flatten file100.png
$ file file100.png
file100.png: PNG image data, 827 x 1169, 8-bit colormap, non-interlaced
$ echo $((1080*10000/1169))
9238
$ convert -density 92.38 file.pdf -flatten file9238.png
$ file file9238.png
file9238.png: PNG image data, 764 x 1080, 8-bit colormap, non-interlaced
Я не уверен, есть ли способ convert
определить «идеальное» значение DPI самостоятельно.
Если вы зададите этот вопрос IRC-каналу или форуму ImageMagick, я уверен, вы получите еще несколько советов.Будет полезно, если вы предоставите ссылку на PDF-файл, с которым работаете. ;)
Вы также можете улучшить качество другими способами, например, обрезав пустые границы. Вы сильно теряете разрешение, если половина страницы белая. Существуют даже решения, которые -оборачивают текст PDF, чтобы получить максимальную отдачу от доступного экранного пространства (, например.k2pdfopt
).
Наконец, попробуйте и другие программы. Это вопрос личного мнения, но я предпочитаю напрямую использовать Inkscape или GhostScript. ImageMagick имеет символы, «склеенные вместе», Inkscape дает более сбалансированный результат, а GhostScript позволяет вам визуализировать размытое -свободное изображение с чистыми пикселями (, если вам это нравится -, используйте pngalpha
для размытой версии, что практически идентичноconvert
).
ImageMagick:
Инкскейп:
GhostScript:
gs -r92.38 -sDEVICE=png48 -sOutputFile=ghostscript.png file.pdf
Попробуйте:
convert -resize 1920x1080 in.pdf out.png
Если в вашем PDF-файле 10 страниц, вы получите 10 файлов -1.png... out -10.png
Пожалуйста, игнорируйте этот ответ:хотя он полезен для изменения размера растровых файлов, он дает очень размытый результат для файлов PDF (масштабирование с низким DPI ).