Ronan Blog

罗华东的博客 | 向前每多走一步,热爱和勇气就会多一分。

shell 编程

2024-09-02 6 min read Linux Ronan

一、运算符

1、算术运算符

下表列出了常用的算术运算符,假定变量 a 为 10,变量 b 为 20:

运算符说明举例
+加法expr $a + $b 结果为 30。
-减法expr $a - $b 结果为 -10。
*乘法expr $a \* $b 结果为 200。
/除法expr $b / $a 结果为 2。
%取余expr $b % $a 结果为 0。
=赋值a=$b 把变量 b 的值赋给 a。
==相等。用于比较两个数字,相同则返回 true。[ $a ==$b ] 返回 false。
!=不相等。用于比较两个数字,不相同则返回 true。[ $a !=$b ] 返回 true。

注意: 条件表达式要放在方括号之间,并且要有空格,例如: [$a==$b] 是错误的,必须写成 [ $a ==$b ]

Continue reading

SSH 免密登录

2024-09-02 1 min read Linux Ronan

1创建密钥

在本地主机终端输入

ssh-keygen

之后一路回车,不出意外的话,你将看到以下内容

img

恭喜,你已经完成第一步!


2检查密钥是否创建成功

在终端输入

ls .ssh

看到以下内容

img

看到其中有id_ed25519(私钥))其中的ed25519在不同设备可能会有不同,有的可能是id_rsaid_ed25519.pub(公钥)两个文件,恭喜,你已经完成第二步了,离成功更近了!


3将公钥复制到远程主机

在终端键入

ssh-copy-id -i <~/.ssh/id_ed25519.pub> <username>@<remote_ip>

其中的<~/.ssh/id_ed25519.pub> 是公钥所处的路径,<username>是用户名,<remote_ip>是主机名或IP 地址。

这条命令会将公钥保存到远程主机的 ~/.ssh/authorized_keys 文件中。

恭喜你,现在可以不再每次登录都需要输入密码了!!!


4问题排查

有时候因为之前的服务器重装了系统,但是在本地主机仍然保存着之前的私钥,所以在重新登录远程服务器时会遇到以下问题

❯ ssh root@<your_remote_ip>

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the ED25519 key sent by the remote host is
SHA256:voGkOAiSibnvAWCsXNasOzsmdMnc2ff7MHE2jsZRfSE.
Please contact your system administrator.
Add correct host key in /Users/iaa/.ssh/known_hosts to get rid of this message.
Offending ED25519 key in /Users/iaa/.ssh/known_hosts:28
Host key for aby.ronan.cloudns.ch has changed and you have requested strict checking.
Host key verification failed.

4.1解决方法

运行以下命令来删除旧的主机密钥

Continue reading

GCC

2024-09-02 4 min read Linux Ronan

GCC 是 Linux 下的编译工具集,是 GNU Compiler Collection 的缩写,包含 gcc、g++ 等编译器。这个工具集不仅包含编译器,还包含其他工具集,例如 ar、nm 等。

GCC 工具集不仅能编译 C/C++语言,其他例如 Objective-C、Pascal、Fortran、Java、Ada 等语言均能进行编译。GCC 在可以根据不同的硬件平台进行编译,即能进行交叉编译,在 A 平台上编译 B 平台的程序,支持常见的 X86、ARM、PowerPC、mips 等,以及 Linux、Windows 等软件平台。

1. 安装 GCC

有些纯净版的Linux默认没有gcc编译器, 需要自己安装, 在线安装步骤如下:

# 安装软件必须要有管理员权限
# ubuntu
sudo apt update   		# 更新本地的软件下载列表, 得到最新的下载地址
sudo apt install gcc g++	# 通过下载列表中提供的地址下载安装包, 并安装

# centos
sudo yum update   		# 更新本地的软件下载列表, 得到最新的下载地址
sudo yum install gcc g++	# 通过下载列表中提供的地址下载安装包, 并安装

gcc安装完成后,可查看版本:

# 查看 gcc 版本
gcc -v
gcc --version

# 查看 g++ 版本
g++ -v
g++ --version

2.GCC工作流程

GCC 编译器对程序的编译下图所示,分为 4 个阶段:预处理(预编译)编译优化汇编和链接。GCC 的编译器可以将这 4 个步骤合并成一个。 先介绍一个每个步骤都分别做了写什么事:

Continue reading
Older posts Newer posts