KDE 3 не имеет snap-to-halfscreen функции. Если Вы не можете установить другое программное обеспечение, то у Вас не будет доступа функцией.
Однако Ваша жизнь может быть сделана легче к середине - и щелкающий правой кнопкой по максимизировать кнопке хрома окна. Щелчок средней кнопкой максимизирует вертикально, и щелчок правой кнопкой максимизирует горизонтально. Затем только необходимо изменить размер одного размера, не два.
sed -i
использование tempfiles как деталь реализации, которая является тем, что Вы испытываете; однако, преднезаконченные данные к началу потока данных, не перезаписывая существующее содержание требуют перезаписи файла, нет никакого способа обойти это, избегая sed -i
.
Если перезапись файла не является опцией, Вы могли бы рассмотреть управление им, когда это читается, например:
{ echo some prepended text ; cat file ; } | command
Кроме того, sed для редактирования потоков - файл не является потоком. Используйте программу, которая предназначена с этой целью, как редактор или напр. -i
опция к sed не является только не портативной, это также повредит любые символьные ссылки на Ваш файл, так как это по существу удаляет его и воссоздает его, который бессмыслен.
Можно сделать это в единственной команде с ed
как так:
ed -s file << 'EOF'
0a
prepend these lines
to the beginning
.
$a
append these lines
to the end
.
w
EOF
Обратите внимание, что в зависимости от Вашей реализации редактора, это может использовать страничный файл, требуя, чтобы Вы имели, по крайней мере, так много доступного пространства.
Обратите внимание, что, если Вы не хотите выделять целую копию файла на диске, Вы могли сделать:
sed '
1i\
begin
$a\
end' < file 1<> file
Это использует то, это, когда его stdin/stdout является файлом, sed
чтения и записи блоком. Таким образом, здесь, для него нормально переопределять файл, который это читает пока первая строка, которую Вы добавляете, меньше, чем sed
размер блока (должно быть что-то как 4k или 8k).
Отметьте хотя это если по некоторым причинам sed
сбои (уничтоженный, катастрофический отказ машины...), Вы закончите с файлом, наполовину обработанным, который будет означать некоторые данные размер первой строки, отсутствующей где-нибудь в середине.
Также отметьте это если Ваш sed
GNU sed
, это не будет работать на двоичные данные (но так как Вы используете -i
, Вы используете GNU sed).
Вот некоторые варианты (все из которых создадут новую копию файла так, удостоверяются, что у Вас есть достаточно пространства для того):
простое эхо/кошка
echo "first" > new_file; cat $File >> new_file; \
echo "last" >> new_file;
awk/gawk и т.д.
gawk 'BEGIN{print "first\n"}{print}END{print "last\n"}' $File > NewFile
awk
и его род считал файлы линию за линией. BEGIN{}
блок выполняется перед первой строкой и END{}
блок после последней строки. Так, команда выше средств print "first" at the beginning, then print every line in the file and print "last" at the end
.
Perl
perl -ne 'BEGIN{print "first\n"} print;END{print "last\n"}' $File > NewFile
Это - по существу то же самое как простофиля выше просто записанного в Perl.
sed -i
который создает временные файлы.
– terdon♦
22.08.2013, 15:14
Нет никакого способа вставить данные в начале файла ¹, все, что можно сделать, создают новый файл, пишут дополнительные данные и добавляют старые данные. Таким образом, необходимо будет переписать целый файл, по крайней мере, однажды для вставки первой строки. Можно добавить последнюю строку, не переписывая файл как бы то ни было.
sed -i '1i\'"$FirstLine" $Filename
echo "$LastLine" >>$Filename
С другой стороны, можно объединить две команды в одном выполнении sed.
sed -i -e '1i\'"$FirstLine" -e '$ a\'"$Lastline" $Filename
sed -i
создает новый выходной файл и затем перемещает его через старый файл. Это означает, что, в то время как sed работает, существует вторая копия файла, израсходовав пространство. Можно избежать этого путем перезаписи файла на месте, но с главными ограничениями: строка, которую Вы добавляете, должна быть меньшей, чем буфер sed, и если Ваша система откажет, то Вы закончите с поврежденным файлом и некоторым содержанием, потерянным в середине, таким образом, я настоятельно рекомендую против него.
¹ Linux действительно имеет способ вставить данные в файл, но это может только вставить целое число блоков файловой системы, это не может вставить строки произвольных длин. Это полезно для некоторых приложений, таково как базы данных и виртуальные машины, но это бесполезно для текстовых файлов.
Вы можете использовать Vim в режиме Ex:
ex -sc '1i|ALFA' -c '$a|BRAVO' -cx file
1
выделение первой строки
i
вставка текста и новой строки
$
выделение последней строки
a
добавление текста и новой строки
x
сохранение и закрытие
Я предпочитаю гораздо более простой:
gsed -i '1s/^/foo\n/gm; $s/$/\nbar/gm' filename.txt
Это преобразует файл:
asdf
qwer
в файл:
foo
asdf
qwer
bar
Современные ядра Linux (выше 4.1 или 4.2 )поддерживают вставку данных в начало файла с помощью системного вызова fallocate()
с FALLOC_FL_INSERT_RANGE
в файловых системах ext4 и xfs. По сути, это операция логического сдвига :: данные логически перемещаются по более высокому смещению.
Существует ограничение в отношении детализации диапазона, который вы хотите вставить в начало файла. Но для текстовых файлов вы, вероятно, можете выделить немного больше, чем требуется (до границы детализации )и заполнить пробелами или возвратом каретки, но это зависит от вашего приложения
Я не знаю какой-либо доступной утилиты Linux, которая манипулирует размерами файлов, но несложно написать :получить дескриптор файла и вызвать fallocate()
с соответствующими аргументами. Дополнительные сведения см. на справочной странице системного вызова fallocate
:http://man7.org/linux/man-pages/man2/fallocate.2.html
for
цикл:for file in Tes*; do [command]; done
– Chris Down 22.08.2013, 15:55"$file"
, нетTes*
как аргументed
. – Chris Down 22.08.2013, 16:25