小编ImH*_*ere的帖子

对输入到命令行中的数字进行数学运算,无需调用 bc

有时我需要运行一些数学运算。我知道我可以使用bcecho $(( 6/2 ))。我创建了自己的函数bc来读取输入。但有时需要很长时间才能输入:_bc "6/2"。所以我有这个问题:

有没有办法教 zsh/bash 如何在命令行中对数字运行数学运算?一个例子超过数千个单词。

$ 6/2
$ 3.0
Run Code Online (Sandbox Code Playgroud)

这意味着 zsh/bash 必须识别数字并调用 ie bc

command-line bash zsh arithmetic

6
推荐指数
5
解决办法
2480
查看次数

如何列出给定字体的所有支持的字形

是否有 CLI 命令或需要处理的东西,fontforge例如快速获取给定字体中所有受支持符号的列表?

就像是:

$ the_command_I_am_looking_for givenFont.ttf
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz???????????????????????????????????????????????? ?????????????????????????????????????????????????????? ?????????????????????????????????????????????????????? ?????????????????????????????????????????????????????? ?????????????????????????????????????????????????????? ???????????????0123456789+-×÷¢£¥???????€????ƒ????????/~`|_- ,;:!'"()[]{}@$\&#%+¶‡†? 
$

有没有办法做到这一点?

command-line fonts

6
推荐指数
2
解决办法
2238
查看次数

bash + 如何从数字计算百分比

如何从数字计算百分比

例如我们设置

number=248
Run Code Online (Sandbox Code Playgroud)

我们想知道 $number 的 80% 是多少

那么如何在 bash 中计算它呢?

预期输出 198(正好是 198.4,但我们想用 floor 向下舍入)

bash numeric-data

5
推荐指数
2
解决办法
5万
查看次数

强制 fdisk 使用扇区 63 边界是否安全?

出于某种原因,我的 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 的性能?

partition fdisk

5
推荐指数
1
解决办法
2583
查看次数

从文件中提取具有特定第 n(第二)列值的行的第 m(第一)列值

我需要编写一个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)

sed awk text-processing

5
推荐指数
1
解决办法
1855
查看次数

有没有办法使本地命令可移植地工作以破折号 ksh bash 和 zsh?

在 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 中工作,但 …

bash ksh zsh dash shell-script

5
推荐指数
1
解决办法
456
查看次数

为什么算术扩展在 Bash 中有效,而在 Zsh 中无效?

我在课堂上向我的学生展示了一段有趣的代码(或者我认为是这样),令我惊讶的是,它在zsh. 然后我切换到bash它并按预期工作。

代码如下:

[ $(( $RANDOM % 6 )) == 0 ] && echo "Boom" || echo "Click"
Run Code Online (Sandbox Code Playgroud)

bash它打印BoomClick随机,符合市场预期。但在zsh我收到以下错误消息:

zsh: = 未找到

谁能解释一下有什么区别?据我了解,两个 shell 都应该以等效的方式解释脚本。

谢谢。

bash zsh shell-script arithmetic

5
推荐指数
1
解决办法
1144
查看次数

为什么引用不能保护以“-”开头的文件名免受误解?

这可能是一个荒谬的帖子,但假设我们有一个名为 的文件-|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有特殊意义"-??

bash quoting

5
推荐指数
2
解决办法
396
查看次数

输入存储在变量中的路径时如何省略字符$?

我有一个经常使用的目录。假设它是:

/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吗?

bash cd-command variable

4
推荐指数
2
解决办法
477
查看次数

为什么 IFS 的分隔符不适用于数组扩展?

我想将对分隔符的更改仅限于以下 echo 命令而不是 shell:

$ myarr=(1 2 3)

$ echo $( IFS="|"; echo "${myarr[@]}" )
1 2 3
Run Code Online (Sandbox Code Playgroud)

为什么分隔符不适用于数组扩展?谢谢。

bash array

4
推荐指数
1
解决办法
1412
查看次数