VSCode环境中引用出错问题排查
除了排查自身代码问题 && 修改配置文件外,还可以使用命令行重新编译PDF文件,具体流程如下
切换到xxx.tex文件所在目录下
1
2
3
4xelatex xxx
bibtex xxx
xelatex xxx
xelatex xxx执行以上语句后PDF引用恢复正常
凡事预则立,不预则废
有时候Linux系统重启或者有修改后会造成时区被修改,默认一般是UTC时间,有时候会变成CST时间
在阿里云主机扩展后出现过一次,造成了Logstash 使用JDBC连接数据库时读取报错:大概是JavaLang::IllegalArgumentException: HOUR_OF_DAY: 2 -> 3这样的错
1 | # 修改时区命令: |
重启后继续运行之前出错的程序,成功解决问题
在连接mysql-connector时加上一个时区参数
以logstash为例子
在mysql.config中修改连接语句原来为(连接到名称为”docker“的数据库,但是没有指定参数)
1 | jdbc:mysql://localhost:3306/docker |
修改后连接语句为(制定参数为UTC)
1 | jdbc:mysql://localhost:3306/docker?serverTimezone=UTC |
注意,这种方式修改后我的系统时区可为任意的,比如我的系统时区就一直为CST
别名创建命令
1 | alias 别名="原命令" |
常用别名举例:
1 | # 创建 ll 别名,替代 ls -l |
创建别名后,直接使用别名即可实现与原命令同等效果
1 | # 输入 ll,相当于执行 ls -l |
1 | # 查看所有别名 |
以上命令创建的别名是临时的,重新启动终端后会消失,为了长久保留别名,可通过修改配置文件实现
编辑配置文件 :
1 | # 用 vim 打开配置文件(适用于 bash 终端) |
添加别名定义(在文件末尾添加类似以下内容:):
1 | # 常用文件列表别名 |
1 | # 安全删除(删除前询问确认) |
单引号 ':不解析变量,适合直接替换命令
双引号 ":会解析变量,适合需要动态内容的别名(不常用)
别名优先级高于原始命令,若要执行原始命令,可使用 \[原命令名](比如 \ls)
1 | \命令名 # 例如:\ls |
不要使用系统已有命令作为别名,否则会覆盖原命令
Linux Shell 脚本中,exec 命令用于在当前 shell 进程中执行指定的命令,而不是启动一个新的子进程
exec 常常用来替换当前 shell 进程,或者重定向文件描述符
exec 基本语法如下:
1 | exec 命令 [参数...] |
假如在脚本中写:
1 | #!/bin/bash |
exec 也常用于重定向输入输出,不会启动新进程,而是改变当前 shell 的文件描述符。例如:
将标准输出重定向到文件:
1 | exec > output.txt |
将标准输入重定向为某个文件:
1 | exec < input.txt |
关闭文件描述符:
1 | # 打开一个文件用于读取,赋予文件描述符3 |
本文介绍Linux下find命令的使用方法
find命令用于在给定目录下查找符合给定条件的文件
用法:
1 | Usage: find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [path...] [expression] |
常用的用法:
1 | find path -option [ -print ] [ -exec -ok command ] {} \; |
实例1:
1 | find . -name "*a*.py" -exec cat {} \; | grep test |
*a*.py的文件找出来,并输出其中含有”test”的行.对应path参数,代表搜索路径为当前文件夹, 默认会递归搜索-name "*a*.py"对应选项,指出找文件的筛选条件-exec cat {} \; | grep test指明找到文件后需要执行的操作,{}用于表示前面被固定下来的接受参数, 由于{}后面必须使用分号;,而命令行中分号需要转义字符转义,所以就是\;{} \;中间必须空一格,且{} \;中间不能加任何字符或命令等示例2:
1 | find . -maxdepth 1 -name "test*.py" -exec cat {} \;| grep test |
1 | find path -option [ -print ] [ -exec -ok command ] {} \; |
-print: find命令将匹配的文件输出到标准输出-exec: find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为’command’ { } ;,注意{ }和;之间的空格-ok: 和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行-name: 按照文件名查找文件-perm: 按照文件权限来查找文件-prune: 使用这一选项可以使find命令不在当前指定的目录中查找,如果同时使用-depth选项,那么-prune将被find命令忽略-user: 按照文件属主来查找文件-group: 按照文件所属的组来查找文件-mtime -n +n: 按照文件的更改时间来查找文件, - n表示文件更改时间距现在n天以内,+ n表示文件更改时间距现在n天以前。find命令还有-atime和-ctime 选项,但它们都和-m time选项-nogroup: 查找无有效所属组的文件,即该文件所属的组在/etc/groups中不存在-nouser: 查找无有效属主的文件,即该文件的属主在/etc/passwd中不存在-newer file1 ! file2: 查找更改时间比文件file1新但比文件file2旧的文件-type: 查找某一类型的文件| 参数 | 文件类型 |
|---|---|
| d | 目录 |
| c | 字符设备文件 |
| p | 管道文件 |
| f | 普通文件 |
| l | 符号链接文件 |
| b | 块设备文件 |
文本适用于anaconda,miniforge等包含conda的所有软件
./envs目录下,按照虚拟环境名称命名piplib/python3.10/site-packagepip show [package_name]判断which python的结果一致,如果有问题可以修改到指定目录(特别是手动迁移conda管理的虚拟环境时)envs文件下下的指定环境目录即可,迁移后记得修改pip/pip3文件对应的第一行路径Anaconda安装和使用
检查conda版本
1 | conda --version |
升级版本
1 | conda update conda |
创建环境
1 | conda create --name your_env_name python=3.6 |
激活环境
1 | source activate your_env_name # On Windows, remove the word 'source' |
列出所有环境
1 | conda info --envs |
退出当前环境
1 | source deactivate # On Windows, remove the word 'source' |
复制一个环境
1 | conda create -n new_env_name --clone old_env_name |
删除环境
1 | conda remove -n your_env_name |
查看已经安装的包
1 | conda list |
向指定环境中安装包
1 | conda install --name your_env_name package |
--name参数,package默认安装到当前环境中--name参数安装conda和pip对包的管理有什么区别?
| 管理工具 | conda | pip |
|---|---|---|
| 使用环境 | conda环境 | 任意平台 |
| 包语言 | 任意语言 | Python语言 |
conda
安装包
1 | # 从虚拟环境 your_env_name 中安装 packge_name包 |
删除包
1 | # 在虚拟环境 your_env_name 中删除 package_name包 |
pip
安装包
1 | # 安装包到默认路径 |
卸载包
1 | # 删除包 |
查看已经安装的包
1 | # 列出所有包 |
升级包
1 | pip install --upgrade package_name |
关于conda 命令更多详情参考Anaconda——安装和常用命令