В разделах Snap используются SquashFS, которые в основном представляют собой сжатый формат данных только для чтения, который обычно используется для создания живых CD / DVD-дисков. SquashFS просто не предназначен для чтения и записи.
Ваши параметры:
Перестроить файловую систему SquashFS. Чтобы изменить содержимое, даже что-то такое же простое, как изменение прав доступа к файлам, невозможно. Следующие ресурсы должны быть полезны: Изменение squashfs Как изменить изображение squashfs Используйте OverlayFS для сохранения изменений отдельно.Если вы хотите стать разработчиком Snap, вы можете начать с этого учебника до . Для разделов Snap используйте .
Чтобы заменить первую строку FILE.out на i-ю строку FILE.in, я бы сделал:
i=<line-number>
line=$(sed -n "${i}p" FILE.in)
sed -i "1c\\$line" FILE.out
Если i не существует в FILE.in, то первая строка FILE.out будет удалена (пустая).
Если $line содержит какие-либо специальные символы (например, обратную косую черту, доллар), вам нужно будет их избежать. [!d2 ]
Не 100% уверены, что это не могло сломаться в другом месте.
Чтобы заменить первую строку FILE.out на i-ю строку FILE.in, я бы сделал:
i=<line-number>
line=$(sed -n "${i}p" FILE.in)
sed -i "1c\\$line" FILE.out
Если i не существует в FILE.in, то первая строка FILE.out будет удалена (пустая).
Если $line содержит какие-либо специальные символы (например, обратную косую черту, доллар), вам нужно будет их избежать.
Не 100% уверены, что это не могло сломаться в другом месте.
Чтобы заменить первую строку FILE.out на i-ю строку FILE.in, я бы сделал:
i=<line-number>
line=$(sed -n "${i}p" FILE.in)
sed -i "1c\\$line" FILE.out
Если i не существует в FILE.in, то первая строка FILE.out будет удалена (пустая).
Если $line содержит какие-либо специальные символы (например, обратную косую черту, доллар), вам нужно будет их избежать.
Не 100% уверены, что это не могло сломаться в другом месте.
Чтобы заменить первую строку FILE.out на i-ю строку FILE.in, я бы сделал:
i=<line-number>
line=$(sed -n "${i}p" FILE.in)
sed -i "1c\\$line" FILE.out
Если i не существует в FILE.in, то первая строка FILE.out будет удалена (пустая).
Если $line содержит какие-либо специальные символы (например, обратную косую черту, доллар), вам нужно будет их избежать.
Не 100% уверены, что это не могло сломаться в другом месте.
Чтобы заменить первую строку FILE.out на i-ю строку FILE.in, я бы сделал:
i = & lt; номер строки & gt; line = $ (sed -n "$ {i} p" FILE.in) sed -i "1c \\ $ line" FILE.out
Если i
не существует в FILE.in, тогда первая строка FILE.out будет удалена (пустая).
Если $ line
содержит любые специальные символы (например, обратная косая черта , доллар), тогда вам нужно будет избежать этих.
Не 100% уверены, что это не может сломаться в другом месте.
Чтобы заменить первую строку FILE.out на i-ю строку FILE.in, я бы сделал:
i = & lt; номер строки & gt; line = $ (sed -n "$ {i} p" FILE.in) sed -i "1c \\ $ line" FILE.out
Если i
не существует в FILE.in, тогда первая строка FILE.out будет удалена (пустая).
Если $ line
содержит любые специальные символы (например, обратная косая черта , доллар), тогда вам нужно будет избежать этих.
Не 100% уверены, что это не может сломаться в другом месте.
Чтобы заменить первую строку FILE.out на i-ю строку FILE.in, я бы сделал:
i = & lt; номер строки & gt; line = $ (sed -n "$ {i} p" FILE.in) sed -i "1c \\ $ line" FILE.out
Если i
не существует в FILE.in, тогда первая строка FILE.out будет удалена (пустая).
Если $ line
содержит любые специальные символы (например, обратная косая черта , доллар), тогда вам нужно будет избежать этих.
Не 100% уверены, что это не может сломаться в другом месте.
Чтобы заменить первую строку FILE.out на i-ю строку FILE.in, я бы сделал:
i = & lt; номер строки & gt; line = $ (sed -n "$ {i} p" FILE.in) sed -i "1c \\ $ line" FILE.out
Если i
не существует в FILE.in, тогда первая строка FILE.out будет удалена (пустая).
Если $ line
содержит любые специальные символы (например, обратная косая черта , доллар), тогда вам нужно будет избежать этих.
Не 100% уверены, что это не может сломаться в другом месте.
nline
, а не в команде. Таким образом, вы сделали бы nline = $ (sed -n & quot; $ = & quot; filein.txt)
. Просто имейте в виду, что это само по себе может сломать for-loop, если filein.txt был пустым файлом.
– htorque
3 November 2010 в 16:12
В программу входят две части: получение нужного вам результата, а затем замена содержимого исходного файла на этот вывод:
#!/bin/sh
# output the first five lines of the first argument
# followed by all but the first of the second argument
# if successful, replace the second argument with the
# result
# cribbed almost entirely from Kernighan & Pike's
$ "The Unix Programming Environment" script "overwrite"
case $# in
0|1) echo 'Usage: replace5 filea fileb' 1>&2; exit 2
esac
filea=$1; fileb=$2
new=/tmp/$$.new; old=/tmp/$$.old
trap 'rm -f $new; exit 1' 1 2 15 # clean up files
# collect input
if head -5 $filea >$new && tail -n +2 $fileb >> $new
then
cp $filea $old # save original file
trap 'trap "" 1 2 15; cp $filea $old # ignore signals
rm -f $new $old; exit 1' 1 2 15 # during restore
cp $new $filea
else
echo "replace5: failed, $filea unchanged" 1>&2
exit 1
fi
rm -f $new $old
В программу входят две части: получение нужного вам результата, а затем замена содержимого исходного файла на этот вывод:
#!/bin/sh
# output the first five lines of the first argument
# followed by all but the first of the second argument
# if successful, replace the second argument with the
# result
# cribbed almost entirely from Kernighan & Pike's
$ "The Unix Programming Environment" script "overwrite"
case $# in
0|1) echo 'Usage: replace5 filea fileb' 1>&2; exit 2
esac
filea=$1; fileb=$2
new=/tmp/$$.new; old=/tmp/$$.old
trap 'rm -f $new; exit 1' 1 2 15 # clean up files
# collect input
if head -5 $filea >$new && tail -n +2 $fileb >> $new
then
cp $filea $old # save original file
trap 'trap "" 1 2 15; cp $filea $old # ignore signals
rm -f $new $old; exit 1' 1 2 15 # during restore
cp $new $filea
else
echo "replace5: failed, $filea unchanged" 1>&2
exit 1
fi
rm -f $new $old
В программу входят две части: получение нужного вам результата, а затем замена содержимого исходного файла на этот вывод:
#!/bin/sh
# output the first five lines of the first argument
# followed by all but the first of the second argument
# if successful, replace the second argument with the
# result
# cribbed almost entirely from Kernighan & Pike's
$ "The Unix Programming Environment" script "overwrite"
case $# in
0|1) echo 'Usage: replace5 filea fileb' 1>&2; exit 2
esac
filea=$1; fileb=$2
new=/tmp/$$.new; old=/tmp/$$.old
trap 'rm -f $new; exit 1' 1 2 15 # clean up files
# collect input
if head -5 $filea >$new && tail -n +2 $fileb >> $new
then
cp $filea $old # save original file
trap 'trap "" 1 2 15; cp $filea $old # ignore signals
rm -f $new $old; exit 1' 1 2 15 # during restore
cp $new $filea
else
echo "replace5: failed, $filea unchanged" 1>&2
exit 1
fi
rm -f $new $old
В программу входят две части: получение нужного вам результата, а затем замена содержимого исходного файла на этот вывод:
#!/bin/sh
# output the first five lines of the first argument
# followed by all but the first of the second argument
# if successful, replace the second argument with the
# result
# cribbed almost entirely from Kernighan & Pike's
$ "The Unix Programming Environment" script "overwrite"
case $# in
0|1) echo 'Usage: replace5 filea fileb' 1>&2; exit 2
esac
filea=$1; fileb=$2
new=/tmp/$$.new; old=/tmp/$$.old
trap 'rm -f $new; exit 1' 1 2 15 # clean up files
# collect input
if head -5 $filea >$new && tail -n +2 $fileb >> $new
then
cp $filea $old # save original file
trap 'trap "" 1 2 15; cp $filea $old # ignore signals
rm -f $new $old; exit 1' 1 2 15 # during restore
cp $new $filea
else
echo "replace5: failed, $filea unchanged" 1>&2
exit 1
fi
rm -f $new $old
В программу входят две части: получение нужного вам результата, а затем замена содержимого исходного файла на этот вывод:
#! / bin / sh # выводят первые пять строки первого аргумента #, за которым следуют все, кроме первого из второго аргумента #, если это необходимо, замените второй аргумент на # result #, который был почти полностью собран из Kernighan & amp; Pike's $ «Среда программирования Unix» Сценарий «перезаписать» $ # в 0 | 1) echo 'Использование: replace5 filea fileb' 1 & amp; 2; exit 2 esac filea = $ 1; fileb = $ 2 new = / tmp / $$. new; old = / tmp / $$. old trap 'rm -f $ new; exit 1 '1 2 15 # clean up files # collect input, если head -5 $ filea & gt; $ new & amp; & amp; & amp; & amp; & amp; tail -n +2 $ fileb & gt; & gt; $ new, тогда cp $ filea $ old # save original trap trap trap "1 2 15; cp $ filea $ old # игнорировать сигналы rm -f $ new $ old; exit 1 '1 2 15 # во время восстановления cp $ new $ filea else echo "replace5: failed, $ filea unchanged" 1 & gt; & amp; 2 exit 1 fi rm -f $ new $ old
В программу входят две части: получение нужного вам результата, а затем замена содержимого исходного файла на этот вывод:
#! / bin / sh # выводят первые пять строки первого аргумента #, за которым следуют все, кроме первого из второго аргумента #, если это необходимо, замените второй аргумент на # result #, который был почти полностью собран из Kernighan & amp; Pike's $ «Среда программирования Unix» Сценарий «перезаписать» $ # в 0 | 1) echo 'Использование: replace5 filea fileb' 1 & amp; 2; exit 2 esac filea = $ 1; fileb = $ 2 new = / tmp / $$. new; old = / tmp / $$. old trap 'rm -f $ new; exit 1 '1 2 15 # clean up files # collect input, если head -5 $ filea & gt; $ new & amp; & amp; & amp; & amp; & amp; tail -n +2 $ fileb & gt; & gt; $ new, тогда cp $ filea $ old # save original trap trap trap "1 2 15; cp $ filea $ old # игнорировать сигналы rm -f $ new $ old; exit 1 '1 2 15 # во время восстановления cp $ new $ filea else echo "replace5: failed, $ filea unchanged" 1 & gt; & amp; 2 exit 1 fi rm -f $ new $ old
В программу входят две части: получение нужного вам результата, а затем замена содержимого исходного файла на этот вывод:
#! / bin / sh # выводят первые пять строки первого аргумента #, за которым следуют все, кроме первого из второго аргумента #, если это необходимо, замените второй аргумент на # result #, который был почти полностью собран из Kernighan & amp; Pike's $ «Среда программирования Unix» Сценарий «перезаписать» $ # в 0 | 1) echo 'Использование: replace5 filea fileb' 1 & amp; 2; exit 2 esac filea = $ 1; fileb = $ 2 new = / tmp / $$. new; old = / tmp / $$. old trap 'rm -f $ new; exit 1 '1 2 15 # clean up files # collect input, если head -5 $ filea & gt; $ new & amp; & amp; & amp; & amp; & amp; tail -n +2 $ fileb & gt; & gt; $ new, тогда cp $ filea $ old # save original trap trap trap "1 2 15; cp $ filea $ old # игнорировать сигналы rm -f $ new $ old; exit 1 '1 2 15 # во время восстановления cp $ new $ filea else echo "replace5: failed, $ filea unchanged" 1 & gt; & amp; 2 exit 1 fi rm -f $ new $ old
В программу входят две части: получение нужного вам результата, а затем замена содержимого исходного файла на этот вывод:
#! / bin / sh # выводят первые пять строки первого аргумента #, за которым следуют все, кроме первого из второго аргумента #, если это необходимо, замените второй аргумент на # result #, который был почти полностью собран из Kernighan & amp; Pike's $ «Среда программирования Unix» Сценарий «перезаписать» $ # в 0 | 1) echo 'Использование: replace5 filea fileb' 1 & amp; 2; exit 2 esac filea = $ 1; fileb = $ 2 new = / tmp / $$. new; old = / tmp / $$. old trap 'rm -f $ new; exit 1 '1 2 15 # clean up files # collect input, если head -5 $ filea & gt; $ new & amp; & amp; & amp; & amp; & amp; tail -n +2 $ fileb & gt; & gt; $ new, тогда cp $ filea $ old # save original trap trap trap "1 2 15; cp $ filea $ old # игнорировать сигналы rm -f $ new $ old; exit 1 '1 2 15 # во время восстановления cp $ new $ filea else echo "replace5: failed, $ filea unchanged" 1 & gt; & amp; 2 exit 1 fi rm -f $ new $ old