Wednesday, January 22, 2025

Linux终端清除bash历史命令

 1. 清空当前屏幕内容

clear

2. 清除本次终端历史但下次启动仍留存

history -c

3 彻底清除

nano ~/.bash_profile或nano ~/.bashrc

export HISTSIZE=0

export HISTFILESIZE=0

或者

rm ~/.bash_history

树莓派(Raspberry Pi)中如何改变键盘布局

 berry Pi OS Lite第一次启动的过程中可以看到,它是不会让你选择语言和区域的,默认给你选择了英语和英国,键盘布局也默认给你设置成了UK(英国),而我们中国用的键盘是中国布局(与US(美国)布局是一样的)。

下面我们来看一下,英国键盘布局和中国(美国)键盘的布局的差异就可以看到为什么 会出现#变成£、 | 变成 ~、~变成¬的情况了,注意这三个键在英式键盘里是哪几个字符:-)

那么解决方案自然也很简单,就是把键盘布局从英式改成中国就可以了。

下面几个图,表述了如何通过raspi-config这个工具,修改键盘布局为正确的中国。

第一步,sudo raspi-config,回车

第二步,用上下键选择4 localisation options,按回车键确认

第三步,用上下键选择L3 Change Keyboard layout,按回车键确认

第四步,选择Generic 104-key PC,按回车键确认

第五步,选择other,按回车键确认

第六步,选择Chinese,按回车键确认

第七步,选择Chinese,按回车键确认

第八步,选择The default for the keyboard layout,按回车键确认

第九步,选择no compose key(没有组合键),按回车键确认

然后会回到第二步,用TAB键选择Finish按回车键确认退出,重启就可以快乐的输入~#| 啦

https://blog.csdn.net/meihualing/article/details/110819538

Linux系统通过设置locale来设置语言环境

基础知识

在Linux系统中,主要是通过设置locale来设置语言环境。

locale中有各种各样的参数,在这里为大家介绍几个常见的:

参数 意义

LANG 所有LC_*变量的默认值。即只要有LC_开头的变量参数值为空,那么将以LANG参数的值进行赋值,否则以原参数值为准。

LANGUAGE 设置应用程序的界面语言(例如程序的各种输出)

LC_CTYPE 控制所有字符的处理方式,包括字符编码、单字节or多字节等。

LC_ALL 若此参数非空,那么所有的LC_*变量都将被设置为此参数值(直接覆盖)。

locale的命名规则为<语言>_<地区>.<字符集编码>,如zh_CN.UTF-8,zh代表中文,CN代表大陆地区,UTF-8表示字符集。

基础命令

locale

会显示目前的locale配置

详细步骤

操作前必看

1.首先明确自己的需求

如果只需要解决文本编辑器内的中文乱码问题,而保持操作系统的语言(默认是英语)不变,则只需要修改LC_CTYPE参数即可

如果想直接把整个操作系统都设置成中文,也是只需要修改LC_ALL 参数即可

2.检查系统内是否有相应的字符集

查看当前系统中所有可用的locale

locale -a

重点查找有没有我们需要的那个。(中文常用的为 zh_CN.utf8)

如果我们想要的字符集缺失,按照下列步骤操作

首先安装语言环境库:

sudo apt install locales

然后打开语言环境列表:

sudo dpkg-reconfigure locales

我们会跳转到类似这个界面,选择我们想要的那个字符集就行。

选择好后就会自动生成了

方法一:临时修改

我们以只解决文本编辑器内的中文乱码问题为例,若要修改整个操作系统,将下面的LC_CTYPE改成LC_ALL即可。

修改LC_CTYPE参数为中文

export LC_CTYPE="zh_CN.utf-8"

更新配置

source /etc/bash.bashrc

注意:重启或打开一个新的终端后,将重新回到原始的locale配置。

方法二:永久修改

我们以只解决文本编辑器内的中文乱码问题为例,若要修改整个操作系统,将下面的LC_CTYPE改成LC_ALL即可。

此方法的核心原理是:将方法一中的export命令添加到~/.bashrc文件中。

