Linux基础知识大全(持续更新)

编程入门 行业动态 更新时间:2024-10-27 10:25:11

Linux基础知识大全

  • 简介
  • 基础
    • 系统目录结构
    • Linux系统安装
    • 基本命令
      • 命令提示符
      • 历史命令和补全功能
      • 开,关机以及重启
        • 立即关机
        • 定时关机
        • 立即重启
        • 定时重启
      • 目录相关操作
        • 切换/进入目录
        • 展开/查看目录
        • 创建
        • 删除
        • 移动[剪切]
        • 重命名
        • 移动+重命名
        • 拷贝
      • 文件相关操作
        • 创建
        • 删除
        • vi编辑器
      • 修改文件权限
      • 文件打包,压缩,解压
        • 常见文件格式
        • 打包和压缩,解压
      • 查找命令
        • 目录,文件查找
    • 网络配置
      • 修改网络配置文件
      • 查看网络信息
            • 配置域名服务(DNS)
    • 管理磁盘
        • 磁盘文件相关信息
        • 查看所有磁盘详细信息
        • 添加硬盘
        • 进入磁盘交互模式进行分区
        • 格式化分区
        • 挂载分区到相应目录
    • 软件安装
      • 安装软件的三种方法:
        • rpm和yum的区别
        • rpm安装,卸载
        • 常用参数
        • yum安装,卸载
        • 常用参数
      • 安装MySQL
        • 获取安装包进行安装
        • 安装MySQL服务
        • MySQL服务相关操作
        • 登录MySQL
          • 获取初始密码
          • 登录
        • 修改密码
      • 安装Java
        • 查看是否存在java安装包(可略)
        • 下载JavaJDK
        • 解压并存放放到指定位置
        • 配置环境变量
        • 检测是否安装成功:java -version
        • ssh免密登录
          • 格式化
    • shell编程
    • 输入语句
      • 文件运行命名格式
      • 定义,调用函数
      • 批量添加用户
        • 循环结构 批量添加用户
      • 统计数据
          • 分支,判断语句
      • 计划任务
    • 关闭防火墙
          • Linux用户信息修改命令
  • Shell编程
    • Shell定义
    • 变量
      • 变量修饰符
    • 输出语句
    • 数据类型
      • 字符串
        • 单引号字符串
        • 双引号字符串
    • 运算符
      • 获取变量长度
      • 运算表达式
    • 流程控制
      • 单分支
      • 多分支
      • 选择语句
      • 循环
  • Ubuntu
    • 常用工具下载
      • openssh-server
      • vim
      • rpm
    • 网络配置
      • 动态
      • 静态
      • **常见DNS IP地址**
    • 环境变量配置
      • 查看,关闭防火墙
      • ssh
    • 时间校正
    • 定时任务
      • 任务编辑

简介

【最近更新时间:20223-4-13;对部分内容做增添修改;后续将继续完善】

Linux是一种免费、开源、可定制的操作系统,最初由芬兰的Linus Torvalds开发。它被广泛应用于服务器、超级计算机、移动设备和嵌入式系统等领域。Linux操作系统的核心特点包括稳定性、安全性、高效性和灵活性,以及丰富的软件库和开发工具。

Linux系统发行版本有很多,目前主流的是CentOSUbuntu,本篇基于ContOS进行讲解

基础

系统目录结构

