Linux(基本使用和配置 图片+大白话)

devtools/2024/11/16 9:43:17/

后面也会持续更新,学到新东西会在其中补充。

建议按顺序食用,欢迎批评或者交流!

缺什么东西欢迎评论!我都会及时修改的!

在这里真的很感谢这位老师的教学视频让迷茫的我找到了很好的学习视频

王晓春老师的个人空间-王晓春老师个人主页-哔哩哔哩视频

Linux是多用户的操作系统

切换级别

runlevel可以查看当前级别

3 代表字符 5 代表图形 6 代表重启 0 关闭

[root@Rocky ~]# runlevel
N 3

init可以切换级别

N 代表上一次没有等级 3 代表上一次等级是 3

[root@Rocky ~]# runlevel
N 3
[root@Rocky ~]# init 5
[root@Rocky ~]# runlevel
3              5
上一次等级    当前等级

etc 目录相当于 注册表

bin 目录相当于 program files

登录

登录后欢迎词

修改/etc/motd 文件

ha ha ha:
Activate the web console with: systemctl enable --now cockpit.socketLast login: Thu Nov 14 22:19:41 2024 from 192.168.111.1
[root@Rocky ~]# cat /etc/motd
ha ha ha:

linux登录界面配置、\etc\motd有趣的图案_linux 如来-CSDN博客

登录前提示

\S 为Linux版本  

\S
Kernel \r on an \m

登录前不要写啥welcome免得黑客就来咯

[root@Rocky ~]# cat /etc/issue
xiaowang
\S
Kernel \r on an \m

shell入门

我们敲命令行的时候,shell在后台悄悄运行帮我们翻译我们的命令行,翻译成机器所认识的。

底层硬件 上面是操作系统 再上面是应用程序

应用程序也好软件也好都是通过系统调用和操作系统打交道。

可以把系统调用理解成银行,用户不能直接进入金库。

但是系统调用太底层所以用shell 到 系统调用 到操作系统内核。

主流的是bash shell

查看当前shell类型

[root@Rocky ~]# echo $SHELL
/bin/bash

查看各种类型的shell类型

[root@Rocky ~]# cat /etc/shells
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash

查看后台运行的shell

[root@Rocky ~]# ps aux
root        1087  0.0  0.2   8688  5248 pts/0    Ss   09:24   0:00 -bash

查看主机名centos

[root@Rocky ~]# hostname
Rocky
[root@Rocky ~]# cat /etc/hostname
Rocky
[root@Rocky ~]# hostnamectlStatic hostname: Rocky
Transient hostname: bj-yz-k8s-node1-100-10.xiaowang.com

注意:主机名不要使用下划线

 临时修改主机名

[root@Rocky ~]# hostname bj-yz-k8s-node1-100-10.xiaowang.com

 临时主机名用的是bj-yz-k8s-node1-100-10.xiaowang.com 

[root@Rocky ~]# hostnamectlStatic hostname: Rocky
Transient hostname: bj-yz-k8s-node1-100-10.xiaowang.com

临时修改重启就没了! 因为临时修改的是存在内存(主存里)而写入

写入文件才是写入到磁盘(辅存里面)

[root@xiaowang ~]# hostname Rocky
[root@xiaowang ~]# reboot

可以看见重启以后我们修改的主机名没有被修改

[root@xiaowang ~]#

永久修改主机名 

hostnamectl相当于修改了静态和临时主机名 也就是修改了磁盘文件和内存

root@ubuntu1804:~# hostnamectl set-hostname ubuntu
root@ubuntu1804:~# hostname
ubuntu
root@ubuntu1804:~# cat /etc/hostname
ubuntu
[root@RockyLinux ~]#  hostnamectl set-hostname xiaowang
[root@RockyLinux ~]#  hostnamectlStatic hostname: xiaowang

 exit 退出查看主机名已经被修改

[root@xiaowang ~]#hostnamectl set-hostname RockyLinux
[root@xiaowang ~]#exit
[root@RockyLinux ~]#

查看IP地址

[root@Rocky ~]# hostname -I
192.168.111.5

查看主机名ubuntu