补充知识点: ~/.bashrc 是一个配置文件,每次启动一个新的终端时, ~/.bashrc 会被自动执行

打开 ~/.bashrc 文件

nano ~/.bashrc

将下列命令添加到文件末尾

export LC_CTYPE="zh_CN.utf-8"

更新配置

source ~/.bashrc

https://blog.csdn.net/qq_73162098/article/details/145167511

Tuesday, January 21, 2025

树莓派控制台乱码怎么解决

 1. 设置系统编码UTF-8

sudo dpkg-reconfigure locales

用空格键选择zh_CN.UTF-8和en_US.UTF-8,接下来选择en_US.UTF-8作为系统默认编码。

2. 选择控制台字体

sudo dpkg-reconfigure console-setup

选择编码UTF-8

选择字符集Guess optimal character set(猜测最佳字符集),接着选择字体,Let the system select a suitable font,接下来选择字体大小,16X32(framebuffer only)

3. 乱码的处理

若在控制台操作过程中出现乱码,说明所选字体没有文本中相应的字符。需要安装或选择新的字体。

3.1 查看字体

ls /usr/share/fonts/truetype

3.2 利用fabterm选用字体

fbterm -s fontsize -n "font name"

特别的,对于IPA音标,28号LiberationMono-Regular可以较好的显示。

3.3 利用zhcon或kmscon来显示控制台

zhcon支持中文输入法

3.4 几个关于字体的命令:

安装某种字体

sudo install apt-get fontname

使得新安装字体生效

fc-cache -fv

查找默认字体

fc-match serif

fc-match sans-serif

fc-match monospace

显示字体列表

fc-list|grep noto


clash以systemd服务启动

1. 编写 systemd 服务脚本

1.1 在 /lib/systemd/system/ 目录下创建 clash@.service 文件

sudo vim /lib/systemd/system/clash@.service

1.2 写入以下内容(不用修改)并保存:

[Unit]

Description=A rule based proxy in Go for %i.

After=network.target

[Service]

Type=simple

User=%i

Restart=on-abort

ExecStart=/usr/bin/clash

[Install]

WantedBy=multi-user.target

2 为用户帐户运行 clash 系统实例

2.1 重新加载 systemd 模块

systemctl daemon-reload

2.2 启动 clash 服务

user 表示的是当前用户名

systemctl start clash@user

例如:

systemctl start clash@sitoi

2.3 设置开机自启

systemctl enable clash@user

2.4 问题

权限不足

修改 selinux 成被动模式

sudo vim /etc/sysconfig/selinux

SELINUX=permissive

GitHub - Sitoi/SystemdClash: Clash 以 systemd 服务的方式开机自启

https://github.com/Sitoi/SystemdClash

Saturday, January 18, 2025

Python报错:SyntaxError: (unicode error) 'utf-8' codec can't decode解决办法

 当python代码中包含两种以上编码方式时,会出现此错误,需要另存为带签名的UTF-8编码格式。

在windows上安装python

链接:https://zhuanlan.zhihu.com/p/675084094

下载

官网:python.org

安装(以3.9.6为例)

  • 安装第一步时:1,要勾选最下面 Add Python 3.9.6 to PATH,以便可以在命令行中自动找到Python解释器的位置。2,不要点Install Now,要点Customize installation,进行自定义安装。
  • 第二个页面Optional Feature选项中必须要勾选pip。pip是python包管理工具,安装第三方库都要依赖这个工具。
  • 第三个页面Advaced Option,必须要勾选Add Python to environment variables。下面默认的安装路径太深,要改到较浅的文件夹,一定不要有空格、特殊字符、中文,建议可以c:\python39.
  • 最后点击Install进行安装。
  • 安装完成后有一个选项Disable Max Path Limited,既禁用文件最大深度限制,一定要点这个地方。不然可能在使用第三方库时可能会出问题。

验证安装成功

在控制台输入 python --version,系统提示python 3.9.6,表示Python解释器安装成功。

在控制台输入 pip --version,系统提示pip 21.1.3。。。。。。,表示包管理器安装成功。

