V2EX POST
648 subscribers
138 photos
31 videos
99 files
104K links
v2ex新贴定时推送,可按需置顶本频道然后关闭通知
Download Telegram
求教一个查找空文件夹的 bash 脚本

最近在搜集 NGA 上的帖子(关于女拳等等)操作就是 mkdir 和帖子一样名字的文件夹,然后把帖子整个生成一个 png 截图然后保存到文件夹里面,但是问题是有的时候我手滑操作错了,漏了一些文件夹没有把图片放进去。

现在我写了一个 bash 的脚本,目的是让它输出当前目录下所有文件夹里面有没有空的,但是写出来的代码根本探测不到空文件夹,求各位对 bash 脚本熟悉的老哥捉虫,我想知道我错在哪里了

for dir in */; do
if [ -z "ls -A ./$(dir)/*" ]; then
echo "Empty"
else
echo "Not Empty"
fi
done

#文件夹 #帖子 #bash #dir #echo #Empty #脚本 #捉虫 #NGA #女拳
一个 Linux 问题请教

最近再做 LFS 编译,发现一个问题,好多编译命令中有建立软链接到不存在的位置,例如下:
```bash
ln -s ../../../libgcc/gthr-posix.h $LFS_TGT/libgcc/gthr-default.h
```
谷歌了一圈,只查到是“断链”现象,类似失效的 windows 快捷方式,小弟不能明白的是,这么做的意义是什么,为社么要做断链呢?哪些场景会用到呢?

#.. #LFS #libgcc #gthr #编译 #快捷方式 #bash #ln #posix #TGT
当我更换 mac m2 芯片 无法使用使用 mysql2 报错 symbol not found in flat namespace (_mysql_affected_rows)

Rails 版本 `7.0.3`

MySQL 版本 `5.7.29`

Ruby 版本 `3.1.1`

Rvm 版本 `1.29.12`

mysql2 版本 `~> 0.5`

