小编Mic*_*mer的帖子

在 .desktop EXEC 命令中获取当前路径

我试图让一个 .desktop 文件运行一个与 .desktop 存储在同一目录中的 .sh。整个目录需要可移植并在机器之间移动。

我的运行脚本是 run.sh

我试过了:

[Desktop Entry]
Type=Application
Terminal=true
Name=RunMe
#Exec=sh -c "`dirname %k`/run.sh"
#Exec=bash -c "export PATH=$PATH:`dirname %k`; bash run.sh;"
#Exec=bash -c "export PATH=$PATH:`dirname %k`; sh run.sh;"
Exec=bash -c "export PATH=$PATH:`dirname %k`; run.sh;"
Run Code Online (Sandbox Code Playgroud)

但是当我双击 .desktop 文件时没有任何反应。如果我双击“run.sh”并选择“run”,脚本运行良好。如果我使用 ' sh run.sh'从命令行运行脚本,它工作正常。

任何想法,甚至只是如何调试它实际试图运行的路径?

shell bash path .desktop

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

如何查找命令名称以使用该实用程序

在某些情况下,我安装了实用程序/程序,但命令名称与程序名称不同。

就像我最近安装了 PostgreSQL 一样,安装后我运行了命令

postgresql
Run Code Online (Sandbox Code Playgroud)

但它给出了一个错误 bash: postgresql command not found

所以我在互联网上搜索,发现启动 postgresql 的命令是

psql

那么,我如何找出使用什么名称访问哪个实用程序/程序?

我做了,apt-cache show postgresql但即使在那里也没有提到该程序将使用命令访问psql

请不要建议locate命令。它没有帮助。

command-line package-management

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

无论如何将变量传递给 bc,有一个要执行的命令?

我需要传递某些变量来bc获得浮点输出,

var1=$((<some operation>))
var2=$((<some operation>))      #Needs var1
var3=$((<some operation>))      #Needs var2
bc -l <<< $var3                 #Need output in Floating points
Run Code Online (Sandbox Code Playgroud)

输出:

(standard_in) 1: illegal character: $
Run Code Online (Sandbox Code Playgroud)

无论如何要克服这个?

更新:

diff=$(($epoc2-$epoc1))
var1=$(($diff / 60))
var2=$(($var1 / 57))
var3=`bc <<< 'scale=2; $var2'`
Run Code Online (Sandbox Code Playgroud)

bash shell-script bc

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

Makefile 中的一行条件检查

我试图实现这样的目标:如果用户将运行make build_x version=1.0则显示Building version 1.0,否则(make build_x不带version参数)显示Building version latest。但这里的关键是什么 - 我需要将版本设置-为默认值(以便能够正确使用它git)。这就是为什么我使用附加变量version_info替换为 的-原因latest

所以我的代码如下所示:

build_x:
    $(eval version ?= -)        
    $(eval version_info = ${if ["${version}" == "-"], "latest", "${version}"})

    ${INFO} "Doing checkout according to version $(version_info)..."
Run Code Online (Sandbox Code Playgroud)

我知道问题可能出在给 的这个条件上if

有任何想法吗?

make

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

%k 在 Exec= 中是什么意思?

Exec=sh -c "some command' %k
Run Code Online (Sandbox Code Playgroud)

在没有资料man sh,并man exec在%K。
%k 在这里是什么意思?

freedesktop .desktop

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

将字符串写入没有外壳的文件

假设我有一个没有运行 shell 的环境,所以我不能使用重定向、管道、here-documents 或其他 shell-ism,但我可以启动一个命令(通过execvp或类似的方式)。我想将任意字符串写入命名文件。是否有一个标准命令可以执行以下操作:

somecommand  outputfile 'string'
Run Code Online (Sandbox Code Playgroud)

例如:

somecommand /proc/sys/net/ipv4/ip_forward '1'
Run Code Online (Sandbox Code Playgroud)

一个非常愚蠢的例子可能是:

curl -o /proc/sys/net/ipv4/ip_forward http://example.com/1.txt
Run Code Online (Sandbox Code Playgroud)

我在其中设置 1.txt 以包含我想要的字符串。

是否有可以滥用的通用命令来执行此操作?

scripting files command output

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

修剪由 jq 提取的数字的尾随零

以下命令通过BTC从特定交易所获取价格来实现我的目标。

curl -sS https://api.binance.com/api/v1/ticker/price?symbol=BTCUSDT | jq -r '.price'
Run Code Online (Sandbox Code Playgroud)

输出暂时是,7222.25000000但我想得到它7222.25

numeric-data jq

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

如何将终端中的数据导出到文件(例如 csv 文件)

我是使用 Linux 的完全初学者,我想知道如何将命令行中的一堆数据导出到 csv 或电子表格文件(甚至文本也可以)。现在我只是echo在一个打印出大量数据的主题上使用。所以我可以看到随着时间流逝的数据。我想要做的是仅将带有数字的部分分开并将它们导出到数据文件中。

因此,例如,如果命令重复流式传输类似以下内容:

header: 
  seq: 93342 
  stamp: 
    secs: 1406820172 
    nsecs: 191358647 
  frame_id: '' 
name: ['arm_joint_1', 'arm_joint_2', 'arm_joint_3', 'arm_joint_4', 'arm_joint_5', 'gripper_finger_joint_l', 'gripper_finger_joint_r'] 
position: [2.116426527797216, 1.8058519002096407, -1.6111500844302575, 3.479512978878036, 2.8513271915116376, 0.0, 0.0] 
velocity: [-0.0, -0.0, 0.0, -0.0, -0.0, 0.0, 0.0] 
effort: [] 
--- 
header: 
  seq: 93343 
  stamp: 
    secs: 1406820172 
    nsecs: 211357280 
  frame_id: '' 
name: ['arm_joint_1', 'arm_joint_2', 'arm_joint_3', 'arm_joint_4', 'arm_joint_5', 'gripper_finger_joint_l', 'gripper_finger_joint_r'] 
position: [2.116426527797216, 1.8058519002096407, -1.6111500844302575, 3.479512978878036, 2.8513271915116376, 0.0, 0.0] 
velocity: [-0.0, -0.0, 0.0, -0.0, -0.0, 0.0, 0.0] 
effort: …
Run Code Online (Sandbox Code Playgroud)

grep sed csv spreadsheet

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

将命令通过管道传输到 pv 但隐藏所有原始命令的输出

我正在尝试使用pv,但我想隐藏我通过管道输入的命令,同时仍然能够看到 pv 的输出。使用command &> /dev/null | pv不起作用(如 pv 不接收任何数据)。command在标准输出和标准错误上都产生输出,我也不想看到。

我尝试使用 grep 管道 ( command &> /dev/null | pv | grep <=>) 但不时将内容输出到终端。

bash pipe pv

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

复制【cp的使用】问题

我在/mnt上安装了几个子文件夹。一个是/mnt/data,另一个是/mnt/1804iso。该/数据包括数据文件夹和文件从安装另一个磁盘,和/ 1804iso包括安装其内容我想复制到文件夹ISO文件/媒体/尼/ 0EB4-95E2 /这是一个安装闪存驱动器。

所以我打开bash并输入sudo cp -Rn /mnt/1804iso/.* /media/benny/0EB4-95E2/. 我通常会省略通配符星号/*/之前的句点,但如果我这样做,则 ISO 中的隐藏文件不会复制。所以有了这个命令,一件奇怪的事情发生了。正确复制 ISO 文件后,它也开始复制/mnt/data文件夹和文件。我不明白为什么会发生这种情况,因为没有引用该文件夹,除非我对命令部分的理解/mnt/1804iso/.*完全有缺陷。

有人可以解释为什么我的/mnt/data文件夹被包含在复制中吗?

bash cp gnome-shell

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