安装PyCharm

下载

管网: jetbrains.com

社区版Community对于我们一般数据挖掘上足够用了。

安装

  • 安装路径可以改短点,最好不要放中文或特殊字符。
  • 在InstallationOptions选项页面,勾选创建桌面快捷方式和在windows右键菜单中添加一个以项目方式打开文件夹(add"Open Folder as Porject")。
  • 后面进行安装用时稍长。

Typora使用

简介

  • MarkDown是一种纯文本可排版的格式,用特殊的标记符号进行内容排版。
  • Typora可以编辑、自动渲染Markdown文件。大部份博客网站都支持markdown。

常用标记

  • 分级标题用#加空格标记。
  • 无串行表用-号加空格
  • 用数字序号直接用1.加空格
  • 原始稿件和渲染之间用ctrl+/进行切换
  • 加图片:![](图片地址)
  • 加链接:[说明](地址)
  • 做表格: |1列|2列|3列|
  • 目录:[Toc]

Linux中python调用OpenAI实现国内openai代理api使用chatgpt

 一,安装Python环境

树莓派系统自带python,可以python --version确认是否安装。

二, 配置 OpenAI 环境变量

1. 在当前用户的根目录创建文件.env。

touch ~/.env

.env的文件内容位:

OPENAI_API_KEY="sk-xxx"

OPENAI_BASE_URL="https://api.fe8.cn/v1"

sk-xxx 使用自己的 key 替换,OPENAI_BASE_URL是访问 OpenAI 的国内代理跳板。

2. 安装项目依赖的包python-dotenv

pip install python-dotenv openai

三, 创建python源代码文件

# -*- coding: utf-8 -*-


# 通过环境变量调用OpenAI API密钥

import os

from openai import OpenAI

from dotenv import load_dotenv, find_dotenv

_ = load_dotenv(find_dotenv())

client = OpenAI()


# 定义初始对话历史

conversation_history = [

    {'role': 'system', 'content': 'You are a helpful assistant.'}

]


# 循环交互

while True:

    # 处理用户输入

    user_input = input("User: ")


    # 将用户输入添加到对话历史中

    conversation_history.append({'role': 'user', 'content': user_input})


    # 发送聊天请求

    response = client.chat.completions.create(

        model='gpt-4o-mini',

        messages=conversation_history,

        max_tokens=100,

        n=1,

        stop=None,

        temperature=0.7

    )


    # 获取助手的回复

    assistant_reply = response.choices[0].message.content


    # 打印助手的回复

    print("Assistant:", assistant_reply)


    # 将助手的回复添加到对话历史中

    conversation_history.append({'role': 'assistant', 'content': assistant_reply})


    # 检查用户是否选择退出循环

    if user_input.lower() == 'exit':

        break

四, 如果使用官方 OpenAI key (自己去OpenAI官方注册的key)

使用 OpenAI 的官方 key,需要畅通访问 OpenAI 的网络

需修改 .env 文件里的 OPENAI_API_KEY 为你自己的 key,并删除 OPENAI_BASE_URL

如果你需要通过代理访问 OpenAI,那么需要配置 OPENAI_BASE_URL 为你的代理地址。


pip(3) install解决 externally-managed-environment错误提示

 在 Manjaro 22、Ubuntu 23.04、Fedora 38 等最新的linux发行版中运行pip install时,通常会收到一个错误提示:error: externally-managed-environment,即“外部管理环境”错误,但这不是一个 bug。外部管理环境”错误背后的原因:Manjaro 22、Ubuntu 23.04、Fedora 38 以及其他的最新发行版中,正在使用 Python 包来实现此增强功能。这个更新是为了避免「操作系统包管理器 (如pacman、yum、apt) 和 pip 等特定于 Python 的包管理工具之间的冲突」。这些冲突包括 Python 级 API 不兼容和文件所有权冲突。

方案一、(粗暴) 去掉这个提示

强制删除此警告,回归到熟悉的操作。

将 “x” 替换为实际版本。