我的项目正在尝试迁移 m2 芯片,当我尝试运行`rails s`时 出现了以下错误
```bash
`require': dlopen(/Users/list/.rvm/rubies/ruby-3.1.1/lib/ruby/gems/3.1.0/gems/mysql2-0.5.4/lib/mysql2/mysql2.bundle, 0x0009): symbol not found in flat namespace (_mysql_affected_rows)
```



我尝试过以下解决方案,都不能解决
```bash
bundle config build.mysql2 "--with-ldflags=-L/usr/local/mysql/lib --with-cppflags=-I/usr/local/mysql/include"
```

```bash
gem install mysql2 -v '0.5' -- --with-mysql-config=/usr/local/mysql/bin/mysql_config --with-ldflags="-L/usr/local/mysql/lib -L$(brew --prefix openssl)/lib" --with-cppflags=-I$(brew --prefix openssl)/include
```

请问如何解决这个问题?

#-- #mysql #mysql2 #lib #usr #local #版本 #3.1 #0.5 #bash
Git Bash 窗口粘贴内容包含换行时不会自动回车

向 Git Bash 窗口粘贴文本时,如果内容包含换行,请问如何设置自动回车?就像 SSH 窗口中粘贴内容那样。

#粘贴 #窗口 #Git #Bash #SSH #回车 #换行 #内容 #文本 #请问
心累, ssh 自定义文件名之后到底应该做什么

实在是搜不到了,

按照 github 上的生成 ssh 文件搞了一遍,ssh -T 当时能通,关了 bash 再开就不通了。

其他什么 ssh-add 之类的,修改 config 文件啥的,基本没成过。

到底我把 ssh 文件重命名之后应该做什么才能确保能连接呢。

#ssh #文件 #github #能通 #bash #再开 #add #config #没成 #重命名
Linux bash 脚本中使用 test 命令大全

Linux test 命令是 Shell 内置命令,用来检测某个条件是否成立。test 通常和 if 语句一起使用,并且大部分 if 语句都依赖 test 。可以将一个元素与另一个元素进行比较,但它更常用于 BASH shell 脚本中,作为控制逻辑和程序流程的条件语句的一部分。

test 命令有很多选项,可以进行数值、字符串和文件三个方面的检测。


更多内容 => [Linux bash 脚本中使用 test 命令大全]( https://www.yuanmadesign.com/ymdesign/ffff6cb601)

#test #语句 #命令 #Linux #脚本 #检测 #元素 #Shell #BASH #shell
单独使用 [sudo -s] 后面没有其他命令,会得到一个交互的 root 的 shell。请教下,-s 参数,是否会加载环境变量定义文件?

-i 参数(即 sudo -i ),在 sudo 的 man page 里指明了,会加载 [.profile,.bash_profile or .login will be read by the shell.] , 同时呢,会跳到 /root 家目录。

那使用 sudo -s 的时候,我是知道,不会跳转 /root 家目录,会留在当前目录。 我想问下, -s 参数 [ sudo -s ] 是否也会加载 [.profile,.bash_profile ] 这类环境变量定义文件呢? 在 man page 里没有说明,

请教从哪里可以验证呢? 要去看源码吗?

#sudo #profile #man #page #bash #root #加载 #目录 #参数 #跳转
Windows11 更改默认 SSH 客户端为“Bash”出现“系统无法访问此文件。”错误

有一台 windows11 的机器,安装了 WSL2 ,我想在其他机器通过 SSH 进行访问。目前的情况是可以通过 SSH 登录上,但是打开的终端是“CMD”。

根据一些教程,我通过修改注册表的方式将 SSH 的默认终端修改为了“Bash”,但是这样就会出现“系统无法访问此文件。”的报错。我还尝试了将注册表的终端值修改为“WSL”,即“C:\WINDOWS\System32\wsl.exe”,也会出现同样错误。但是很奇怪,我将默认终端设置为“Powershell”就没有任何问题,即"C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe"。

然后我又尝试了另一种方案,即先通过 SSH 登陆到 windows 的“CMD”终端,然后再在这里输入“Bash”命令或"wsl",均出现同样的错误,但是如果我在 windows11 本地打开“CMD”终端,“Bash”和“wsl”命令均可以正常使用。

用于连接的客户端是 macos 下的 iterm2 ,不过这个应该没有影响吧

我推测是不是远程连接的时候不允许访问“C:\WINDOWS\System32\”下的文件?但是“Powershell”同样在 System32 目录下,却可以正常访问,不太理解这个机制,有没有什么解决方案能够正常通过 SSH 打开“bash”或者“wsl”呢?

#SSH #System32 #wsl #终端 #CMD #Bash #注册表 #windows11 #WINDOWS #exe
批量增大视频音量脚本

```bash

find . -name '*.mp4' -exec sh -c 'ffmpeg -i "$0" -vcodec copy -af "volume=30dB" "${0%%}.mp4"' {} \;

```

#mp4 #bash #find #name #exec #sh #ffmpeg #vcodec #copy #af
求解 bash zsh fish 的区别以及会有的影响

我目前在用 arch+gnome ,装了 fish 来当默认的 shell 。

看到一些文章和教程都说推荐用 bash 。但是命令好像都是互通的(和 fish ,都是可执行文件,用什么 shell 调用都一样?)。实在说能感受到的不同是我有个想启动就设值的环境变量,发现 bash 和 fish 语法不同。

而且 bash 也没有带有高亮和命令补全,都是刚需

#fish #bash #shell #补全 #命令 #arch #gnome #设值 #可执行文件 #高亮
lobash 发布 v0.5.0 版本

https://github.com/adoyle-h/lobash

一个专用于 Bash 编程的库。之前有在 V2EX 发过[介绍]( https://www.v2ex.com/t/579173)。

隔了好多年终于发布了新版本...之前有在用过的朋友可以看下 [changelog]( https://github.com/adoyle-h/lobash/blob/master/CHANGELOG.md)。

#https #com #github #adoyle #lobash #Bash #V2EX #www #v2ex #579173
支持 FIDO2 的 windows SSH 客户端

想要使用 ed25519-sk 配合 yubikey 使用,可以在 git bash 中 ssh 连接服务器,但是 xshell 之类的都不支持这个格式,目前只找到 termius 支持,但是这个功能需要付费,实在是太贵了。请问各位有没有支持这个格式的客户端推荐?
还有一种方法是用 gpg 作为 ssh 的验证,但是在 git bash 和 powershell 都设置成功了,idea 却无法使用。如果能解决 idea 的问题就帮大忙了!

#git #bash #ssh #idea #格式 #支持 #使用 #但是 #ed25519 #sk
求助, Git 误操作点到撤销所有更改,能否恢复!

刚接触 Git ,命令不怎么熟悉,当时是在桌面 Git Bash 的,然后再 VS 里面写了些改动。所有改动都没有进行 commit 操作,然后误操作点到了撤销所有更改。桌面文件丢失 70%。目前桌面能看到隐藏文件夹.git ,请问还有救吗?
文件夹截图👉https://3o.hk/image/0Jpoz

#桌面 #Git #文件夹 #改动 #Bash #VS #commit #70% #git #https
Linux 中为什么有些程序正常运行可以在标准输出中打印,用了重定向>或者管道|后,重定向文件及管道中无任何输入?

如题。
有些程序直接运行 COMMAND ,就能在屏幕中打 log 。
但是如果在后面加上> 或者 | xargs 后,文件或管道中不能收到任何数据。
想请教一下各位 Bash 玩的比较六的大佬们,到底什么问题?

#COMMAND #log #xargs #Bash #大佬 #屏幕 #请教 #各位 #管道 #收到
写了个 v 站抽奖小工具

特点:

- 爬取回帖用户,并对回帖用户进行了去重,去除了楼主的回帖
- 使用了 xmr 实时区块高度作为随机数种子,保证了每次抽奖的公平性

示例:

```bash
$ python3 main.py
请输入帖子 ID: 666666
请输入抽奖人数: 5
符合条件的用户共有 33 人
当前时间: 2022-12-16 09:13:49
当前区块高度: 2778411
抽奖结果:
leesheen
duskpark
Gladoos
EdwardYoung
maemual
```

仓库链接 https://github.com/wcwac/v2ex-lottery

#回帖 #抽奖 #区块 #用户 #输入 #示例 #高度 #爬取 #xmr #bash
搭建了一个简洁的业余人工智能论坛。

奈何一直找不到一个相关论坛讨论交流。就自己部署了一个。自己对人工智能也挺感兴趣的,就边学边分享一些心得。

```bash
echo "aHR0cHM6Ly93d3cueHhjaXJjbGUuY29tLwo=" | base64 -d
```

#边学边 #bash #echo #aHR0cHM6Ly93d3cueHhjaXJjbGUuY29tLwo #base64 #人工智能 #心得 #感兴趣 #奈何 #分享
zsh autocomplete suggestion 问题

我的项目里有个 docs 命令,根目录也有 docs 文件夹
```js
"scripts": {
"docs": "pnpm -C docs dev"
},
```
当我在命令输入
```bash
pnpm docs
```
按下回车,zsh 就会补全为
```bash
pnpm docs/
```
![CleanShot 2022-12-30 at 11.04.29@2x]( https://tvax4.sinaimg.cn/large/7eb90a9cly1h9lnpicm49j209601at8t.jpg)

尝试把`zsh-autosuggestions`插件关掉也没用,不改 scripts 命令能解决这个问题吗

#docs #pnpm #scripts #bash #zsh #命令 #根目录 #补全 #插件 #js
如何通过代码实现把代码保存成 py 文件

### 场景

通过代码生成 Airflow 的 DAG 文件。

### 具体行为

通过代码生成 python 脚本文件放到指定文件夹。脚本文件内部的代码整体上是差不多的,部分细节可能会差别比较大。

### 我想到的做法

```python
dag_id = "test_one",
task_id = "bash_task_one",
echo_content = "hello"
func_name = "func_one"
func_content = """
print("world")
"""
content = f'''
from datetime import datetime
from airflow import DAG
from airflow.decorators import task
from airflow.operators.bash import BashOperator

with DAG(dag_id="{dag_id}",
start_date=datetime(2022, 1, 1),
schedule="0 0 * * *") as dag:
hello = BashOperator(task_id="{task_id}", bash_command="echo {echo_content}")


@task()
def {func_name}():
{func_content}

hello >> {func_name}()

'''
with open('/root/dags/test.py', 'w', encoding='utf-8') as fb:
fb.write(content)

```

把代码放到多行字符串里,然后写到文件中。

### 想到的问题

* 需要提前把 function 的代码都抽象出来写好,而且不知道缩进会不会有影响

### 求助

不知道各位大佬们有没有什么好的建议

#id #task #content #func #### #dag #import #DAG #bash #echo