大致的一个目录结构如上

  • /:根目录

  • /bin:存放二进制可执行文件,比如一些系统命令

  • /boot:存放启动Linux系统所需的文件,如内核文件、引导加载器、镜像文件等

  • /dev:设备文件目录,包含系统中的设备文件,如硬件设备、虚拟设备等

  • /etc: 系统配置文件目录,包含系统各个组件的配置文件

  • /home:用户主目录,每个用户在此目录下有一个以其用户名命名的子目录,如上图中用户"kang","bob"等

  • /lib:共享库文件目录,包含系统运行时所需的共享库文件

  • /media:挂载点目录,系统自动将可移动设备(如U盘、光盘等)挂载到此目录下的对应子目录中

  • /mnt:挂载点目录,用户手动将其他设备挂载到此目录下

  • /opt:第三方软件安装目录,一些第三方软件会将自己安装到此目录下,比如hadoop,spark,flink等

  • /proc:虚拟文件系统目录,包含系统内存、进程等信息的虚拟文件,存储的是当前内核运行状态的一系列特殊文件,这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。目录的内容在内存里,可以直接修改里面的某些文件,比如可以通过下面的命令来屏蔽主机的ping命令,使别人无法ping你的机器:

    echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
    
  • /root:超级用户(root)主目录,与/home不同的是,/root只有root用户才能访问

  • /run:临时文件目录,存放系统运行时产生的临时文件

  • /sbin:系统二进制可执行文件目录,包含系统管理员使用的工具和命令

  • /srv:服务数据目录,存放某些服务(如HTTP服务)所需的数据文件

  • /sys:虚拟文件系统目录,包含系统硬件、设备驱动等信息的虚拟文件

  • /tmp:临时文件目录,存放系统运行时产生的临时文件

  • /usr:用户相关的二进制文件、库文件、文档等存放目录,包含系统大部分应用程序

  • /var:可变文件目录,包含系统运行时产生的可变数据,如日志文件、数据库文件等

  • /lost+found:一般情况下是空的,当系统非法关机后,这里就存放了一些文件。

  • /selinux: Redhat/CentOS 所特有的目录,Selinux 是一个安全机制,类似于 windows 的防火墙,存放selinux相关的文件。

  • **/usr/bin:**系统用户使用的命令和应用程序。

  • /usr/sbin:超级用户使用的比较高级的管理程序和系统守护程序。

  • /usr/src:内核源代码默认的放置目录。

在 Linux 系统中,有几个目录是比较重要的,平时需要注意不要误删除或者随意更改内部文件:

  • /etc: 上文也提到了,这个是系统中的配置文件,如果你更改了该目录下的某个文件可能会导致系统不能启动。

  • /bin, /sbin, /usr/bin, /usr/sbin: 这是系统预设的执行文件的放置目录,比如 ls 就是在 /bin/ls 目录下的。

    /bin, /usr/bin 是给系统用户使用的指令(除root外的通用户),而/sbin, /usr/sbin 则是给 root 使用的指令。

  • /var: 这是一个非常重要的目录,系统上跑了很多程序,那么每个程序都会有相应的日志产生,而这些日志就被记录到这个目录下,具体在 /var/log 目录下,另外 mail 的预设放置也是在这里。

Linux系统安装

1.下载VMware Workstation Pro虚拟机

2.下载CentOS镜像

3.创建虚拟机

基本命令

命令提示符

Linux系统命令提示符(Command Prompt)是在终端中显示的文本提示符,用于接受用户的命令输入

在大多数Linux系统中,默认的命令提示符为$符号,表示普通用户权限。而超级用户(root)的命令提示符则为#符号

普通用户的命令提示符:

username@hostname:~$

超级用户的命令提示符:

root@hostname:~#

其中,username表示当前登录的用户名,hostname表示主机名,~表示当前所在的工作目录(家目录),$/#表示命令提示符

也可以通过修改shell环境变量来自定义命令提示符的显示格式,这里不为大家展示,感兴趣的小伙伴可以自行搜索

历史命令和补全功能

1.按上下键查看历史命令

2.history :查看执行过的所有命令

history 10:查看执行过的近10条命令

3.ctr+r:用执行过的命令快速补全

开,关机以及重启

立即关机

halt (停止进行,中断)

poweroff (定时关机,关闭电源)

shutdown -h now (shutdown:关机)

定时关机

shutdown -h 5               5分钟后自动关机

shutdown -h 12:00           中午12点关机

立即重启

reboot

shutdown -r now

定时重启

shutdown -r 10                   过10分钟自动重启

shutdown -r 22:00             在时间为22:00时候重启

取消以上操作:shutdown -c

目录相关操作

切换/进入目录

cd 某一目录
cd /opt
cd /usr/src

展开/查看目录

ls  :显示出该目录下文件名或目录(ls /目录:查看指定目录,下同)

ls -l/ll:显示出该目录下所有文件的详细信息  (ll:不属于命令,是快捷方式)

ls -al :显示出该目录下所有文件的详细信息(会显示隐藏文件)

创建

可同时创建多个

mkdir 目录1[,目录2,目录n]  

mkdir hello                 在当前目录下创建
mkdir /usr/local/hello      在指定目录下创建
mkdir hello xiaowei kang    在当前目录下创建


mkdir -p 路径         创建层级目录  例 aa/bb/cc/dd


mkdir -m 700 test    创建并修改权限文件夹权限为rwx------

删除

可同时删除多个

rm [-rf] 目录1[,目录2,目录n]                                   r:递归删除   f:强制删除  

rm -r xiaowei             递归删除当前目录下的xiaowei目录
rm -rf xiaowei            递归强制删除当前目录下的xiaowei目录
rm -rf hello xiaowei kang 删除三个目录 