sudo mv /usr/lib/python3.x/EXTERNALLY-MANAGED /usr/lib/python3.x/EXTERNALLY-MANAGED.bk

和之前一样,现在您可以直接运行 pip(3) install package_name 命令来安装python模块。

方案二、(推荐) 使用pipx

您在上面看到的涉及手动工作。Pipx 使其自动化。

它会自动为您安装的每个应用程序创建一个新的虚拟环境。不仅。它还在 中创建指向它的链接.local/bin。这样,安装该软件包的用户就可以从命令行中的任何位置运行它。

我想这就是大多数桌面 Linux 用户想要的。

使用以下命令在 Ubuntu 上安装 pipx:

sudo apt install pipx

它可能会安装大量的依赖项:

现在将其添加到 PATH 中,以便您可以从任何地方运行。

pipx ensurepath

提示:

您必须关闭终端并重新登录才能发生更改。

现在我们可以使用 Pipx 而不是 Pip 安装 Python 包:

pipx install package_name

提示:

要删除使用 pipx 安装的软件包,请使用 pipx uninstall package_name 命令。

https://www.yaolong.net/article/pip-externally-managed-environment/

Friday, January 17, 2025

树莓派安装mihomo

 下载 clash

因为我的树莓派装的是官方最新的 64 位 raspberry os,所以这里选择mihomo-linux-arm64-alpha-0ab73a9.gz下载,如果是32位版本则下载mihomo-linux-armv7。因为自身系统的不同与项目 release 的不断更新,这里仅供参考。

安装 clash

将下载得到的压缩包,上传到树莓派文件系统中任意位置(反正后面会移动到指定位置)。

解压并重命名为 clash

gzip -d -f mihomo-linux-arm64-alpha-0ab73a9.gz

mv mihomo-linux-arm64-alpha-0ab73a9 mihomo

添加可以执行权限

chmod +x mihomo

查看是否安装成功

./mihomo -v

#出现以下类似信息则安装成功

#Mihomo Meta alpha-0ab73a9 linux arm64 with go1.21.5 Thu Dec 14 02:20:06 UTC 2023

添加 config.yaml 与 country.mmdb 文件

此时的 mihomo 是不能正常工作的,因为没有 config.yaml 配置文件

在您安装 clash 的目录下运行mihomo

输入 clash 会自动生成配置文件,在~/.config/mihomo 目录

cd ~/.config/mihomo && ls

将你windows系统上Clash.Nyanpasu右键图标里配置相关文件夹里的config.yaml、country.mmdb、geosite.dat、geoip.dat覆盖原有的文件。

配置 raspi-config

sudo raspi-config

找到 6 Advanced Options 回车进入

选择 A3 Network Proxy Settings 进入

选择 P1 All 填入 http://127.0.0.1:7890

Ok 确认 Finish 确认然后选择 reboot 重启设备

进入终端输入 clash 启动。

也可以在Linux命令行中设置代理,可以通过设置环境变量http_proxy和https_proxy来实现:

export http_proxy="http://127.0.0.1:7890"

export https_proxy="http://127.0.0.1:7890"

输入 echo $http_proxy 和 echo $https_proxy 命令,然后回车查看,以确保代理已经正确设置。

如果需要取消代理,可以使用以下命令:

unset http_proxy

unset https_proxy

https://blog.panda74.fun/blog/practice/raspi/clash

在Linux系统中,将文件变为可执行命令

 在Linux系统中,将文档变为可执行命令主要有两种方法:通过chmod命令修改文档权限和通过将文档添加至环境变量的路径中。

1. 通过chmod命令修改文档权限:

   首先,通过cd命令进入到文档所在的目录。

   然后,可以使用chmod命令修改文档的权限,使其具有可执行权限。命令格式为:chmod +x 文档名。例如:chmod +x file.sh。

   最后,通过./加上文档名执行该命令。例如:./file.sh。

