На удаленной машине отредактируйте файл/etc/ssh/sshd_config. Изменение X11UseLocalhost
к да.
Источник http://www.pclinuxos.com/forum/index.php?topic=109487.0
Для обработки файлов с пробелами следует использовать директиву -print0
для поиска GNU и параметр -d
для команд bash. читать команду
. Также непреодолимо указывать в кавычках "$ variable"
find pics/ -type f -print0 | while IFS= read -rd "" filename; do
v=$((RANDOM % 2))
if (( v == 0 )); then
cp "$filename" dups/$RANDOM.jpg
fi
done
Биты IFS =
и -r
предназначены для того, чтобы правильно обрабатывались пробелами и обратными косыми чертами. прочитать команду
.
Внутри ((...))
арифметических выражений вы можете указывать переменные оболочки без $
.
Подход Яэгаси сработает, но дать ему на лету значения будет непросто. Команда «export» вычисляется во время синтаксического анализа Makefile и устанавливает переменную среды оболочки для рецепта. Затем вычисляют переменную среды во время выполнения рецепта «docs».
Если ваш фрагмент должен быть заполнен какими-либо зависимыми от цели переменными, я бы рекомендовал такой подход:
Если вам нужно просто запустить пару однолинейных, этот образец будет работать довольно хорошо.
run_script = python -c \
"import time ;\
print 'Hello world!' ;\
print '%d + %d = %d' %($1,$2,$1+$2) ;\
print 'Running target \'%s\' at time %s' %('$3', time.ctime())"
test:
$(call run_script,4,3,$@)
Если вы хотите использовать странные символы и функции, for-loops или другие многострочные конструкции, вот модный образец, который будет работать красиво.
#--------------------------- Python Script Runner ----------------------------#
define \n
endef
escape_shellstring = \
$(subst `,\`,\
$(subst ",\",\
$(subst $$,\$$,\
$(subst \,\\,\
$1))))
escape_printf = \
$(subst \,\\,\
$(subst %,%%,\
$1))
create_string = \
$(subst $(\n),\n,\
$(call escape_shellstring,\
$(call escape_printf,\
$1)))
python_script = printf "$(call create_string,$($(1)))" | python
#------------------------------- User Scripts --------------------------------#
define my_script
def good_times():
print "good times!"
import time
print 'Hello world!'
print '%d + %d = %d' %($2,$3,$2+$3)
print 'Runni`ng $$BEEF \ttarget \t\n\n"%s" at time %s' %('$4', time.ctime())
good_times()
endef
#--------------------------------- Recipes -----------------------------------#
test:
$(call python_script,my_script,1,2,$@)
-121--84465- Способ обработки файлов с помощью мест заключается в использовании директивы -print0
для поиска GNU и опции -d
для команды bash read
. Также настоятельно необходимо указать «$ variable»
find pics/ -type f -print0 | while IFS= read -rd "" filename; do
v=$((RANDOM % 2))
if (( v == 0 )); then
cp "$filename" dups/$RANDOM.jpg
fi
done
. Биты IFS =
и -r
должны обеспечивать правильную обработку мест и обратной косой черты командой read
.
Внутри ((...) )
арифметические выражения, можно дать оболочечные переменные без $
.
RAND_FILE=$( find pics/ -type f -print0 | shuf -n 1 -z )
# TODO check that RAND_FILE actually got a file, e.g. what
# if pics/ dir is empty, what happens?
cp "$RAND_FILE" ...
Хотя жесткая привязка копии позволит сэкономить место, если она находится в той же файловой системе и дублирующийся файл не будет изменен.
На основании данных Гленна:
#!/bin/bash
if [ ! -d "$2" ]; then
mkdir -p $2
fi
find $1/ -type f -print0 | while IFS= read -rd "" filename; do
v=$((RANDOM % 4))
if (( v == 0 )); then
cp "$filename" $2/`uuidgen`.jpg
fi
done
Я добавил
uuidgen
, потому что $ RANDOM не предоставил достаточно большого числового пространства для устранения коллизии. Один из способов улучшить этот сценарий - использовать число в качестве процента вероятности, а не просто как долю от 1 / n (только числа 1 / n будут $ RANDOM% n == 0)