Хорошей альтернативой может стать использование облачной среды разработки, такой как Codevny или Cloud9.
Они имеют много преимуществ перед локальными файловыми установками (как подробно описано на их страницах) и больше соответствуют всей концепции Chrome OS, т.е. локальное устройство должно быть экономным, дешевым (но удобным!) и потенциально одноразовым (т.е. если вы прольете на него латте или кто-то его украдет, не дай бог, вы просто купите новый и продолжите работу без перерыва).
Они также предлагают конкурентоспособные цены для тех видов нагрузок, которые нужны студентам (например, вы можете платить ~0-20 баксов в месяц за достаточно тяжелую нагрузку, необходимую для всех ваших упражнений (обычно они не требуют много оперативной памяти или работают 24/7 в любом случае).
В качестве побочного преимущества вы также научитесь использовать инструменты, которые становятся незаменимыми в работе современных разработчиков, связанных с крупномасштабными совместными проектами, поскольку установки на локальных хостах, как известно, трудно воспроизвести (чтобы узнать несколько предвзятое мнение об этом, посмотрите здесь).
Для этого можно использовать ex
(, который является режимом редактора vi
).
Вы можете использовать команду:read
для вставки содержимого в файл. Эта команда принимает имя файла, но вы можете использовать псевдоустройство /dev/stdin
-для чтения из стандартного ввода, что позволяет использовать маркер <<EOF
.
Команда :read
также принимает диапазон, и вы можете использовать символ $-
, который распадается на $
, обозначающий последнюю строку файла, и -
, чтобы вычесть из нее единицу, добраться до предпоследней строки файла. (Вы также можете использовать $-1
.)
Собираем все воедино:
$ ex -s /etc/security/limits.conf -c '$-r /dev/stdin' -c 'wq' <<EOF
* soft nproc 65535
* hard nproc 65535
* soft nofile 65535
* hard nofile 65535
root soft nproc 65535
root hard nproc 65535
root soft nofile 65535
root hard nofile 65535
EOF
-s
сделать его бесшумным (не переключаться в визуальный режим,что заставило бы экран мигать. )$-r
сокращенно (полное $-1read
также сработало бы )и, наконец, wq
— это то, как вы пишете и выходите в vi
.:-)
ОБНОВЛЕНИЕ:Если вместо вставки перед последней строкой вы хотите вставить перед строкой с определенным содержимым (, например «#Конец файла» ), тогда просто используйте /search/
шаблон для этого.
Например:
$ ex -s /etc/security/limits.conf -c '/^# End of file/-1r /dev/stdin' -c 'wq' <<EOF
...
EOF
Чтобы сохранить такой же формат документа здесь -и вставить заданный текст непосредственно перед последней строкой файла, попробуйте ed!
ed -s /etc/security/limits.conf << EOF
$ i
* soft nproc 65535
* hard nproc 65535
* soft nofile 65535
* hard nofile 65535
root soft nproc 65535
root hard nproc 65535
root soft nofile 65535
root hard nofile 65535
.
wq
EOF
Это отправляет последовательность команд в ed, все в документе здесь -. Мы обращаемся к последней строке файла с помощью $
и говорим, что мы хотели бы i
вставить некоторый текст. Далее следует текст, как и в вашем примере; как только мы закончили со вставленным текстом, мы говорим ed, что закончили с одной точкой(.
). W
записать файл обратно на диск, а затем q
uit.
Если вы хотите свернуть $ i
в $i
, вам нужно избежать знака доллара или использовать цитируемый здесь -документ (ed -s input << 'EOF'...
), чтобы предотвратить расширение $i
до текущего значения i
переменная или пустая, если такая переменная не установлена.
Другой метод :печатать все, кроме последней строки файла, печатать новый текст, а затем печатать последнюю строку файла. Затем перенаправьте весь этот вывод в новый файл.
{
sed '$d' limits.conf
cat <<EOF
* soft nproc 65535
* hard nproc 65535
* soft nofile 65535
* hard nofile 65535
root soft nproc 65535
root hard nproc 65535
root soft nofile 65535
root hard nofile 65535
EOF
tail -1 limits.conf
} > tmpfile && mv tmpfile limits.conf