标签: bash

sh:找不到时间命令

在 llvm 3.0 测试套件中,下面的代码片段在 bash 上给出了以下错误:

sh:找不到时间命令

if [ "x$RHOST" = x ] ; then
  ( sh -c "$ULIMITCMD $TIMEIT -p sh -c '$COMMAND >$OUTFILE 2>&1 < $INFILE; echo exit \$?'" ) 2>&1 \
| awk -- '\
BEGIN     { cpu = 0.0; }
/^user/   { cpu += $2; print; }
!/^user/  { print; }
END       { printf("program %f\n", cpu); }' > $OUTFILE.time
Run Code Online (Sandbox Code Playgroud)

其中 $TIMEIT = 时间。

我试图将“sh -c”更改为“eval”,但错误仍在继续。

在尝试解决此错误时,我注意到一些有趣的事情可能有助于解决此问题,也可能无济于事:运行 sh -c "time" 有效,但 sh -c "time -p" 无效。

你们有没有人知道为什么会发生这个错误,我该如何解决? …

bash time sh llvm

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

“其他”手指(/etc/passwd 中的 GECOS 字段)

在文件中/etc/passwd我们有所谓的GECOS fields(代表“通用电气综合操作系统”),即:

username:password:userid:groupid:gecos:home-dir:shell 
Run Code Online (Sandbox Code Playgroud)

其中GECOS分为:

:FullName,RoomAddress,WorkPhone,HomePhone,Others:
Run Code Online (Sandbox Code Playgroud)

并被Others分成任意多的逗号:

:FullName,RoomAddress,WorkPhone,HomePhone,Other1,Other2,Other3:
Run Code Online (Sandbox Code Playgroud)

man chfn页面中可以阅读:

另一个字段用于存储其他应用程序使用的记帐信息。

现在,应用程序开发人员(我很感兴趣C languagesystem calls和/或bash script),这就是抓住这个信息的最佳方式?

仅考虑Bash环境,鉴于该finger命令无法显示others字段(或者至少我不知道如何显示),还有哪些其他命令可以显示?我知道这chfn不仅是展示,而且是允许它们被改变。如果只是将它输出到stdout怎么办?

linux bash shell-script c finger

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

如何在文件名中同时扩展变量名和通配符?

我有一个 bash 脚本,其中$DIR是一个可能包含空格的目录名。

这个:

rm "$DIR/*.MOV"
Run Code Online (Sandbox Code Playgroud)

给出错误“没有这样的文件或目录”。没有字面上命名为“*.MOV”的文件;我希望*扩展为多个参数 - 每个匹配的文件名一个。

例如:

rm some\ folder/foo.MOV some\ folder/bar.MOV
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

bash globbing

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

如何通过绝对路径运行 bash 脚本?

我有一个文件:

/Users/danylo.volokh/test/test_bash_script.sh
Run Code Online (Sandbox Code Playgroud)

内容很简单:

#!/usr/bin/env bash
echo "-- print from script"
Run Code Online (Sandbox Code Playgroud)

我在文件夹“danylo.volokh”中

此命令运行良好:

Danilos-MacBook-Pro:~ danylo.volokh$ test/test_bash_script.sh 
-- print from script
Run Code Online (Sandbox Code Playgroud)

但是,如果我尝试使用绝对路径运行,则会出现错误:

Danilos-MacBook-Pro:~ danylo.volokh$ /test/test_bash_script.sh 
-bash: /test/test_bash_script.sh: No such file or directory
Run Code Online (Sandbox Code Playgroud)

我想从任何文件夹运行具有绝对路径的命令并获取要执行的脚本。

linux bash shell command-line macos

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

Tee 脚本以在其自身内归档

我熟悉使用 tee,我知道我可以简单地记录输出

script.sh | tee file.log
Run Code Online (Sandbox Code Playgroud)

但是,我想要一个无缝的用户界面。有没有办法在 script.sh 中像上面那样运行 tee ?在这个脚本中,有数百个回声和许多其他正在运行的脚本,很难将每个脚本单独附加到文件中。

bash tee

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