移动[剪切]

mv 目录 目录新位置

mv /usr/local/kang /usr/     将/usr/local下的名为kang的目录移动到/usr下            

重命名

mv 目录 新目录

mv hello nihao    将目录hello改为nihao

移动+重命名

移动的同时重命名

移动:mv /usr/local/kang /usr/nihao/           /usr/local/kang将目录移动到/nihao下
移动+重命名:mv /usr/local/kang /usr/nihao        将目录kang移动到/usr下,并重命名为nihao               

注意:若是移动,则/usr/nihao/ local后面要加个/,否则就成移动并重命名了,加/后才表式nihao目录下如果当前目录下也有个相同名字的文件的话,那这个原文件会被覆盖(可能会询问否是选择覆盖)

mv的语法不仅可以对目录进行重命名而且也可以对各种文件,压缩包等进行 重命名的操作

拷贝

  • - -r 是递归把源目录下的目录递归进行移动;
    - -f:强行复制文件或目录,不论目标文件或目录是否已存在;
    - -i:覆盖既有文件之前先询问用户;
    - -p:保留源文件或目录的属性;
    

    拷贝目录时要加参数 -r

    文件则不需要

注意:

文件相关操作

创建

可创建多个

touch 文件名1[,文件名2,文件名n]

删除

同删除目录一致,文件,安装包等都一样

rm 文件      删除当前目录下的文件
rm -f 文件   删除当前目录的的文件
rm -rf *    将当前目录下的所有目录和文件全部删除

vi编辑器

对文件进行编辑

vi demo.txt

i,o,a都可进入插入模式
保存并退出: wq
退出编辑:  q
强制退出:  q!
删除当前行:dd 
显示行号:set nu

修改文件权限

-r :可读   -w:可写    -x:可执行
chmod 权限代数 文件名

文件打包,压缩,解压

常见文件格式

xxx.rpm : 是rpm安装包

xxx.tar : 打包文件

xxx.gz :压缩文件

xxx.tar.gz :打包并压缩的文件

打包和压缩,解压

Linux中的打包文件一般是以.tar结尾的,压缩的命令一般是以.gz结尾的。
而一般情况下打包和压缩是一起进行的,打包并压缩后的文件的后缀名一般.tar.gz。

命令:tar -zcvf 打包压缩后的文件名 要打包的文件
  z:调用gzip压缩命令进行压缩
  c:打包文件
  v:显示运行过程
  f:指定文件名

示例:打包并压缩/usr/tmp 下的所有文件 压缩后的压缩包指定名称为xxx.tar
tar -zcvf ab.tar aa.txt bb.txt 
或:tar -zcvf ab.tar  *

解压

命令:tar [-zxvf] 压缩文件         x:代表解压

tar -zxfv 压缩包 tar -xvf 路径/压缩包 -C 指定目录 C:代表解压到指定的位置
将路径下的压缩包解压到根目录指定目录下

查找命令

目录,文件查找

find 查看起始目录 参数 文件名称

find /usr/local -name 'k*'    查找/usr/local目录下的所有以k开头的目录或文件
cat  查看文件最后一屏内容
cat 文件路路径
more:百分比显示
使用more查看/etc/sudo.conf文件,可以显示百分比,回车可以向下一行,空格可以向下一页,q可以退出查看
more sudo.conf
whereis 文件   将文件和所在路径都查找出来
which命令的作用是在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果。
which pwd  查找pwd命令所在路径 
which java  查找path中java的路径 

还有很多,下次有机会再整理给大家

网络配置

修改网络配置文件

网络配置相关文件位置 /etc/sysconfig/network-scripts/ifcfg-ethxx

vi /etc/sysconfig/network-scripts/ifcfg-ensxx
        系统配置     网络脚本       网卡文件

BOOTROTO=static (设置静态IP,相当于手动设置IP)
(DHCP:自动获得服务器分配的IP地址和子网掩码)

ONBOOT=yes(开机自动打开网卡)

IPADDR="IP地址"  (最后一个要和物理机不一样)

NETMASK=掩码(255.255.255.0)

GATEWAY=默认网关 
!若是桥接模式则掩码和默认网关必须和物理机一样

存盘退出

重启网络服务

service network restart  / systemctl restart network

查看网络信息

查看,启动,关闭网络接口(网卡)和临时修改网络接口

ifconfig

查看所有已开启的网络接口:ifconfig

查看所有网络接口(包括未启用接口):ifconfig -a

