有时我需要运行一些数学运算。我知道我可以使用bc或echo $(( 6/2 ))。我创建了自己的函数bc来读取输入。但有时需要很长时间才能输入:_bc "6/2"。所以我有这个问题:
有没有办法教 zsh/bash 如何在命令行中对数字运行数学运算?一个例子超过数千个单词。
$ 6/2
$ 3.0
Run Code Online (Sandbox Code Playgroud)
这意味着 zsh/bash 必须识别数字并调用 ie bc。
是否有 CLI 命令或需要处理的东西,fontforge例如快速获取给定字体中所有受支持符号的列表?
就像是:
$ the_command_I_am_looking_for givenFont.ttf
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz???????????????????????????????????????????????? ?????????????????????????????????????????????????????? ?????????????????????????????????????????????????????? ?????????????????????????????????????????????????????? ?????????????????????????????????????????????????????? ???????????????0123456789+-×÷¢£¥???????€????ƒ????????/~`|_- ,;:!'"()[]{}@$\&#%+¶‡†?
$
有没有办法做到这一点?
如何从数字计算百分比
例如我们设置
number=248
Run Code Online (Sandbox Code Playgroud)
我们想知道 $number 的 80% 是多少
那么如何在 bash 中计算它呢?
预期输出 198(正好是 198.4,但我们想用 floor 向下舍入)
出于某种原因,我的 VPS(运行 Debian 8)的第一个分区与扇区 63(而不是 2048)对齐
Model: VMware Virtual disk (scsi)
Disk /dev/sda: 314572800s
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:
Number Start End Size Type File system Flags
1 63s 79971569s 79971507s primary ext4 boot
2 79971570s 83875364s 3903795s primary linux-swap(v1)
83875365s 314572799s 230697435s Free Space
Run Code Online (Sandbox Code Playgroud)
现在我想调整分区大小以分配可用空间,不幸的fdisk是,第一个扇区从 2048 开始。但正如我在这里读到的那样,可以fdisk使用此命令强制从 63 开始。
fdisk -c=dos -u=cylinders /dev/sda
Run Code Online (Sandbox Code Playgroud)
这有多安全?此外,由于此方法已被弃用,这是否会损害我的 VPS 的性能?
我需要编写一个awk命令,该命令将从下表中仅返回标题为 的行的标识号Turtle。该表存储在turtle.txt
Id Num. Title CatchDate
433417 RedTurtle 2001-06-29
493303 BlueTurtle 1998-09-20
259497 Turtle 1985-05-08
229505 RedTurtle 1994-07-13
473076 OrangeTurtle 2002-03-08
221907 Blueturtle 1999-07-02
457032 Turtle 1993-04-09
490359 RedTurtle 1996-11-12
494595 SnappingTurtle 1985-05-20
402421 BlueTurtle 1999-08-16
Run Code Online (Sandbox Code Playgroud) 在 dash(以及 bash zsh 和其他一些 shell)中,该命令local可以将变量范围限制为该函数(在某些情况下还有后代)。这使得有可能使变量仅限于该函数内部(以及某些情况下的后代函数调用)。
例如:
testlocal(){
local IFS
IFS=123
echo "internal IFS = $IFS"
testdescend
}
testdescend(){
echo "descended IFS = $IFS"
}
IFS=abc
testlocal
echo "external IFS = $IFS"
Run Code Online (Sandbox Code Playgroud)
在 dash(以及 bash 和 zsh)中执行时生成此输出:
$ dash ./script
internal IFS = 123
descended IFS = 123
external IFS = abc
Run Code Online (Sandbox Code Playgroud)
这意味着 IFS对函数(和后代)来说仍然是本地的。
但是, ksh 不同,不接受local:
$ ksh ./script
./mt2[3]: local: not found [No such file or directory]
Run Code Online (Sandbox Code Playgroud)
将“本地”一词更改为“排版”可使脚本(几乎)在 ksh 中工作,但 …
我在课堂上向我的学生展示了一段有趣的代码(或者我认为是这样),令我惊讶的是,它在zsh. 然后我切换到bash它并按预期工作。
代码如下:
[ $(( $RANDOM % 6 )) == 0 ] && echo "Boom" || echo "Click"
Run Code Online (Sandbox Code Playgroud)
在bash它打印Boom或Click随机,符合市场预期。但在zsh我收到以下错误消息:
zsh: = 未找到
谁能解释一下有什么区别?据我了解,两个 shell 都应该以等效的方式解释脚本。
谢谢。
这可能是一个荒谬的帖子,但假设我们有一个名为 的文件-|h4k3r|- ,为什么这个引用不起作用?
cat '-|h4k3r|-'
Run Code Online (Sandbox Code Playgroud)
我认为单引号会删除所有特殊字符的含义?
但是这个有效
cat -- -\|h4k3r\|-
Run Code Online (Sandbox Code Playgroud)
这个也是:
cat "./-|h4k3r|-"
Run Code Online (Sandbox Code Playgroud)
但我不明白为什么这不起作用?
cat "-|h4k3r|-"
Run Code Online (Sandbox Code Playgroud)
我只是想了解为什么在这个例子中引用没有按预期工作。
也许 bash 对'-or有特殊意义"-??
我有一个经常使用的目录。假设它是:
/etc/insserv.conf.d/testname
Run Code Online (Sandbox Code Playgroud)
我在我的中设置了一个变量/root/.bashrc:
mydir=/etc/insserv.conf.d/testname
Run Code Online (Sandbox Code Playgroud)
现在,我可以通过这个命令打开这个目录
cd $mydir
Run Code Online (Sandbox Code Playgroud)
但我真的不喜欢那个角色$。有什么解决方法可以实现这个吗?我的意思是:我只想通过 来打开这个目录cd mydir,在 中可以Ubuntu 16.04吗?
我想将对分隔符的更改仅限于以下 echo 命令而不是 shell:
$ myarr=(1 2 3)
$ echo $( IFS="|"; echo "${myarr[@]}" )
1 2 3
Run Code Online (Sandbox Code Playgroud)
为什么分隔符不适用于数组扩展?谢谢。
bash ×7
zsh ×3
arithmetic ×2
command-line ×2
shell-script ×2
array ×1
awk ×1
cd-command ×1
dash ×1
fdisk ×1
fonts ×1
ksh ×1
numeric-data ×1
partition ×1
quoting ×1
sed ×1
variable ×1