wang@ubuntu1804:~$ cat /etc/hostname
ubuntu1804
wang@ubuntu1804:~$ whoami
wang
root@ubuntu1804:~# who am i
wang     pts/0        2024-11-15 01:43 (192.168.111.1)
root@ubuntu1804:~# who is nb
wang     pts/0        2024-11-15 01:43 (192.168.111.1)
root@ubuntu1804:~# who is sb
wang     pts/0        2024-11-15 01:43 (192.168.111.1)

只有root 用户能切换hostname 需要sudo -i切换为root 用户

wang@ubuntu1804:~$ hostname xiaowang
hostname: you must be root to change the host name

 修改临时主机名

root@ubuntu1804:~# hostname xiaowang
root@ubuntu1804:~# hostnamectlStatic hostname: ubuntu1804
Transient hostname: xiaowang

永久修改主机名

root@ubuntu1804:~# hostnamectl set-hostname ubuntu
root@ubuntu1804:~# hostname
ubuntu
root@ubuntu1804:~# cat /etc/hostname
ubuntu

 终端格式centos

[root@xiaowang ~]#
[root@xiaowang ~]# echo $PS1
[\u@\h \W]\$

同样的修改PS1还是修改内存重启就恢复了

[root@xiaowang ~]# PS1=xiaowang
xiaowangls
anaconda-ks.cfg
xiaowangreboot

终端格式Ubuntu

root@ubuntu1804:~# echo $PS1
\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\u@\h:\w\$

加颜色可以分别测试环境或者生产环境

[root@xiaowang ~]# PS1="\[\e[1;35m\][\u@\h \W]\\$\[\e[0m\]"
[root@xiaowang ~]#

永久修改终端样式 

写到/etc/profile.d/env.sh文件里面

[root@xiaowang ~]#echo 'PS1="\[\e[1;35m\][\u@\h \W]\\$\[\e[0m\]"' > /etc/profile.d/env.sh
[root@xiaowang ~]#reboot

执行命令(内部和外部)

内部命令

[root@xiaowang ~]#ll /bin/bash
-rwxr-xr-x. 1 root root 1389024 Apr 30  2024 /bin/bash

 这bash相当于一个工具箱,里面集成了很多内置的小工具。这些小工具称为内部命令。

外部命令

ls 命令在bash外就是外部命令

[root@xiaowang ~]#ll /bin/ls
-rwxr-xr-x. 1 root root 140872 Apr 21  2024 /bin/ls

辨别外部或者内部命令 

输入一个命令先查看是不是内部命令,内部命令集成在shell中加载在内存里,不是内部命令外部命令是磁盘文件,就需要从磁盘加载到内存里。

[root@xiaowang ~]#type hostname
hostname is /usr/bin/hostname

如果是内部命令,不会显示路径的。 

 这个就是内部命令

[root@xiaowang ~]#type echo
echo is a shell builtin

 若一个命令不是内部命令,那怎么找到外部命令呢?

外部路径的存放是有规定的

顺序是从左到右查看是否有符合的外部命令

[root@xiaowang ~]#echo $PATH
/root/.local/bin:/root/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin

 xxx既不是外部命令也不是内部命令!

[root@xiaowang ~]#xxx
-bash: xxx: command not found

hashed缓存

root@ubuntu1804:~# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin
root@ubuntu1804:~# type hostname
hostname is hashed (/bin/hostname)

 假如执行过这个hostname 会记录在hashed(哈希)内存里面效率就提高了

root@ubuntu1804:~# hash
hits    command3    /usr/bin/hostnamectl2    /bin/hostname1    /bin/cat2    /bin/ls1    /usr/bin/mesg

hash 列出了曾经执行过的外部命令的路径

hit 代表命令率

hash 可以提高搜索外部命令的效率 

假如缓存的命令路径被改动了 

hash已经记录了路径

[root@xiaowang ~]#hostname
xiaowang
[root@xiaowang ~]#hash
hits    command1    /usr/bin/whereis1    /usr/bin/hostname

 查看环境变量

[root@xiaowang ~]#echo $PATH
/root/.local/bin:/root/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin

 移动bin文件

[root@xiaowang ~]#mv  /usr/bin/hostname /root/

 报错了因为找的还是老文件位置

[root@xiaowang ~]#hostname
-bash: /usr/bin/hostname: No such file or directory

 清除所有缓存