2. 将文档添加至环境变量的路径中:

   首先,通过cd命令进入到文档所在的目录。

   然后,可以使用echo命令查看系统环境变量的值,确定可执行文档所需要添加的路径。例如:echo $PATH。

   接下来,可以使用export命令将文档所在的路径添加至环境变量中。命令格式为:export PATH=$PATH:文档路径。例如:export PATH=$PATH:/home/user/script。

   最后,可以直接在终端中输入文档名执行该命令,而不需要加上文档路径。例如:file.sh。

3. 为了避免每次都需要输入文档的路径才能执行命令,可以将可执行文档移动到系统的可执行目录下。

   首先,通过cd命令进入到文档所在的目录。

   然后,可以使用sudo命令以管理员身份执行命令,将文档移动到/usr/local/bin目录下。命令格式为:sudo mv 文档名 /usr/local/bin/。例如:sudo mv file.sh /usr/local/bin/。

   接下来,可以直接在终端中输入文档名执行该命令,而不需要加上文档路径。例如:file.sh。

4. 可以使用ln命令来创建符号链接,将可执行文档链接到系统的可执行目录下。

   首先,通过cd命令进入到文档所在的目录。

   然后,可以使用sudo命令以管理员身份执行命令,创建符号链接。命令格式为:sudo ln -s 文档路径 /usr/local/bin/。例如:sudo ln -s /home/user/script/file.sh /usr/local/bin/file.sh

   最后,可以直接在终端中输入文档名执行该命令,而不需要加上文档路径。例如:file。

5. 在编写文档时,可以在文档开头添加shebang行,指定解释器,使文档可以直接执行。

   首先,在文档的第一行添加shebang行,例如:#!/bin/bash

   然后,通过chmod命令修改文档权限,使其具有可执行权限。命令格式为:chmod +x 文档名。例如:sudo chmod +x file.sh

   最后,通过./加上文档名执行该命令。例如:./file.sh。

以上是将文档变为可执行命令的几种方法,在Linux系统中可以灵活地使用这些方法根据具体情况来处理和执行文档。

https://worktile.com/kb/ask/474285.html

Thursday, January 16, 2025

Linux批处理命令的操作流程

 1. 创建脚本文件

首先,需要创建一个脚本文件,用于编写批处理命令。可以使用文本编辑器(如vi或nano)创建一个新的文本文件,并将其保存为.sh扩展名(表示为脚本文件)。

例如,可以使用以下命令创建一个名为script.sh的脚本文件:

nano script.sh

在脚本文件中,可以编写需要执行的一系列命令。每个命令占用一行,并以换行符(\n)分隔。

例如,下面是一个简单的脚本文件示例,用于打印当前时间和日期:

#!/bin/bash

echo “当前时间是:”

date

2. 编写批处理命令

在脚本文件中,可以按照需要编写需要执行的一系列命令。

例如,假设需要在执行脚本命令时打印当前登录用户的用户名,可以添加以下命令:

#!/bin/bash

echo “当前登录的用户是:”

whoami

echo “当前时间是:”

date

3. 保存脚本文件

完成批处理命令的编写后,需要保存脚本文件。

在nano编辑器中,可以使用Ctrl + O保存文件,并使用Ctrl + X退出编辑器。

4. 执行批处理命令

完成脚本文件的保存后,可以使用sh命令或直接执行脚本文件来执行批处理命令。

例如,假设脚本文件名为script.sh,可以使用以下命令执行该脚本文件:

sh script.sh

或者,如果已经将脚本文件设置为可执行,可以直接执行脚本文件:

./script.sh

执行批处理命令后,将按照脚本文件中命令的顺序执行各个命令,并在终端中显示执行结果。

三、批处理命令的实际应用场景

批处理命令在实际的Linux系统管理和任务处理中有着广泛的应用,以下是一些常见的应用场景:

1. 批量处理文件

通过批处理命令可以对目录下的文件进行批量处理,如批量重命名、批量复制、批量删除等。

2. 自动化任务

批处理命令可以将一系列重复的操作自动化,提高工作效率。例如,可以编写一个批处理脚本用于自动备份数据库、清理日志文件等。

3. 系统管理

批处理命令可以用于系统的监控和管理。例如,可以编写一个批处理脚本用于定期检查服务器的状态、清理空间、管理用户账号等。