来自 BASH 的 FTP 命令。~ 有什么作用?

我试图使用 Bash 从 FTP 中删除多个文件。

然后我在这里使用prompt命令找到了我的答案。

但我想知道波浪号 ~ 在:

ftp nobody@ftp.example.com
cd my_local_directory
prompt
mdelete *.txt~
Run Code Online (Sandbox Code Playgroud)

我发现这个网站说:

对于某些 ftp 服务器,在用户名之前使用“波浪号”字符或 ~ 来绕过指定用户目录完整路径的需要。例如,

my_university.edu/users/bob/welcome.html

也可以通过指定:

my_university.edu/~bob/welcome.html

但这与此用例有关。

linux ftp bash

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

使用 BASH (OSX) 通过 USB 访问 MTP 设备

有许多 3rd 方应用程序允许通过 USB 访问 MTP 设备。这里只有 2 个 http://mac.eltima.com/sync-mac.html http://mac.eltima.com/mtp-file-transfer.html

所以我的问题是,为什么不能直接使用 bash 命令来做到这一点?有没有 bash 专家愿意插话?

文章从窗户上MTP装置

建议 将 MTP 设备公开为读/写文件系统是不可能的。

如果是这样,应用程序如何实现这一点?

usb bash mtp macos

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

Windows 10 上 Ubuntu 上的 Bash 中的磁盘设备

在 Windows 10 中,您可以在 Windows上的 Ubuntu 上启用 Bash。我已经这样做了,但我正在努力弄清楚如何访问磁盘设备。例如,在普通的 Ubuntu 中,如果我想将一个闪存驱动器的低级副本复制到另一个,我可能会执行dd if=/dev/sdb of=/dev/sdc bs=4K,但这些/dev/sd?设备似乎不存在于 Windows 上的 Ubuntu 上的 Bash 中。lsblk也没有列出任何设备。既然dd安装了,我想相信一定有办法访问磁盘设备。这能做到吗?如何?

在 Windows 上的 Ubuntu 上重击

bash hard-drive windows-10 windows-subsystem-for-linux

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

如何grep并只获取匹配的字符串?

随意更改标题,因为它与我的问题 100% 不匹配

我在一个文件中有这样的东西:

junk
long_ass_string "/I/want/this/$code/$name" long_ass_string
junk
Run Code Online (Sandbox Code Playgroud)

举例说明:

  • /我/想/本/部分始终是相同的
  • $code$name是动态的,每个字符串都不同
  • long_ass_string中可以有更多的/I/want/this/$code/$name字符串,我想获得所有这些字符串。
  • 引号 (this => " ) 出现在每个/I/want/this/$code/$name字符串中。

到目前为止,我已经尝试...

grep -w "/I/want/this/*" file# 输出 long_ass_string
grep -o "/I/want/this/*" file# 输出 /I/want/this/

想避免使用仅在之前和/或之后获得 x 个额外字符的解决方案

linux bash grep

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

如何摆脱 ssh 登录时的错误消息 --&gt; “setterm:终端 xterm 不支持 --blength”

每当我 ssh 进入我的arch linux框时,我都会收到此错误消息:

setterm: terminal xterm does not support --blength
Run Code Online (Sandbox Code Playgroud)

同样在执行时:

$ sudo su -
Run Code Online (Sandbox Code Playgroud)

有趣的是在使用时不是

$ sudo su
Run Code Online (Sandbox Code Playgroud)

我已经筛选了各种手册页,试图找到设置此终端属性的位置。那些包括settermterminfo。我走了这么远

find / -type f -iname "terminfo" -exec grep -i blength {} \;

那返回了 0 个结果。也调查过/etc/.bashrc/etc/bash.basrc但没有发现任何调用setterm甚至包含*blength*在其声明中的内容。

这个问题真的只是一个小麻烦,但我觉得它非常令人恼火,因为我不喜欢看到running使用systemctl status --system. 此外,我确保 PuTTY(使用 SuperPuTTY 作为其前端)没有传递任何命令。我真的很感激关于这个问题的一些建议。非常感谢。

terminal bash xterm putty arch-linux

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