AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / user-768410

CIsForCookies's questions

Martin Hope
CIsForCookies
Asked: 2022-03-23 06:30:49 +0800 CST

如何将字符串分成 N 80 个字符行?

  • 5

我想在脚本的开头显示一条欢迎消息:

echo "Running $0 $@"

但$@可能会很长。如何将这条线分成多条最多 80 个字符的行?

command-line
  • 3 个回答
  • 924 Views
Martin Hope
CIsForCookies
Asked: 2022-03-16 12:13:56 +0800 CST

是否可以为重定向标准输出的命令前缀命名?

  • 11

对不起,没有信息的标题......

我正在寻找的是这样的东西,它可以让我缩短重定向标准输出。我知道在执行带有空格的命令之前不会将其写入历史记录,并且有一些“魔术”运算符,例如“!!”等。

我基本上是在寻找类似的东西,它可以让我替换>/dev/null,所以,我可以写,例如

git pull !!!这将相当于git pull>/dev/null

有这样的事情吗?我可以覆盖现有的运算符/编写一个新的运算符吗?

command-line
  • 4 个回答
  • 1596 Views
Martin Hope
CIsForCookies
Asked: 2022-02-14 02:58:43 +0800 CST

如何在不让 bash 将其视为错误的情况下读取超时?

  • 0

我有一个 read_user_input.sh 脚本:

#!/bin/bash

# set -e

prompt="bla? [Y/n] "

while true; do
    read -p "$prompt" -n 1 -s -t 3 reply
    case $reply in
        ""|Y|y) echo "bla!!!"; break;;
        N|n) echo "no bla :( you suck"; break;;
        *) ;;
    esac
done

按我的预期工作 - 即

  • 用户输入“Y”-> bla
  • 用户输入“y”-> bla
  • 用户按 Enter -> bla
  • 超时-> bla

但是,添加时set -e- 读取以错误 > 128 结束。

来自read --help:

Exit Status:

返回码为零,除非遇到文件结尾、读取超时(在这种情况下大于 128)、发生变量分配错误或将无效文件描述符作为参数提供给 -u。

克服这个问题的最佳方法是什么?

  1. 添加|| true似乎不对,因为它会隐藏任何真正的错误。
  2. 我也不想删除set -e.
  3. 我想到的另一件事是处理它,trap但这似乎有点矫枉过正
command-line
  • 3 个回答
  • 310 Views
Martin Hope
CIsForCookies
Asked: 2021-09-06 10:02:35 +0800 CST

.deb 包可以包含要由 dpkg 编译的源代码吗?

  • 1

我有一个带有一些 c++ 代码的 pkg。目前我正在将一些 c++ 代码编译为二进制,一些作为库,我可以在其他平台上发布和部署它。

但是,我那里也有一个驱动程序,由于它对内核的依赖性,我无法交叉编译,这使得每个内核可能需要不同的二进制文件。

所以,我想要的是一个 .deb,我将在其中存储 /usr/bin 下的二进制文件(完成),/usr/lib 下的库(也完成)和 /opt/driver 下的驱动程序源代码(我猜......这是一个合法的地方吗?)

打包这是很容易的部分,因为我需要做的就是将它放在我的工作区中,然后调用dpkg-deb. 我不确定的是两件事

  1. 将源代码打包到 .deb 中是否合法?(在 python 术语中 - 是 .deb 是 bdist(二进制分发)还是也可以是 sdist(源分发))
  2. 如果它是合法的,我该如何调用 make 命令?可以dpkg / apt为我做吗?还是我需要运行dpkg -i pkg然后运行make?[查看postinst但我不确定这是否是正确的方法]

如果它可以解决这个问题,我对任何类型的构建系统持开放态度,尽管我目前正在使用 cmake 并且更愿意坚持使用它


我的 POC:

tree bla_x86_64
bla_x86_64
├── DEBIAN
│   ├── control
│   └── postinst
├── opt
│   └── bla.cpp
└── usr
    ├── bin
    │   └── bla.bin
    └── lib
        └── bla.lib
cat bla_x86_64/DEBIAN/postinst 
#!/bin/sh

set -e

echo hello world!
echo compiling $(ls /opt/bla.cpp)
echo cleanup
rm -rvf /opt/bla.cpp
$ dpkg-deb --build --root-owner-group bla_x86_64/
dpkg-deb: building package 'bla' in 'bla_x86_64.deb'.
$ sudo dpkg -i bla_x86_64.deb 
(Reading database ... 407519 files and directories currently installed.)
Preparing to unpack bla_x86_64.deb ...
Unpacking bla (4.0) over (3.0) ...
Setting up bla (4.0) ...
hello world!
compiling /opt/bla.cpp
cleanup
removed '/opt/bla.cpp'
package-management
  • 1 个回答
  • 138 Views
