dc -f infile -e '[+z1 Примечание, что отрицательные числа, снабженные префиксом знак "минус", должны быть переведены для dc
, так как это использует _
префикс, а не -
префикс для этого. Например, через tr '-' '_' | dc -f- -e '...'
.
Редактирование: Так как этот ответ получил столько голосов "за мрак", вот подробное объяснение:
выражение [+z1 делает следующий :
[ interpret everything to the next ] as a string
+ push two values off the stack, add them and push the result
z push the current stack depth
1 push one
Как псевдокод:
- Определяют "add_top_of_stack" как:
- Удаляют два главных значения от стека и добавляют результат назад
- , Если стек имеет два или больше значения, выполните "add_top_of_stack" рекурсивно
- , Если стек имеет два или больше значения, выполненная Печать "add_top_of_stack"
- результат, теперь единственный объект, оставленный в стеке
Для реального понимания простоты и питания dc
, вот является рабочим сценарием Python, который реализует некоторые команды от dc
и выполняет версию Python вышеупомянутой команды:
### Implement some commands from dc
registers = {'r': None}
stack = []
def add():
stack.append(stack.pop() + stack.pop())
def z():
stack.append(len(stack))
def less(reg):
if stack.pop() < stack.pop():
registers[reg]()
def store(reg):
registers[reg] = stack.pop()
def p():
print stack[-1]
### Python version of the dc command above
# The equivalent to -f: read a file and push every line to the stack
import fileinput
for line in fileinput.input():
stack.append(int(line.strip()))
def cmd():
add()
z()
stack.append(1)
less('r')
stack.append(cmd)
store('r')
z()
stack.append(1)
less('r')
p()
После того, как машина подходит, необходимо быть в состоянии использовать что-то как
# Remount as read-only
mount -o remount,ro /
, С другой стороны, можно установить ее на только для чтения в fstab и использовать что-то как
# Remount as read-write
mount -o remount,rw /