[root@xiaowang ~]#hash -r

 没有放入环境变量所含有的路径就会报错

[root@xiaowang ~]#hostname
-bash: hostname: command not found

 放入满足环境变量路径

[root@xiaowang ~]#mv /root/hostname /usr/local/sbin/
[root@xiaowang ~]#hostname
xiaowang
[root@xiaowang ~]#type hostname
hostname is hashed (/usr/local/sbin/hostname)

发现路径为/usr/local/sbin/hostname 

恢复原样

[root@xiaowang ~]#mv /usr/local/sbin/hostname /usr/bin/
[root@xiaowang ~]#hash
hits    command2    /usr/bin/mv3    /usr/bin/ls2    /usr/local/sbin/hostname

指定删除hash缓存

[root@xiaowang ~]#hash -d hostname
[root@xiaowang ~]#hash
hits    command2    /usr/bin/mv3    /usr/bin/ls

 恢复成功!

[root@xiaowang ~]#hostname
xiaowang
[root@xiaowang ~]#type hostname
hostname is hashed (/usr/bin/hostname)

显示内部命令

help

root@ubuntu1804:~# help
GNU bash, version 4.4.20(1)-release (x86_64-pc-linux-gnu)
These shell commands are defined internally.  Type `help' to see this list.
Type `help name' to find out more about the function `name'.
Use `info bash' to find out more about the shell in general.
Use `man -k' or `info' to find out more about commands not in this list.A star (*) next to a name means that the command is disabled.job_spec [&]                                 history [-c] [-d offset] [n] or history ->(( expression ))                             if COMMANDS; then COMMANDS; [ elif COMMAN>. filename [arguments]                       jobs [-lnprs] [jobspec ...] or jobs -x co>
...

 enable

root@ubuntu1804:~# enable
enable .
enable :
enable [
enable alias
...

既是外部命令也是内部命令 

首先按逻辑来说肯定是先运行内部命令的 那么外部命令是不是就没有作用了呢?

[root@xiaowang ~]#type -a echo
echo is a shell builtin
echo is /usr/bin/echo

 enable可以禁用内部命令

在开头用*代表禁用了echo

[root@xiaowang ~]#enable -n echo
[root@xiaowang ~]#help
*echo [-neE] [arg ...]                                  time [-p] pipeline

 再用type查看echo变成外部命令了

[root@xiaowang ~]#type echo
echo is /usr/bin/echo

恢复echo

[root@xiaowang ~]#enable echo
[root@xiaowang ~]#type echo
echo is a shell builtin

 假如把enable 禁用

等待神仙救结果神仙也要求救

[root@xiaowang ~]#enable -n enable
[root@xiaowang ~]#enable
-bash: enable: command not found

直接exit 退出重连就行,只是写入内存并没有写入磁盘。 

 . 和 source

. 和 source 可以让配置文件快速生效

[root@xiaowang ~]#vi /etc/profile.d/env.sh
[root@xiaowang ~]#cat !*
cat /etc/profile.d/env.sh
PS1="\[\e[1;34m\][\u@\h \W]\\$\[\e[0m\]"
[root@xiaowang ~]#. !*
. /etc/profile.d/env.sh

[root@xiaowang ~]#vi /etc/profile.d/env.sh
[root@xiaowang ~]#cat !*
cat /etc/profile.d/env.sh
PS1="\[\e[1;35m\][\u@\h \W]\\$\[\e[0m\]"
[root@xiaowang ~]#source !*
source /etc/profile.d/env.sh
[root@xiaowang ~]#

which

 which查看外部命令的搜索路径的

[root@xiaowang ~]#which echo
/usr/bin/echo
[root@xiaowang ~]#which reboot
/usr/sbin/reboot

whereis

显示外部命令+帮助文档的路径

[root@xiaowang ~]#whereis ls
ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz /usr/share/man/man1p/ls.1p.gz

命名别名

可以把觉得命令比较长的很麻烦可以起别名

比如这个命令比较长难以记忆

[root@xiaowang ~]#cd /etc/sysconfig/network-scripts/

 首先要type判断命令是否存在

[root@xiaowang ~]#type cdnetwork
-bash: type: cdnetwork: not found

 命令别名 "" ‘’都可以

[root@xiaowang ~]#alias cdnetwork="cd /etc/sysconfig/network-scripts/"
[root@xiaowang ~]#type cdnetwork
cdnetwork is aliased to `cd /etc/sysconfig/network-scripts/'

这个命令也是临时定义重启就没了

[root@xiaowang ~]#cdnetwork
-bash: cdnetwork: command not found

 永久保存别名.bashrc /etc/bashrc是针对所有用户来说的

root@ubuntu1804:~# . .bashrc

~ 代表家目录

[root@xiaowang ~]#
root@ubuntu1804:~#

 利用.bashrc永久修改别名

root@ubuntu1804:~# ls -a
.  ..  .bash_history  .bashrc  .profile  .ssh

 修改.bashrc文件

alias cdnetwork='cd /etc/sysctl.d/'

 生效文件

root@ubuntu1804:~# . .bashrc

成功!

root@ubuntu1804:~# cdnetwork
root@ubuntu1804:/etc/sysctl.d#

 别名 内部 外部 优先级

 优先级是这样的

 将内部命令改成别名

[root@xiaowang ~]#alias cd="cd /etc/sysconfig/network-scripts/"
[root@xiaowang ~]#cd
[root@xiaowang network-scripts]#pwd
/etc/sysconfig/network-scripts

 type查看一下

[root@xiaowang network-scripts]#type cd
cd is aliased to `cd /etc/sysconfig/network-scripts/'

恢复原样

[root@xiaowang network-scripts]#unalias cd
[root@xiaowang network-scripts]#type cd
cd is a shell builtin

 若不想执行别名想执行内部命令

\就是执行原始命令不执行别名

root@ubuntu1804:~# alias enable='hostname -I'
root@ubuntu1804:~# enable
192.168.111.8
root@ubuntu1804:~# \enable
enable .
enable :
enable [

在不重启电脑判断是否新增硬盘

首先要明确一个目的在生产环境中,不能盲目重启的!

查看磁盘分布情况

root@ubuntu1804:/etc/sysctl.d# lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0  200G  0 disk
├─sda1   8:1    0    1M  0 part
├─sda2   8:2    0  100G  0 part /
├─sda3   8:3    0   50G  0 part /data
├─sda4   8:4    0    4G  0 part [SWAP]
└─sda5   8:5    0    1G  0 part /boot
sr0     11:0    1  969M  0 rom

新增一块硬盘

再次查看磁盘分布情况 发现新加硬盘没有显示出来

root@ubuntu1804:/etc/sysctl.d# lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0  200G  0 disk
├─sda1   8:1    0    1M  0 part
├─sda2   8:2    0  100G  0 part /
├─sda3   8:3    0   50G  0 part /data
├─sda4   8:4    0    4G  0 part [SWAP]
└─sda5   8:5    0    1G  0 part /boot
sr0     11:0    1  969M  0 rom

 输入命令

echo "- - -" > /sys/class/scsi_host/host0/scan
echo "- - -" > /sys/class/scsi_host/host1/scan
echo "- - -" > /sys/class/scsi_host/host2/scan
echo "- - -" > /sys/class/scsi_host/host3/scan
echo "- - -" > /sys/class/scsi_host/host4/scan
echo "- - -" > /sys/class/scsi_host/host5/scan
echo "- - -" > /sys/class/scsi_host/host6/scan
echo "- - -" > /sys/class/scsi_host/host7/scan
echo "- - -" > /sys/class/scsi_host/host8/scan
echo "- - -" > /sys/class/scsi_host/host9/scan
echo "- - -" > /sys/class/scsi_host/host10/scan
echo "- - -" > /sys/class/scsi_host/host11/scan
echo "- - -" > /sys/class/scsi_host/host12/scan
echo "- - -" > /sys/class/scsi_host/host13/scan
echo "- - -" > /sys/class/scsi_host/host14/scan
echo "- - -" > /sys/class/scsi_host/host15/scan
echo "- - -" > /sys/class/scsi_host/host16/scan
echo "- - -" > /sys/class/scsi_host/host17/scan
echo "- - -" > /sys/class/scsi_host/host18/scan
echo "- - -" > /sys/class/scsi_host/host19/scan
echo "- - -" > /sys/class/scsi_host/host20/scan
echo "- - -" > /sys/class/scsi_host/host21/scan
echo "- - -" > /sys/class/scsi_host/host22/scan
echo "- - -" > /sys/class/scsi_host/host23/scan
echo "- - -" > /sys/class/scsi_host/host24/scan
echo "- - -" > /sys/class/scsi_host/host25/scan
echo "- - -" > /sys/class/scsi_host/host26/scan
echo "- - -" > /sys/class/scsi_host/host27/scan
echo "- - -" > /sys/class/scsi_host/host28/scan
echo "- - -" > /sys/class/scsi_host/host29/scan
echo "- - -" > /sys/class/scsi_host/host30/scan
echo "- - -" > /sys/class/scsi_host/host31/scan
echo "- - -" > /sys/class/scsi_host/host32/scan

 再次检查成功!

root@ubuntu1804:/sys/class/scsi_host# lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0  200G  0 disk
├─sda1   8:1    0    1M  0 part
├─sda2   8:2    0  100G  0 part /
├─sda3   8:3    0   50G  0 part /data
├─sda4   8:4    0    4G  0 part [SWAP]
└─sda5   8:5    0    1G  0 part /boot
sdb      8:16   0   20G  0 disk
sr0     11:0    1  969M  0 rom

参考文献 

2Linux的基本使用和配置_哔哩哔哩_bilibili 

3Linux执行命令的过程详解和命令类型_哔哩哔哩_bilibili

总结

所有命令都需要反复敲来实验来记忆,本人基本上是个人理解加参考其他大佬的肯定有很多问题欢迎指正,我会及时修改。


http://www.ppmy.cn/devtools/134398.html

相关文章

远程控制步骤

当远在千里之外的朋友想求助你帮他找到他电脑上的文件、或者是给他安装软件时。但是你给他说了他又找不到,那么这时你就可以通过控制对方的电脑去做一系列的操作。 如何远程控制对方的电脑非常关键。 方法一(Windows自带远程桌面功能)&#…

飞牛云fnOS本地部署1Panel服务器运维管理面板并搭建Halo个人博客

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

《C++ 实现生成多个弹窗程序》

《C 实现生成多个弹窗程序》 在 C 编程中,我们可以利用特定的系统函数来创建弹窗,实现向用户展示信息等功能。当需要生成多个弹窗时,我们可以通过循环结构等方式来达成这一目的。 一、所需头文件及函数介绍 在 Windows 操作系统环境下&#…

采样率22050,那么CHUNK_SIZE 一次传输的音频数据大小设置多少合适?unity接收后出现卡顿的问题的思路

在采样率为22050的情况下,选择合适的 CHUNK_SIZE 主要取决于 Unity 接收和处理音频数据的效率。以下是设置 CHUNK_SIZE 的一些建议: 计算 CHUNK_SIZE:音频的传输数据量可以通过公式 CHUNK_SIZE 采样率 * 传输间隔秒数 * 每样本字节数 * 声道…

五、函数封装及调用、参数及返回值、作用域、匿名函数、立即执行函数

1. 函数基本使用 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title><style&…

单片机智能家居火灾环境安全检测

目录 前言 一、本设计主要实现哪些很“开门”功能&#xff1f; 二、电路设计原理图 电路图采用Altium Designer进行设计&#xff1a; 三、实物设计图 四、程序源代码设计 五、获取资料内容 前言 在现代社会&#xff0c;火灾安全始终是人们关注的重点问题。随着科技的不…

比特大陆/算能科技嵌入式面试题及参考答案

请描述 ubuntu 系统启动的过程。 当按下计算机电源按钮后,计算机硬件开始自检,这个过程是由 BIOS(或 UEFI)来执行的。BIOS 会检查硬件设备是否正常工作,如内存、硬盘等。之后,BIOS 会按照预设的启动顺序查找可引导的设备。 一旦找到包含 Ubuntu 系统的存储设备(如硬盘)…

【Rust设计模式之新类型模式】

Rust设计模式之新类型模式 前言代码总结 前言 类型驱动一节中有提及过新类型模式&#xff0c;新类型模式是类型驱动的一种方式&#xff0c;主要是通过新类型的封装让使用者不用考虑原来类型的细节&#xff0c;也保证了privacy&#xff0c;从而避免不必要的bug&#xff0c;如开…