Martin Hope
CIsForCookies
Asked: 2020-08-21 01:14:53 +0800 CST

修改 bluetoothctl 自动化脚本 - 如何从期望和生成中删除输出?

  • 3

我正在尝试自动将我的耳机与我的 ubuntu16 机器配对。

我拿了这个漂亮的脚本并尝试了它,但它不起作用。我玩了一会儿,发现我可以使用这个最小的脚本:

#!/usr/bin/expect -f

set prompt '#'
set address [lindex $argv 0]

spawn bluetoothctl &> /dev/null
expect -re $prompt
send "\nconnect <my_mac_addr>\r"
sleep 10

我将它保存为 ./bluetooth.sh 并使用 ./bluetooth.sh & 运行它,它就像一个魅力。但是,我得到了这个烦人的bluetoothctl输出:

[NEW] Controller *** ### [default]
[NEW] Device *** A
[NEW] Device *** B
[NEW] Device *** C
[bluetooth]# 

我尝试使用添加到 spawn 命令的重定向将其删除,但正如您所见,它没有帮助...

删除expect会工作,但我不确定这是要走的路......

scripts command-line bash bluetooth expect
  • 2 个回答
  • 954 Views
Martin Hope
CIsForCookies
Asked: 2020-07-15 23:00:02 +0800 CST

是否可以为 etc 主机创建规则(规则:10.0.0.* ip。用法:ping ip.10)?

  • 0

如果我有多个主机,我想为其添加别名,例如

10.0.0.10 ip_10
10.0.0.11 ip_11
10.0.0.12 ip_12

有没有办法将这些组合成一行?

我试过了

10.0.0. ip

然后尝试用 ping 它,ping ip.10但它给了ping: unknown host ip.10.

我也试过10.0.0.* ip.*

networking hosts
  • 1 个回答
  • 30 Views
Martin Hope
CIsForCookies
Asked: 2019-12-02 04:17:56 +0800 CST

下载/安装软件包列表和单独下载每个软件包之间有区别吗?

  • 11

给定一个开发包列表(例如 pkgs="python3.5-dev python3-tk"),运行之间会有区别吗

sudo apt-get install $pkgs 

对比

for p in $pkgs; do sudo apt-get install $p; done

我问的主要是依赖项-拓扑排序相关,即是否会以任何一种方式下载和安装不同的包

package-management dependencies apt
  • 2 个回答
  • 1454 Views
Martin Hope
CIsForCookies
Asked: 2019-09-10 22:24:41 +0800 CST

循环失败后如何运行2个命令?

  • 0

我想写一个这样的简单循环:

for f in my_file0 my_file1 my_file2; do
    (( $(find . -name $f | wc -l > 0 ))
done

但是,我希望循环在失败时中断脚本并打印错误消息,所以我这样做了:

for f in my_file0 my_file1 my_file2; do
    (( $(find . -name $f | wc -l > 0 )) || echo error && exit 1
done

显然,它在第一次迭代时退出。

所以,我继续使用这个解决方案

for f in my_file0 my_file1 my_file2; do
    (( $(find . -name $f | wc -l > 0 )) || (echo error && exit 1)
done

据我了解,它只退出子外壳:-(

所以,现在我这样写:

for f in my_file0 my_file1 my_file2; do
    (( $(find . -name $f | wc -l > 0 ))
    if (( $? > 0 )); then echo error && exit 1; fi
done

但这很糟糕……

除了调用将运行这两个命令的函数之外,我还能做什么?

command-line bash
  • 1 个回答
  • 275 Views
Martin Hope
CIsForCookies
Asked: 2019-06-13 07:57:22 +0800 CST

如何移动参数并将其完全从 args ls 中抛出?

  • 3

我有一个获取 N 参数的脚本。它首先解析它们(提取一个特定的值X),然后用该值调用另一个程序:

function main() {
    parse "$@"
    run "$@"
}
main "$@"

我想在 args 列表的开头添加一个可选参数(用于设置我正在运行的 python 版本的参数)。所以我将它添加到解析函数中:

if [ "$1" = '2' ] || [ "$1" = '3' ]; then version=$1 && shift; else version=2; fi

但是,在解析结束后,我被卡住了,因为shift它不影响运行功能。如果不再次检查第一个值的值,我怎么能做到这一点(这会破坏拥有解析函数的整个目的)

command-line bash
  • 1 个回答
  • 233 Views
Martin Hope
CIsForCookies
Asked: 2019-02-12 04:42:51 +0800 CST

如何从一行中删除括号?

  • 4

给定这样的一行:"hello my (name) is (user),我怎样才能删除所有'()'使用sed?

我目前正在做的是使用视觉块突出显示该行,然后:s/(//g一次又一次地为). 有没有办法(, )在一个sed命令中同时删除两者?

我的最终目标是"hello my name is user"

sed text-processing
  • 3 个回答
  • 2710 Views
Martin Hope
CIsForCookies
Asked: 2018-12-12 04:26:41 +0800 CST

鉴于 grep -n 的结果,我如何在该特定行中打开 vim?(仅使用键盘)

  • 10

当我运行grep "keyword" -n并获得以下结果列表时:

a/b/c:10:    keyword
a/b/c:70:    keyword
a/b/d:50:    keyword

如何在它找到的行中打开其中一个文件(比如列表中的第二个)?

我现在只需使用鼠标复制输出,然后复制它vim,然后添加+我复制的行号。(这意味着我vim a/b/c +70使用鼠标副本来获取文件名,并使用另一个鼠标副本来获取行号[或者我只是手动复制它,当它足够短时])

有没有办法用键盘快捷键做到这一点?

vim command-line grep
  • 3 个回答
  • 2254 Views
Martin Hope
CIsForCookies
Asked: 2018-12-12 03:45:36 +0800 CST

有没有办法实际查看每个级别的 git stash 的变化?

  • 1

假设我做git stash了几次,每次都进行更改,我可以看到,使用git stash show存储堆栈顶部更改的文件是什么。我还可以看到我有多少添加/删除。

但是,我不知道如何在没有git stash pop和的情况下查看更改本身git diff

另外,我如何查看以前的文件更改(最好查看整个更改,但查看文件也会有帮助)git stash?

git
  • 1 个回答
  • 377 Views
Martin Hope
CIsForCookies
Asked: 2018-12-10 05:02:45 +0800 CST

如何比较 2 个文件中的函数列表?

  • 3

我想列出我拥有的 2 个文件中的所有函数,所以我使用了:

cat <file_A> | grep -E "^function"
cat <file_B> | grep -E "^function"

如何比较输出并突出相似之处?

command-line bash text-processing
  • 2 个回答
  • 184 Views
Martin Hope
CIsForCookies
Asked: 2018-07-09 04:36:48 +0800 CST

是否可以从 rm -rf 中排除某些文件?[复制]

  • 3
这个问题在这里已经有了答案:
使用命令行删除除指定文件/文件夹以外的所有文件? (2 个回答)
如何从特定文件夹中删除除一个命名文件之外的所有文件 [重复] 5 个答案
4年前关闭。

我有一个由另一个用户填写的目录,我的任务是维护它。我想删除它的所有内容,除了具有特定名称的 2 个文件。是否有可能rm或应该这样做:

cp aaa/a ./a && cp aaa/b ./b && rm -rf aaa/* && mv ./a aaa/a && mv ./b aaa/b

aaa目录在哪里,a,b是我要保留的文件,还有(至少,可能有)其他文件/目录。

有没有更好(更短)的方法?

command-line bash rm sh
  • 1 个回答
  • 2047 Views
Martin Hope
CIsForCookies
Asked: 2018-03-08 04:47:00 +0800 CST

无法识别命令行选项的别名

  • 1

我有几个标志要添加到我的 gcc 编译中,所以我alias将它们编辑为

alias gcc_flags='-std=c99 -Wall -pedantic -Wextra -Wconversion'

并尝试像这样编译:

$ gcc gcc_flags file_name.c -o object_name -L/usr/lib/i386-linux-gnu -lcurl
gcc: error: gcc_flags: No such file or directory

编译时没有别名,即

gcc -std=c99 -Wall -Wextra -Wconversion -pedantic file_name.c -o object_name -L/usr/lib/i386-linux-gnu -lcurl

编译工作得很好。这是为什么?


  • gcc (Ubuntu 4.8.4-2ubuntu1~14.04) 4.8.4
  • alias gcc_flags='-std=c99 -Wall -pedantic -Wextra -Wconversion'出现在我的别名列表中
  • Ubuntu版本 -Release: 14.04

顺便说一句,是不是到了默认gcc编译的时候了?-std=c99

command-line bash alias
  • 1 个回答
  • 1306 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何运行 .sh 脚本?

    • 16 个回答
  • Marko Smith

    如何安装 .tar.gz(或 .tar.bz2)文件?

    • 14 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Martin Hope
    Flimm 如何在没有 sudo 的情况下使用 docker? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve