С помощью bash, используя утилиту readline, мы можем определить последовательность клавиш, чтобы поместить слово calc
в начало и заключить написанный текст в двойные кавычки:
bind '"\ec": "\C-acalc \"\e[F\""'
Выполнив это, вы набираете 23 + 46 * 89
, например, затем Alt-c , чтобы получить:
calc "23 + 46 * 89"
Просто нажмите Enter, и математические вычисления будут выполнены функцией, определенной как calc, которая может быть как простой, так и намного более сложной:
calc () { <<<"$*" bc -l; }
Мы можем определить псевдоним:
alias +='calc #'
Который прокомментирует всю набранную командную строку. Вы набираете:
+ (56 * 23 + 26) / 17
Когда вы нажмете ввод, строка будет преобразована в calc #(56 * 23 + 26) / 17
и будет вызвана команда calc
. Если calc это функция:
calc(){ s=$(HISTTIMEFORMAT='' history 1); # recover last command line.
s=${s#*[ ]}; # remove initial spaces.
s=${s#*[0-9]}; # remove history line number.
s=${s#*[ ]+}; # remove more spaces.
eval 'bc -l <<<"'"$s"'"'; # calculate the line.
}
calc(){ s=$(history -1 | # last command(s)
sed '$!d;s/^[ \t]*[0-9]*[ \t]*+ //'); # clean it up
# (assume one line commads)
eval 'bc -l <<<"'"$s"'"'; # Do the math.
}
zsh zsh не допускает ни псевдонима +
, ни символа #
.
Значение будет напечатано как:
$ + (56 * 23 + 26) / 17
77.29411764705882352941
Требуется только +
, строка заключена в кавычки (нет подстановок ), допустимы переменные оболочки:
$ a=23
$ + (56 * 23 + $a) / 17
77.11764705882352941176
С некоторыми ограничениями, это самое близкое, что я получил к вашему запросу с функцией (в bash):
+() { bc -l <<< "$*"; }
Что будет работать так:
$ + 25+68+8/24
93.33333333333333333333
Проблема в том, что синтаксический анализ оболочки нельзя избежать, и *
(, например ), может быть расширен до списка файлов в pwd.
Если вы напишете командную строку без (пробелов ), вероятно, все будет в порядке.
Остерегайтесь писать такие вещи, как $(...)
, потому что они будут расширены.
Безопасное решение — заключать оцениваемую строку в кавычки.:
$ + '45 + (58+3 * l(23))/7'
54.62949752111249272462
$ + '4 * a(1) * 2'
6.28318530717958647688
Что всего на на два символа короче вашего _bc "6/2"
, но +
кажется мне более интуитивным.
Если вы используете LVM для расширения места на диске, вам не нужно будет перезагружаться, пока доступно место на физическом диске.
Когда вам нужно добавить диск в ESX, вам нужно только повторно просканировать шину SCSI (в GUEST ), чтобы отобразить диск. (без перезагрузки)
Например, на хосте ESX ()вы добавили на сервер НОВЫЙ диск 20G /dev/sdb. Теперь в GUEST вы можете повторно -просканировать шину SCSI без перезагрузки, чтобы отобразить диск.
В этом примере предполагается, что у вас есть только диск /dev/sda. Если у вас уже есть /dev/sdb, он будет отображаться как следующий /dev/sd? устройство.
again assume new drive is /dev/sdb/
Сначала получите номера хостов scsi.
#>ls /sys/class/scsi_host
Host0 Host1 Host2
Затем повторно просканируйте шину scsi с хостом 2, возвращенным сверху. (попробуйте Host1, если вы не можете найти его на Host2)
echo "- - -" > /sys/class/scsi_host/host2/scan
(fdisk теперь должен отображать дополнительные разделы /dev/sdb)
fdisk -l |grep sd
Disk /dev/sdb: 20.7 GB, 10737418240 bytes
Теперь вы можете использовать LVM для расширения логического тома и xfs _growfs для расширения пространства.