小编Ves*_*nog的帖子

Bash 限制浮点变量的精度

在 Ubuntu 14.04.1 LTS 64-bitbash 中,我通过将浮点 bash 变量乘以bc比例设置为 3 来清除浮点变量;但是,我无法将小数点后的位数设为零并去掉小数点左侧的零。我怎样才能转化,说0.005000000.005?由于我的文件命名约定,这是必要的。感谢您的建议。

更新:我可以将它用于已经定义的 shell 变量并重新定义它们吗?以下代码给了我一个错误。

~/Desktop/MEEP$ printf "%.3f\n" $w
bash: printf: 0.005000: invalid number
0,000
Run Code Online (Sandbox Code Playgroud)

语言环境输出

@vesnog:~$ locale
LANG=en_US.UTF-8
LANGUAGE=en_US
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC=tr_TR.UTF-8
LC_TIME=tr_TR.UTF-8
LC_COLLATE="en_US.UTF-8"
LC_MONETARY=tr_TR.UTF-8
LC_MESSAGES="en_US.UTF-8"
LC_PAPER=tr_TR.UTF-8
LC_NAME=tr_TR.UTF-8
LC_ADDRESS=tr_TR.UTF-8
LC_TELEPHONE=tr_TR.UTF-8
LC_MEASUREMENT=tr_TR.UTF-8
LC_IDENTIFICATION=tr_TR.UTF-8
LC_ALL=
Run Code Online (Sandbox Code Playgroud)

的输出 echo $w

@vesnog:~$ echo $w
0.005000
Run Code Online (Sandbox Code Playgroud)

bash bc floating-point

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

在 Ubuntu 12.04.3 LTS 32 位上挂载启用 MTP 的设备

我的目标是使用 Ubuntu 12.04.3 LTS 32 位在我的 Samsung Galaxy Note 10.1(旧版)上执行文件操作。当我插入我的设备并看到自己时,这不是开箱即用的。为了安装并让操作系统识别设备,我在网上尝试了各种教程。我总结如下:

在 Ubuntu 上安装 MTP Android 的 SD 卡

http://www.mysolutions.it/mounting-your-mtp-androids-sd-card-on-ubuntu/?replytocom=5183#respond
Run Code Online (Sandbox Code Playgroud)

我已经按照描述完成了所有操作,但是当我运行“mtp-detect”命令时,会生成以下输出:

mtp-detect
Unable to open ~/.mtpz-data for reading, MTPZ disabled.libmtp version: 1.1.6

Listing raw device(s)
Device 0 (VID=04e8 and PID=6860) is a Samsung Galaxy models (MTP).
   Found 1 device(s):
   Samsung: Galaxy models (MTP) (04e8:6860) @ bus 3, dev 2
Attempting to connect device(s)
PTP_ERROR_IO: failed to open session, trying again after resetting USB interface
LIBMTP libusb: Attempt to reset device
inep: …
Run Code Online (Sandbox Code Playgroud)

ubuntu mount 32bit android mtp

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

如何编写一个 shell 脚本来在不同的屏幕会话中运行多个命令?

我的目标是编写一个zsh脚本来创建多个screen会话并在每个会话上运行单独的命令。我还想在脚本的开头检查是否有任何屏幕正在运行作业并终止所有闲置的屏幕。此外,如果可能的话,我希望有一种方法来记录单个屏幕的标准输出并获取他们的 ID 号。到目前为止,我已经尝试了以下方法:

### Script for running everything in screens ###
killall -15 screen ## We make sure that no screens are running for now
#bkg_array = ("TopJets" "BosonJets" "DiBoson" "TTbar")

screen -dmS "MYSCREEN"
screen -S "MYSCREEN" -p 0 -X stuff 'echo "The array has of elements."\n'
Run Code Online (Sandbox Code Playgroud)

但是,我似乎无法发送按键来按下Enter; 我怎样才能达到这种效果?此外,如果没有该-p选项,则命令不会发送到屏幕。按下后Ctrl+V+Enter,字符^M被粘贴到屏幕上,并在屏幕会话中按下回车键,但我不知道为什么会这样。

感谢您的帮助,请随时指出任何歧义。

gnu-screen zsh shell-script

6
推荐指数
1
解决办法
1556
查看次数

选项 -C 在 ls 输出中实现什么效果?

在手册页中它说:

-C     list entries by columns
Run Code Online (Sandbox Code Playgroud)

ls但是,我真的无法注意到or的输出之间有任何区别ls -C,有人可以向我解释一下吗?

command-line ls options command

3
推荐指数
1
解决办法
1849
查看次数

在 bash 脚本中启动程序并执行命令

如何在 root 中执行我在 bash 脚本中启动的命令?我的目标是让 ROOT 执行其 GUI 文件浏览器,并在用户不干扰键盘命令的情况下将其打开。我尝试过但失败了,因为 GUI 文件浏览器在很短的时间内保持打开状态。是否可以修改 bash 脚本并在脚本终止时打开程序?

ROOT 的说明可以在以下链接中找到:

http://root.cern.ch/drupal/

bash shell-script

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

是否可以在 VIM 或 EX 中通过 bash 脚本替换文件中的特定行?

我想通过使用EOEX构造修改文件中的特定行,例如第 5 行,如何实现我的目标?我用来实现我的目的的代码片段如下:

#!/bin/bash
S=0.030
F=0.150
N=30
DIFF=`echo "scale=3; $F - $S" | bc -l`
dw=`echo "scale=3; $DIFF / $N" | bc -l`
is=`echo "scale=3; $S / $dw" | bc -l`
if=`echo "scale=3; $F / $dw" | bc -l`
ex ~/Desktop/Dropbox/MATLAB/FFT.m  <<EOEX
  :5s/for*/for i = $S:$dw:$F/g
  :x
EOEX
Run Code Online (Sandbox Code Playgroud)

我做了一些研究并了解到通常EOF(文件结尾)here scripts 用于I/O重定向到特定命令的标准输入(在我的情况下是ex)。我还了解到,只要开始和结束关键字相同,任何单词都可以代替EOF. 我的问题是,for loopMatlab此脚本中用另一个初始化程序替换该行的预期效果不会删除该行并将字符串附加到第五行的末尾。出于参考目的,我还添加了我的 FFT.m 文件。对于之前我的问题的抽象性给您带来的不便,我深表歉意。请注意,我也愿意使用另一个程序来达到预期的效果,但很好奇为什么不能在exvim。请单击此处获取 Matlab 脚本。

bash vim vi ex

2
推荐指数
1
解决办法
1280
查看次数

标签 统计

bash ×3

shell-script ×2

32bit ×1

android ×1

bc ×1

command ×1

command-line ×1

ex ×1

floating-point ×1

gnu-screen ×1

ls ×1

mount ×1

mtp ×1

options ×1

ubuntu ×1

vi ×1

vim ×1

zsh ×1