求教一个查找空文件夹的 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 #女拳
最近在搜集 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 #女拳
当我更换 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
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
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
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 #加载 #目录 #参数 #跳转
-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
有一台 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
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
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
写了个 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
特点:
- 爬取回帖用户,并对回帖用户进行了去重,去除了楼主的回帖
- 使用了 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
zsh autocomplete suggestion 问题
我的项目里有个 docs 命令,根目录也有 docs 文件夹
```js
"scripts": {
"docs": "pnpm -C docs dev"
},
```
当我在命令输入
```bash
pnpm docs
```
按下回车,zsh 就会补全为
```bash
pnpm docs/
```

尝试把`zsh-autosuggestions`插件关掉也没用,不改 scripts 命令能解决这个问题吗
#docs #pnpm #scripts #bash #zsh #命令 #根目录 #补全 #插件 #js
我的项目里有个 docs 命令,根目录也有 docs 文件夹
```js
"scripts": {
"docs": "pnpm -C docs dev"
},
```
当我在命令输入
```bash
pnpm docs
```
按下回车,zsh 就会补全为
```bash
pnpm docs/
```

尝试把`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
### 场景
通过代码生成 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