4. 软件部署和配置

批处理命令可以用于自动化软件的部署和配置。例如,在新服务器上安装软件时,可以编写一个批处理脚本,自动进行安装和配置工作。

https://worktile.com/kb/ask/329106.html#:~:text=batch%E5%91%BD%E4%BB%A4%E6%98%AFLinux%E7%B3%BB%E7%BB%9F,%E6%89%B9%E9%87%8F%E6%89%A7%E8%A1%8C%E5%91%BD%E4%BB%A4%E7%9A%84%E6%A8%A1%E5%BC%8F%E3%80%82

Use USB Microphone with Raspberry PI OS Lite

 Step-By-Step Procedure

Prepare the Operating System

We’ll start with a fresh operating system installation. So, start installing Raspberry PI OS Lite. You can also use this with Raspberry PI OS desktop, working from its internal terminal console.

Make the OS up to date. From the terminal:

sudo apt update -y && sudo apt upgrade -y

Identify the USB Microphone Hardware

We’ll use the Linux “lsusb” utility to check if the USB microphone is detected by our Raspberry PI. The “lsusb” is a utility for displaying information about USB buses in the system and the devices connected to them (ref. https://linux.die.net/man/8/lsusb).

Let’s check its output BEFORE plugging the USB microphone. From the terminal, you will have a result similar to the following:

pi@raspberrypi:~ $ lsusb

Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub

Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub

Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

This result may change depending on the Raspberry PI computer board version and model you’re using (this output is from my Raspberry PI 5 Model B) and these entries are the USB ports.

Please plug in now the USB Microphone. Check again the USB list:

pi@raspberrypi:~ $ lsusb

Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub

Bus 003 Device 002: ID 8086:0808 Intel Corp. USB PnP Sound Device

Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub

Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

In the previous output, I’ve highlighted the new line that appeared after plugging the USB microphone. This new line means that the external device has been detected from the OS and that Bus 003 Device 002 is my USB microphone.

Test the USB Microphone on Raspberry PI with Arecord

Arecord is a command-line sound recorder, already installed in our Raspberry PI OS Lite.

Let’s check the list of audio input devices and the card ID detected from it with the following terminal command:

pi@raspberrypi:~ $ arecord -l

**** List of CAPTURE Hardware Devices ****

card 2: Device [USB PnP Sound Device], device 0: USB Audio [USB Audio]

  Subdevices: 1/1

  Subdevice #0: subdevice #0

As highlighted in the previous output, my microphone matches the card 2 – device 0 sound device. In the next tests, this card identification will be mapped in the following arecord option: “plughw:2,0“.

Now, we can test a simple recording by typing:

arecord -D plughw:2,0 -d 3 test.wav

This command will perform a voice recording:

using the card 2 – device 0 input equipment (the “-D plughw:2,0” option)

with a duration of 3 seconds (the “-d 3” option)

saving the recording to a file named “test.wav”

The following output will appear:

pi@raspberrypi:~ $ arecord -D plughw:2,0 -d 3 test.wav

Warning: Some sources (like microphones) may produce inaudible results

         with 8-bit sampling. Use '-f' argument to increase resolution

         e.g. '-f S16_LE'.

Recording WAVE 'test.wav' : Unsigned 8 bit, Rate 8000 Hz, Mono

Now you can simply check the recorded file by connecting and downloading it with your favourite SFTP software (for example Filezilla) to your Raspberry PI, by setting an SFTP connection (using your RPI user and password).

https://peppe8o.com/use-usb-microphone-with-raspberry-pi-os-lite/

Wednesday, January 15, 2025

Raspbian lite常用命令

 重启 sudo reboot

关机 sudo shutdown -h now

以kiosk模式打开浏览器:xinit /usr/bin/chromium --kiosk

更新软件列表信息: sudo apt-get update

更新软件:sudo apt-get upgrade

如果在chromium浏览器中出现麦克风没有权限,则执行如下命令:

sudo apt-get install pulseaudio pavucontrol

pulseaudio --exit-idle-time=-1 --daemonize