当使用 bash(在终端中)执行很长的命令时,能够使用鼠标将光标设置到任意位置通常很有用。在 Mac-Os 中,alt(Option)键具有此效果(使用 alt+click)。
我开始使用Linux,这个选项不起作用。我相信有某种方法可以更新 ~/.inputrc 来启用此选项。你知道这样的方法吗?
我想按第一个文件对文件进行排序,但最后一个字符是最重要的。
例如表单文件:
"AAAACTTTTT" 1 2
"AAAACAAAAA" 1 2 6 4
Run Code Online (Sandbox Code Playgroud)
到:
"AAAACAAAAA" 1 2 6 4
"AAAACTTTTT" 1 2
Run Code Online (Sandbox Code Playgroud)
我试过:
sort -k1,1 file
Run Code Online (Sandbox Code Playgroud)
当然这是行不通的,但我不知道该怎么做。你可以帮帮我吗?也许有一些秘密旗帜?
我似乎搜索了许多非常相似的问题,但从未找到有用的东西。我正在尝试使用树莓派(第二代)与 Wifi OBDII 传感器进行通信。我可以使用以下命令
nc -C 192.168.0.10 35000
Run Code Online (Sandbox Code Playgroud)
192.168.0.10 是汽车传感器,35000 是端口。这并不重要,因为连接似乎没问题。无论如何,我可以打开一个 nc 实例,然后键入,例如“0145”(传感器代码),作为回报,我在 nc 会话的输出上得到该传感器的值(例如,我的引擎的 RPM) )。效果很好。我想做的是将命令从文本文件传输到 nc 会话中以进行绘图。因此,我的理想结果是将 RPM 值和相关时间的恒定流转储到文本文件中。我可以从那里工作。但是,我并不完全知道该怎么做。我已经设置了一个commands.txt,其中有数千行“0145”,我想读取该文件并将其逐行传递给nc(我可能可以通过睡眠来控制采样间隔),然后读取输出并将其存储到文本文件中。我知道这个问题与标准输入和标准输出以及管道有关,但无论出于何种原因,我一直无法完全理解它。我绝不是其中任何一个的大师。我还想编写整个过程的脚本。
现在,如果我跑
cat <(echo 0145) - | nc -C 192.168.0.10 35000
Run Code Online (Sandbox Code Playgroud)
这为我提供了我想要的终端输出,但仅适用于单个值。但是,一旦我尝试将其放入循环中,将 0145 放入脚本中的 $commands 中,并从 txt 文件中逐行获取 $commands ,它就停止工作。事实上,即使我将其保留为 0145 并且不使用变量,它也会在任何循环或 if 块内停止工作。
所以,长话短说,我想编写脚本将 txt 文件逐行发送到 nc 连接,然后我想将每个响应提取到另一个文件中。如果它是无脚本的,我可以打开该 nc 连接并每 1 秒发送 0145 并获取这些响应(仍然不知道如何将它们传递到文件),但这几乎没有效率。我觉得应该有一种更简单的方法来做到这一点。我有点菜鸟,但我想我可以在这里尝试一下。任何帮助是极大的赞赏
我的文件具有以下结构:
11
--11a
-----a.jpg
-----b.jpg
-----....
--11b
-----d.jpg
-----g.jpg
...
Run Code Online (Sandbox Code Playgroud)
我想将所有 .jpg 文件放在一个文件夹中:
11
-a.jpg
-b.jpg
-d.jpg
-g.jpg
...
Run Code Online (Sandbox Code Playgroud)
基本上我有包含许多 .jpg 文件的子文件夹,我想将它们全部移动到一个目录(例如父目录)。
我已经尝试过:
mv */*.jpg all但我明白了-bash: /bin/mv: Argument list too long。
标题说明了一切。也许这只是我的笔记本电脑,但我运行的是 Ubuntu 16.04 for WSL,并且没有按键组合允许我向上或向下翻页。我尝试了 Ctrl、Shift、PgUp、PgDn 和箭头键的每种组合。
这是我遇到问题的命令
username@computer /current/working/directory
$ dd if="$filename" bs=1 seek=10 count=10 conv=notrunc status=progress^C
0+0 records in
0+0 records out
0 bytes copied, 1.70242 s, 0.0 kB/s
Run Code Online (Sandbox Code Playgroud)
测试输出到文件审判(为了理智?)
username@computer /current/working/directory
$ dd if="$filename" bs=1 seek=10 count=10 conv=notrunc status=progress of=test
22+0 records in
22+0 records out
22 bytes copied, 0.0115305 s, 1.9 kB/s
Run Code Online (Sandbox Code Playgroud)
环境
username@computer /current/working/directory
$ echo $filename
somefile.ext
username@computer /current/working/directory
$ dd --version
dd (coreutils) 8.26
Packaged by Cygwin (8.26-1)
Copyright (C) 2016 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version …Run Code Online (Sandbox Code Playgroud) 我正在将gnome-terminalbash 与 bash 一起使用,当我有一个应该越过该行的命令时,它只会保留在同一行上。所以而不是:
echo "abcdefghijklmnopqrstuvwxyz"
Run Code Online (Sandbox Code Playgroud)
我会得到
opqrstuvwxyz""abcdefghijklmn
Run Code Online (Sandbox Code Playgroud)
或者类似的东西。但是,如果我按 Enter 键,该命令仍然有效。我相信这与我的 PS1 变量有关,但我不知道它出了什么问题。这里是:
export PS1='\e[1;35m[\u:\w]\$\e[0;35m '
Run Code Online (Sandbox Code Playgroud) 我尝试使用这一行,从包含我要循环的文件夹的父文件夹开始:
for dir in */; do
cd $dir
for dir2 in */; do
cd $dir2
ls -d $PWD/*
cd ..
done
cd ..
done
Run Code Online (Sandbox Code Playgroud)
但它只是输出我整个计算机的全部内容并返回到根文件夹 /~ ...这种行为有什么解释吗?
我正在尝试下载一个 tar (有效)并立即将其解压到一个子目录(最好与存档名称相同)。我认为以下代码应该可以工作,但它尝试将写入解压文件写入 STDOUT 并失败。
\n\nwget -O - https://ufal.mff.cuni.cz/~zabokrtsky/courses/npfl104/data/classification/artificial_objects.tgz | tar -xvz --one-top-level\nRun Code Online (Sandbox Code Playgroud)\n\n结果(非常神秘的失败):
\n\n...\nSaving to: \xe2\x80\x98STDOUT\xe2\x80\x99\n...\nCannot write to \xe2\x80\x98-\xe2\x80\x99 (Success).\nRun Code Online (Sandbox Code Playgroud)\n\n不指定--one-top-level可以解决问题,但随后内部的文件将按预期提取到当前文件夹。
用两个单独的命令执行此操作:首先下载它,然后用中间文件解压,再次按预期进行。
\n\n...\nSaving to: \xe2\x80\x98STDOUT\xe2\x80\x99\n...\nCannot write to \xe2\x80\x98-\xe2\x80\x99 (Success).\nRun Code Online (Sandbox Code Playgroud)\n\n我知道我可以创建一个子文件夹并使用 -C 更改 tar 的输出目录,但我宁愿理解为什么我的方法不起作用。
\n\nTAR v2016
\n当我在 Ubuntu 上通过 Bash 文件生成 SSH 密钥时,我的 PC 的计算机名称(我猜就是这样)会自动添加到该 SSH 密钥中。
这是在 bash 文件中生成密钥的部分:
# Create new ssh-key
echo | ssh-keygen -P ''
# Cat the ssh-key to print on the screen
cat ~/.ssh/id_rsa.pub
Output: ssh-rsa AAAAB....JpyT+gt pc172@pc172-centre-540S-03ILL
Run Code Online (Sandbox Code Playgroud)
为什么这部pc172@pc172-centre-540S-03ILL分会添加到生成的密钥中?
上面的部分类似于我的终端内路径之前显示的文本。
c172@pc172-centre-540S-03ILL:/var/www/new-project-ubuntu$
Run Code Online (Sandbox Code Playgroud)