启动:ifconfig ens33 up

关闭:ifconfig en33 down

临时修改网卡信息:ifconfig ens() (IPADDR) netmask (255.255.255.0) 


配置域名服务(DNS)
vi /etc/resolv.conf  进入域名服务配置文件

nameserver 114.114.114.114

systemctl restart NetworkManager  重启域名服务

<property>
<name></name>
<value></value>
</property>

管理磁盘

磁盘文件相关信息

设备文件格式:/dev/xxyn

xx     :硬盘接口类型(一般为sd)

y      :使用此类接口的第几个硬盘(a-z)

n      :分区号(主分区/扩展分区用1-4表示,逻辑分区从5开始)

查看所有磁盘详细信息

fdisk -l

操作

添加硬盘

进入磁盘交互模式进行分区

fdisk /dev/磁盘名

n :创建新分区—>p:选择创建主分区        
                                   d :删除某个分区    p :查看分区信息
选择分区号

起始额度(可默认)

截止额度

w :存盘退出

格式化分区

fdisk -t ext4 /dev/硬盘分区

挂载分区到相应目录

创建文件系统(目录)

mount /dev/硬盘分区 /创建的目录              挂载到创建的目录

mount  查看挂载信息

*对第一个分区进行处理系统会默认对其剩下分区进行相关操作

*分区只是在硬盘做标志信息,格式化后挂载(建立文件系统)才会生效

软件安装

安装软件的三种方法:

1.编译安装源码包(tar-)

2.rpm(本地安装)

3.yum(在线安装)

rpm和yum的区别

rpm 只能安装已经下载到本地机器上的rpm 包.

yum能在线下载并安装rpm包,能更新系统,且还能自动处理包与包之间的依赖问题,这个是rpm 工具所不具备的。

从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装,

可以完整的删除软件

rpm:删除指定的一个

yum:删除与之相关联的全部安装包

rpm安装,卸载

安装
命令格式:rpm -vih 包名
卸载
命令格式:rpm -e 包名

常用参数

-i, --install  :安装      

-v :选项显示详细信息      

-h 选项:hash marks输出进度条;每个#表示2%的进度

-vv:显示更详细的信息 

–nodeps:忽略依赖关系;不建议

–force 属性,强制进行安装  

-U, --update :升级

–force :强制升级,强制进行安装  

-e, --erase :卸载 

-q, --query:查询 

-l:显示套件的文件列表

-a,–all:查询所有已经安装过的程序包,可配合grep使用  

-V, --verify  :校验

–builddb, --initdb:数据库维护

yum安装,卸载

安装
命令格式:yum install -y 包名
卸载
命令格式: yum -y remove 包名

常用参数

 -y:当安装,卸载过程提示选择全部为"yes"
 -q:不显示安装的过程

wget 下载地址

安装MySQL

获取安装包进行安装

wget 链接

rpm

安装MySQL服务

yum install -y mysql-server

MySQL服务相关操作

systemctl start mysqld    开启MySQL服务

ps -aux|grep mysqld        查看后台MySQL是否运行

systemctl enable mysqld   设置开机自启

登录MySQL

获取初始密码
cat /var/log/mysqld.log|grep 'A temporary password'
登录
mysql -u root -p

修改密码

use mysqld;    切换MySQL数据库

alter user 'root'@'localhost' identified by 'py.123456'
修改   用户  管理员   本地服务器    登陆密码 

安装Java

(老师在教学中用的是rpm软件包,rpm安装)

查看是否存在java安装包(可略)

筛选

rpm -aq|grep java

删除不需要的版本

下载JavaJDK

下载JDK地址:ww.oracle

解压并存放放到指定位置

拖动至Linux系统内,去掉引号

创建目录-移动-解压 / 解压并移动

mkdir 目录名

mv 现在的位置 新位置

tar [-zxvf] 压缩文件    x:解压     zxvf顺序不能乱,否则报错       

也可在解压到指定位置

tar -xvf 压缩文件 -C 解压后存放的位置       C:解压到指定位置

配置环境变量

copy Java路径

export JAVA_HOME=/usr/java/jdk1.8.0_291-amd64              export:声明为全局变量
export PATH=$PATH:$JAVA_HOME/bin
export CALSSPATH=.:$JAVA_HOME/lib

解释

JAVA_HOME环境变量:jdk的安装路径
Eclipse/NetBeans/Tomcat等软件就是通过搜索JAVA_HOME变量来找到并使用安装好的jdk。

