Я не поклонник аргумента -exec, чтобы найти, и не поклонник того, чтобы выяснить, как точно избежать литералов, поэтому я обычно качаюсь, чтобы найти + xargs.[119997].
Здесь не требуется bash
, любая стандартная реализация sh
интерпретатора:
#! /bin/sh -
ret=0
for file do
dir=$(dirname -- "$file")
case $dir in
(*[!/]*) dir=$dir/ # handle / and // specially
esac
base=$(basename -- "$file")
name=${base%.*}
name=${name:-$base} # don't consider .bashrc the extension in /foo/.bashrc
ext=${base#"$name"}
new_file=$dir${name}_copy$ext
cp -- "$file" "$new_file" || ret=$?
done
exit "$ret"
(предполагается, что имена файлов и каталогов не заканчиваются новыми символами).
(конечно, это также будет работать с bash
, поскольку bash
является одним из стандартных sh
интерпретаторов .)
Для bash
-специфического решения можно попробовать:
#! /bin/bash -
ret=0
re='^((.*/)?[^/])(([^/]*)(\.))?([^/]*)/*$'
for file do
if [[ $file =~ $re ]]; then
if [[ ${BASH_REMATCH[5]} ]]; then
suffix=_copy.${BASH_REMATCH[6]}
else
suffix=${BASH_REMATCH[6]}_copy
fi
cp -- "$file" "${BASH_REMATCH[1]}${BASH_REMATCH[4]}$suffix" || ret=$?
else
printf >&2 '%s\n' "$0: Error: refusing to copy $file"
ret=1
fi
done
exit "$ret"
-121--55532- Технически этот вопрос не делает
Вы хотите предоставить людям возможность подключаться к вашему компьютеру и загружать веб-страницы. Для этого необходимо установить, например, apache в качестве веб-сервера, чтобы предоставить доступ к страницам. Для установки Apache необходимо войти в систему как пользователь с правами root. Этот пользователь может быть новым пользователем (только если у него есть права sudo) или самим корнем.
По соображениям безопасности Apache сам не будет работать в качестве этого пользователя. Во время установки он создаст нового пользователя с гораздо меньшими разрешениями, чем средний (графический) пользователь.
Пользователь, установивший apache, не будет (как правило) частью каких-либо действий apache.
Edit: Все, что я написал здесь о apache почти то же самое для ssh, но ssh действительно работает как root.
-121--209826- Первое, что торчит в моем уме, это ваша команда sudo
.
Насколько я понимаю, sudo
, по умолчанию используется одна программа. Когда вы делаете трубку вы говорите взять выход этой программы и поместить его в другой. Другими словами, вы запустили sudo
только на xzcat
.
Поэтому вы должны сделать: xzcat ~/Downloads/openSUSE-13.1-ARM-JeOS-raspberrypi.armv7l-1.12.1-Build38.15.raw.xz | sudo dd bs = 4M of =/dev/sda; sync
Во всей честности, я бы просто сделал:
unxz --keep ~/Downloads/openSUSE-13.1-ARM-JeOS-raspberrypi.armv7l-1.12.1-Build38.15.raw.xz; sudo dd if = ~/Downloads/openSUSE-13.1-ARM-JeOS-raspberrypi.armv7l-1.12.1-Build38.15.raw of =/dev/sda
Однако я такой странный, и у вас может не быть места для места хранения.
Как указано в: https://en.opensuse.org/HCL:Raspberry_Pi2
Как root извлеките образ на SD-карту (замените sdX на имя устройства вашей SD-карты). ВНИМАНИЕ: все предыдущие данные на SD-карте будут потеряны.
У меня была та же проблема, sudo просто не работает, вы должны войти в систему как root, и она будет работать!
Просто выполните sudo su
, чтобы войти в корневую оболочку.
Затем выполните xzcat openSUSE.raw.xz> / dev / sda1
.