1、新系统在输入命令时,不会自动提示,按上箭头(↑)和下向下箭头(↓)不会匹配之前的输入
以CentOS 为例,可以通过配置 ~/.bashrc
文件来实现按向上箭头显示最相近的命令。以下是具体的实现步骤
vi ~/.bashrc
# 在文件末尾添加一下内容
# 命令历史设置
bind '"\e[A": history-search-backward'
bind '"\e[B": history-search-forward'
# 刷新
source ~/.bashrc
如果是Ubuntu系统,稍微复杂一丢丢
首先vi ~/.bashrc
放开以下行的注释,没有的话就新加进去
if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
. /etc/bash_completion
fi
刷新source ~/.bashrc
之后检查是否安装了 bash-completion 包:使用以下命令检查是否已安装该包
apt list --installed | grep bash-completion
如果未安装,可以使用以下命令进行安装:
apt install bash-completion
打开readline配置文件vi ~/.inputrc
加入以下内容
"\e[A": history-search-backward
"\e[B": history-search-forward
重新启动终端:重启终端后,尝试使用上下键查看是否能够自动补全历史命令
2、centos6.10 更新yum镜像源
备份原来的源
mkdir /root/opt
mv /etc/yum.repos.d/* /root/opt/
创建新的源
vi /etc/yum.repos.d/CentOS-Base.repo
把以下内容复制到新的源文件中
[base]
name=CentOS-$releasever - Base
baseurl=http://mirrors.aliyun.com/centos-vault/6.10/os/$basearch/
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
gpgcheck=1
enabled=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-6
#released updates
[updates]
name=CentOS-$releasever - Updates
baseurl=http://mirrors.aliyun.com/centos-vault/6.10/updates/$basearch/
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates
gpgcheck=1
enabled=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-6
清除原来的源
yum clean all
编译新的源
yum makecache
成功
3、升级git
一般情况下直接用yum install git 就可以了,但是yum装的版本还是低的话,那就只能自己装了
# 下载
wget https://github.com/git/git/archive/v2.3.0.zip --no-check-certificate
# 解压
unzip v2.3.0.zip
cd git-2.3.0
make prefix=/usr/local/git all
make prefix=/usr/local/git install
# 修改环境变量
vi ~/.bashrc
export PATH=/usr/local/git/bin:$PATH
source ~/.bashrc
4、Linux给普通用户赋予root权限
比如用户名叫xiaoming
4.1 修改 /etc/sudoers
# 把xiaoming加到root组
usermod -g root xiaoming
# 修改 /etc/sudoers 文件,找到下面一行,把前面的注释(#)去掉
## Allows people in group wheel to run all commands
%wheel ALL=(ALL) ALL
4.2 修改 /etc/sudoers 文件,找到下面一行,在root下面添加一行,如下所示
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
xiaoming ALL=(ALL) ALL
这两种方式相当于是给了xiaoming root组的权限,xiaoming需要使用 su - 才能执行root权限相关的操作
4.3 修改 /etc/passwd 文件,找到如下行,把用户ID修改为 0
# 找到如下行
xiaoming:x:500:500:xiaoming:/home/xiaoming:/bin/bash
# 修改后如下
xiaoming:x:0:500:xiaoming:/home/xiaoming:/bin/bash
xiaoming登录后,直接获取的就是root帐号的权限,都不用加su,当然这种风险也最大,不推荐
如果xiaoming仅仅对某个文件夹有权限要求,那可以修改对应的文件夹即可,比如
使用以下命令将文件和文件夹的所有者和所属组更改为xiaoming。将/path/to/files
替换为你要赋予权限的文件或文件夹的路径。选项-R
用于递归地将所有文件和子文件夹的所有者和所属组都设置为xiaoming
chown -R xiaoming:xiaoming /path/to/files
5、Ubuntu22.04 git clone 使用ssh失败问题
虽然配置了SSH公钥,但是下载代码的时候还是提示
这是由于在openssh(8.x版本)由于安全原因,替换了默认的加密算法rsa,改为SHA-1。可以通过配置文件修改默认的加密算法,继续使用rsa算法。
修改本地的配置文件(~/.ssh/config)
vi ~/.ssh/config
# 加入以下内容,如果使用的是多用户情况,那么每个用户都需要添加
Host 你想配置的域名或者ip
HostName 域名的hostname,可以和host一样
HostKeyAlgorithms +ssh-rsa
PubkeyAcceptedKeyTypes +ssh-rsa
IdentityFile ~/.ssh/id_rsa
之后就可以愉快地下载代码了
6、ubuntu22.04修改apt源为国内镜像
国外的源下载个软件太费劲了,还是配置个国内的源吧,首选阿里云
第一步,先备份原文件,防止需要恢复
cp /etc/apt/sources.list /etc/apt/sources.list.backup
第二步,把阿里云的源写入sources.list文件
可以先用echo -n /etc/apt/sources.list 把原来的内容清空,直接复制新内容进去
阿里云的源地址
deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiversedeb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiversedeb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiversedeb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
第三步,更新 apt 软件包索引以使更改生效
apt update
更新成功
7、No LSB modules are available
这个问题出现在你查看linux版本,比如输入lsb_release -a
或者需要安装其他什么软件依赖LSB模块时
怎么办,安装LSB呗,apt install lsb-core
但是你会发现报下边这个错误
The following packages have unmet dependencies:
bsdextrautils : Breaks: bsdmainutils (< 12.1.3) but 11.1.2ubuntu3 is to be installed
rpm : Depends: debugedit (= 4.14.2.1+dfsg1-1build2) but 1:5.0-4build1 is to be installed
E: Error, pkgProblemResolver::Resolve generated breaks, this may be caused by held packages
你去更新bsdextrautils,又报这个错误,郁闷不
最终发现原因了,是因为apt之前换过阿里云的源,再给换回来就行了 -_-||
然后执行apt install lsb-core 顺利安装成功
8、CMake Error: CMake was unable to find a build program corresponding to "Unix Makefiles". CMAKE_MAKE_PROGRAM is not set. You probably need to select a different build tool.
在使用Cmake进行编译时可能会报上边的错误,CMake 无法找到与 "Unix Makefiles" 对应的构建程序或者 CMAKE_MAKE_PROGRAM 没有设置。原因是由于缺少构建工具导致的,基本上就是没有装make
apt search build-essential
看一下有没有装,没有的话装一下就行了
apt update
apt install build-essential
9、执行shell文件报错 Syntax error: "(" unexpected
如果你在脚本开头使用 #!/bin/sh
或 #!/bin/bash
来指定解释器,可能会因为默认解释器与你脚本中的语法不兼容而导致错误。
解决这个问题的方法是使用与你脚本语法兼容的解释器。以下是两种可行的解决方案:
-
使用正确的解释器:根据你的脚本语法,指定适当的解释器。例如,如果你的脚本使用 bash 特定的语法,将
#!/bin/sh
更改为#!/bin/bash
。 -
手动指定解释器来执行脚本:在终端中,通过显式指定解释器来执行脚本。例如,对于一个名为
script.sh
的脚本,可以使用以下命令来执行
比如我直接用sh build.sh会包上边的错误
指定解释器就行了 bash build.sh