PATH环境变量。作用是指定命令搜索路径,在shell下面执行命令时,它会到PATH变量所指定的路径中查找看是否能找到相应的命令程序。我们需要把
jdk安装目录下的bin目录增加到现有的PATH变量中,bin目录中包含经常要用到的可执行文件如javac/java/javadoc等待,设置好
PATH变量后,就可以在任何目录下执行javac/java等工具了。

CLASSPATH环境变量。作用是指定类搜索路径,要使用已经编写好的类,前提当然是能够找到它们了,JVM就是通过CLASSPTH来寻找类的。我们
需要把jdk安装目录下的lib子目录中的dt.jar和tools.jar设置到CLASSPATH中,当然,当前目录“.”也必须加入到该变量中。


#### 重启系统环境配置文件

```shell
source /etc/profile

配置成功后无论在哪里都可以调用java(会显示版本信息)
若修改profile文件时覆盖了原PATH路径,解决方法:

输入命令:export PATH=/usr/bin:/usr/sbin:/bin:/sbin   后,将原PATH变量修改回来即可

检测是否安装成功:java -version

ssh免密登录

格式化
cd /usr/hadoop-2.10.1

./sbin/start-dfs.sh

shell编程

vi 文件名 直接创建文件并进行修改

输入语句

#! /bin/bash
read -p 'input name:' name

运行结果:

input name:
```shell

`#!`是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行,即使用哪一种 shell;

后面的`/bin/bash`就是指明了解释器的具体位置。

Shell 脚本中所有以`#`开头的都是注释(当然以`#!`开头的除外)。

### 输出语句

```shell
echo $name
echo:回响,打印

echo 字符或已赋值变量$name

echo打印已声明变量前要加$,否则打印的是当前字符

文件运行命名格式

文件路径 /文件名

定义,调用函数

#! /bin/bash
function add()
{
 sum=$[$1+$2]
 echo $sum
}
read -p 'input number1:' num1
read -p 'input bunber2:' num2

add $num1 $num2

bash 文件名 以可执行身份强制执行文件(无执行权限的文件)

批量添加用户

循环结构 批量添加用户

#! /bin/bash
groupadd student

for i in 'xiaowang' 'zhangsan' 'wangwu' 'jiangcheng' 'pig'
do  
    useradd -g student $i
    echo '123456'|passwd --stdin $i
done 

do~done构成循环体

执行结果

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7SKV76jD-1681386701603)(F:\笔记插图库\批量添加用户.png)]

统计数据

分支,判断语句
统计目录,文件数

#! /bin/bash
fnum=0
dnum=0
total=0
for i in `ls`
do
    if [ -d $i ]
    then
       dnum=`expr $dnum + 1`
    else
       fnum=`expr $dnum + 1`
    fi
    total=`expr $total + 1`
done
echo directory:$dnum
echo file:$fnum
echo total:$total
执行结果:
directory:0
file:1
total:7

计划任务

crontab -e 编辑任务:添加

任务内容

关闭防火墙

systemctl命令是Linux系统服务管理器命令,由service和chkconfig命令组合而来 system:系统 ctl->control:控制—>系统控制

systemctl stop c    (暂时)
systemctl disable firewalld  (永久开机自动关闭)(禁用)
systemctl status firewalld  (查看状态)
最好也把selinux关闭掉,这是linux系统的一个安全机制,进入文件中将SELINUX设置为disabled
vi /etc/selinux/config
SELINUX=disabled	

Linux中还可以通过查看/etc/passwd文件来获取用户的信息。具体方法可以参考背景知识。

Linux中还可以使用finger命令来查询用户的信息。

注意Ubuntu系统中默认没有安装finger命令,用户可以通过以下命令来安装finger,然后就可以使用finger

sudo apt-get install finger

具体使用方法如下:

命令格式:finger [命令参数] 参数

常见命令参数

  • -l:多行显示;
  • -s:单行显示。这个选项只显示登入名称、真实姓名、终端机名称、闲置时间、登入时间、办公室号码及电话号码。如果所查询的使用者是远端服务器的使用者,这个选项无效。

案例演示:

使用finger命令查看用户信息。

例如,查看系统中已经存在的用户newUser信息。

[请在右侧“命令行”里直接体验]

Linux用户信息修改命令

Linuxusermod命令是最强大的用户账户修改实用工具。

usermod命令我们在上一关只是简单的用到其-g-G参数对用户的所属组进行修改,本关我们将进一步使用usermod命令的其它属性进行修改更多的属性。

命令格式:usermod [命令参数] 参数

常见命令参数:

- -c<备注>:修改用户帐号的备注文字;
- -d<登入目录>:修改用户登入时的目录;
- -e<有效期限>:修改帐号的有效期限;
- -f<缓冲天数>:修改在密码过期后多少天即关闭该帐号;
- -g<群组>:修改用户所属的群组;
- -G<群组>;修改用户所属的附加群组;
- -l<帐号名称>:修改用户帐号名称;
- -L:锁定用户密码,使密码无效;
- -s:修改用户登入后所使用的`shell`;
- -u:修改用户`ID`;
- -U:解除密码锁定。

usermod必须以root权限才能执行,如果是普通用户想使用该命令时,需要在命令前加sudo命令来提升权限为root权限。

Shell编程

Shell定义

shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务

#!/bin/bash  

#!是一个标记,告诉系统该脚本使用哪种解释器执行,一般使用/bin/bash(易用,免费)

变量

类型

局部变量:只在当前脚本有效

环境变量:整个系统中的环境变量

shell变量:shell程序的特殊变量

特殊变量:

$0:得到执行文件所在的路径(文件名)

$n:$1,$2, 3.... 3.... 3....n,位置参数,表示传入参数的位置(zk-all.sh start),大于9时加{},${10}

$#:统计传入参数数量

$?:判断上一条命令是否执行成功(非0不正常)

$*:得到将传入的参数作为一个整体的结果

$@:将参数分区对待,返回一个参数数组

变量声明,删除

shell的变量声明时不需要加 , 使用时需要 ,使用时需要 ,使用时需要,最好带上{}(帮助解释器识别变量边界)

声明:your_name="qinjx"
使用:echo $your_name
     echo ${your_name}

加{}的必要性

for skill in Ada Coffe Action Java; 
do
  echo "I am good at ${skill}Script"
done
若此处不加{},则解释器不知道skill是变量还是字符

删除变量

unset 变量

变量修饰符

readonly

只读变量(最终变量)

readonly 变量

输出语句

echo $变量/内容

数据类型

一般常用的是字符串和整型

字符串

shell中的字符串可以用单引号,双引号,也可以不用引号

单引号字符串

中间的变量,转义是无效的,纯输出所有内容
也不能出现单独一个的单引号(对单引号使用转义符后也不行),但可成对出现,作为字符串拼接使用。

但是可以使变量和字符串拼接使其变量有效

str='aaa'
str4='ccc'$str''

双引号字符串

中间的变量,转义有效

运算符

在shell中运算以中括号或者双小括号来进行计算,

另外expr命令也可以用来运算,但是不方便且复杂

$[表达式]/$((表达式))
a=$[1+2]
echo $a
>>3
a=$[(1+2)*3]
echo $a
>>9


#! /bin/bash
#a=$1
#b=$2
if [ $# != 2 ];then
    echo "Input digits!"
    exit 1
fi
echo $#
括号两边必须空格,否则报错

获取变量长度

${#变量}

a=asdffg
${#a}:获取a引用的值的长度
${#a[0]}:将变量a作为一个数组类型取第一个元素的长度

运算表达式

sum=$[1+2]
sum=$((1+2))
echo $sum

流程控制

shell脚本本质是对命令的集中编写,多条语句同一行用;,||,$$隔开

单分支

if 表达式;then
    语句
fi

多分支

if 表达式;then
    语句
else
    语句
fi

选择语句

case 表达式 in
值1)
    语句
;;
值2)
    语句
;;
值3)
    语句
esac

循环

for 变量 in 元素列表
do
   语句
done

死循环
for (()) in

while (表达式)
do
    语句
don

Ubuntu

Ubuntu 镜像文件下载

1.官方下载地址(不推荐)
https://www.ubuntu/download

2.中国官网(推荐)
https://cn.ubuntu/

3.中科大源
http://mirrors.ustc.edu/ubuntu-releases/16.04/

4.阿里云开源镜像站(非常快)
http://mirrors.aliyun/ubuntu-releases/16.04/

5.北京理工大学开源
http://mirror.bit.edu/ubuntu-releases/16.04/

6.浙江大学
http://mirrors.zju.edu/ubuntu-releases/16.04/

7.各个版本下载网址:
http://mirrors.melbourne.co.uk/ubuntu-releases/

以20.4版本为例

常用工具下载

更新源sudo apt-get update

openssh-server

Ubuntu 默认自带ssh客户端,需要自行下载服务端

apt install openssh-server

vim

apt install vim

rpm

网络配置

18.04版本后/etc/Netplan/*.yaml替换了原来旧的/etc/network/interfacer配置文件

01-network-manager-all.yaml用于配置第一个接口。如果有多个接口,则创建02-network-manager-all.yaml作为第二个接口。

Netplan 按数字顺序应用配置。这意味着 01 文件将在 02 文件之前应用。

Ubuntu有一个自带的文本编辑器,就是Gedit

network:
    Version: 2
    Renderer: NetworkManager/ networkd
    ethernets:
       DEVICE_NAME:
          dhcp4: yes/no
          addresses: [IP_ADDRESS/NETMASK]
          gateway: GATEWAY
          nameservers:
             addresses: [NAMESERVER_1, NAMESERVER_2]

DEVICE_NAME:接口的名称。(网卡名)
dhcp4:是或否取决于动态或静态 IP 寻址(IPV4)
addresses:设备的 IP 地址以前缀表示法。不要使用网络掩码。
gateway:连接到外部网络的网关 IP 地址
nameservers : DNS 名称服务器的地址
Yaml 文件的缩进相当严格。只能使用空格来缩进

动态

添加dhcp4为yes即可,会自动从 DHCP 服务器获取 IP 地址

静态

“ip/24”表示这个IP的子网为24位,为子网掩码,指有24个“1”,即“255.255.255.0”。

子网掩码是4个8位2进制数组成的, 换化成10进制是就是现在这样的, 如255.255.255.0, 换成2进制的话就是11111111 11111111 11111111 00000000, 前面有24个1, 也就是ip/24,10.10.1.1/24 就表示ip是10.10.1.1, 子网掩码是255.255.255。

修改完后应用配置,重启网络

[sudo] netplan apply

[sudo] systemctl restart network-manager

常见DNS IP地址

114DNS 114.114.114.114  114.114.115.115

阿里DNS 223.5.5.5 223.6.6.6

百度DNS 180.76.76.76

谷歌DNS 8.8.8.8

OpenDNS 208.67.220.220

环境变量配置

该方法修改系统配置,需要管理员权限或者对该文件的写入权限,和vim /etc/bashrc类似:

# 如果/etc/profile文件不可编辑,需要修改为可编辑
chmod -v u+w /etc/profile

vim /etc/profile

# 在最后一行加上
export PATH=$PATH:/home/uusama/mysql/bin
1234567

注意事项:

生效时间:新开终端生效,或者手动source /etc/profile生效
生效期限:永久有效
生效范围:对所有用户有效

该方法是修改系统配置,需要管理员权限(如root)或者对该文件的写入权限:

vim /etc/bashrc

# 在最后一行加上
export PATH=$PATH:/home/uusama/mysql/bin
1234567

注意事项:

生效时间:新开终端生效,或者手动source /etc/bashrc生效
生效期限:永久有效
生效范围:对所有用户有效

通过修改用户目录下的~/.bashrc文件进行配置:

vim ~/.bashrc

# 在最后一行加上
export PATH=$PATH:/home/uusama/mysql/bin
1234

注意事项:

生效时间:使用相同的用户打开新的终端时生效,或者手动source ~/.bashrc生效
生效期限:永久有效
生效范围:仅对当前用户有效
如果有后续的环境变量加载文件覆盖了PATH定义,则可能不生效

读取环境变量的方法:

export命令显示当前系统定义的所有环境变量
echo $PATH命令输出当前的PATH环境变量的值

uusama@ubuntu:~export
declare -x HOME="/home/uusama"
declare -x LANG="en_US.UTF-8"
declare -x LANGUAGE="en_US:"
declare -x LESSCLOSE="/usr/bin/lesspipe %s %s"
declare -x LESSOPEN="| /usr/bin/lesspipe %s"
declare -x LOGNAME="uusama"
declare -x MAIL="/var/mail/uusama"
declare -x PATH="/home/uusama/bin:/home/uusama/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
declare -x SSH_TTY="/dev/pts/0"
declare -x TERM="xterm"
declare -x USER="uusama"

uusama@ubuntu:~ echo $PATH
/home/uusama/bin:/home/uusama/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
123456789101112131415

其中PATH变量定义了运行命令的查找路径,以冒号:分割不同的路径,使用export定义的时候可加双引号也可不加。

1.方式1

使用export命令直接修改PATH的值,配置MySQL进入环境变量的方法:

export PATH=/home/uusama/mysql/bin:$PATH

# 或者把PATH放在前面
export PATH=$PATH:/home/uusama/mysql/bin
1234

注意事项:

生效时间:立即生效
生效期限:当前终端有效,窗口关闭后无效
生效范围:仅对当前用户有效
配置的环境变量中不要忘了加上原来的配置,即$PATH部分,避免覆盖原来配置

2.方式1

通过修改用户目录下的~/.bashrc文件进行配置:

vim ~/.bashrc

# 在最后一行加上
export PATH=$PATH:/home/uusama/mysql/bin
1234

注意事项:

生效时间:使用相同的用户打开新的终端时生效,或者手动source ~/.bashrc生效
生效期限:永久有效
生效范围:仅对当前用户有效
如果有后续的环境变量加载文件覆盖了PATH定义,则可能不生效

3.方式3

vim ~/.bash_profile

# 在最后一行加上
export PATH=$PATH:/home/uusama/mysql/bin
1234

注意事项:

生效时间:使用相同的用户打开新的终端时生效,或者手动source ~/.bash_profile生效
生效期限:永久有效
生效范围:仅对当前用户有效
如果没有~/.bash_profile文件,则可以编辑~/.profile文件或者新建一个

4.方式4

该方法是修改系统配置,需要管理员权限(如root)或者对该文件的写入权限:

# 如果/etc/bashrc文件不可编辑,需要修改为可编辑
chmod -v u+w /etc/bashrc

vim /etc/bashrc

# 在最后一行加上
export PATH=$PATH:/home/uusama/mysql/bin
1234567

注意事项:

生效时间:新开终端生效,或者手动source /etc/bashrc生效
生效期限:永久有效
生效范围:对所有用户有效

5.方式5

该方法修改系统配置,需要管理员权限或者对该文件的写入权限,和vim /etc/bashrc类似:

# 如果/etc/profile文件不可编辑,需要修改为可编辑
chmod -v u+w /etc/profile

vim /etc/profile

# 在最后一行加上
export PATH=$PATH:/home/uusama/mysql/bin
1234567

注意事项:

生效时间:新开终端生效,或者手动source /etc/profile生效
生效期限:永久有效
生效范围:对所有用户有效

6.方式6

该方法是修改系统环境配置文件,需要管理员权限或者对该文件的写入权限:

# 如果/etc/environment文件不可编辑,需要修改为可编辑
chmod -v u+w /etc/environment

vim /etc/profile

# 在最后一行加上
export PATH=$PATH:/home/uusama/mysql/bin
1234567

注意事项:

生效时间:新开终端生效,或者手动source /etc/environment生效
生效期限:永久有效
生效范围:对所有用户有效

查看,关闭防火墙

ufw status/enabel/disable

ssh

http://t.csdn/M7md8

时间校正

1.运行tzselect,选择Asia(亚洲

2.选择China,然后选定北京时间

3.复制文件到本地时间内

sudo cp /usr/share/zoneinfo/Asia/Shanghai  /etc/localtime

定时任务

Ubuntu 默认安装并启动

当前用户直接使用命令编辑,root用户则在/etc/crontab下编辑

开,关,自启等等,crontab使用缩写
systemctl start/restart/stop/enabel... cron

#编辑任务,编辑好后自动刷新任务
crontab -e

#查看任务
crontab -l

#清空任务
crontab -r

任务编辑

任务中的路径必须是绝对路径

* * * * * 执行的用户 命令

*   *  *  *  *
分,时,天,月,周                     * * * * *:表示每天每分钟


# ┌───────────── minute (0 - 59)
# │ ┌───────────── hour (0 - 23)
# │ │ ┌───────────── day of the month (1 - 31)
# │ │ │ ┌───────────── month (1 - 12)
# │ │ │ │ ┌───────────── day of the week (0 - 6) (Sunday to Saturday;
# │ │ │ │ │                                   7 is also Sunday on some systems)
# │ │ │ │ │
# │ │ │ │ │
# * * * * * command to execute

例:

定时执行python程序

执行python程序必须写python解释器和文件的全路径,否则无法执行

或者用shell脚本间接执行python程序,此时可以不用绝对路径

每天14点正时执行程序

0 14 * * * /usr/bin/python3 /root/pyCode/Crontab_test.py >> /tmp/python_cron.log 2>&1

2>&1的意思是把异常信息也输出到标准输出( 2表示错误,2>表示错误输出,&表示等同于,1表示正确)
因此如果运行出错也会把错误输出到之前定义的log中。

更多推荐

Linux基础知识大全(持续更新)

本文发布于:2023-06-14 04:49:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1440101.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:基础知识   大全   Linux

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!