Bootstrap

Linux知识点+基础命令

目录

1.什么是Shell

2.内部命令和外部命令

3.命令的执行过程

4.命令行帮助命令

5.常用命令

1.pwd

2.ls 

(1)常用选项

(2)通配符 (重点)

3.别名(alias)

4.du(disk usage)

 5. 目录操作

   1.mkdir

   2.touch

            3.cp

            4.mv

    5.rm 

6.创建链接文件-ln(重点)

7.查找命令 

(1)查找命令在系统中位置:(which、whereis)

(2)查找文件:(locate、find   重点!!!)

​1. locate

2.find 

          (3)标准输入输出


1.什么是Shell

注意:

  1. Shell作为用户与内核之间的接口,允许用户通过输入命令来操作计算机。在Linux系统中,Shell通常指的是命令行界面,它是一个命令解释器,将人类的高级语言翻译成机器语言。

  2. Shell的核心功能是解释和执行用户输入的命令。这些命令可以是内置的,也可以是外部程序。Shell还支持编程,允许用户编写脚本来自动化复杂的任务,如系统管理、文件操作和进程控制。这种脚本称为Shell脚本,它是一系列命令的集合,可以被Shell解释并执行。

  3. Bash 是Linux系统中默认使用的Shell程序,文件位于:/bin/bash

2.内部命令和外部命令

内部命令:

1.存放在内存中,属于shell的一部分 2.没有单独的文件夹存放 3.只要执行shell直接载入到内存,直接使用

外部命令:

1.存放硬盘中,有单独的文件夹存放 2.必须知道对应的文件的位置,shell加载后才可以执行

注意:

1.使用一个程序,必须向系统描述清楚这个程序文件的具体位置(文件路径)

2.命令的帮助help(info也可以查看相关的帮助信息)

1: help +命令 用来查看内部命令 2: 命令 --help 用来查看外部命令

3:man共有9个章节,man 1 不带数字默认1:是命令的基本用法;man 5 文件 的格式

 3.type用来区分内外部命令 : echo:是内部命令也是外部命令的

4.外部命令:ls

 5.注意使用别名的外部命令ls目录是蓝色,使用绝对路径目录是初始颜色

6.显示当前shell

7.外部命令存放在$PATH(环境变量)中

[root@localhost ~]# echo $PATH   //输出环境变量
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin   
//外部命令都存放在这五个文件中,会从前一个一个按顺序查找,找到立即停止,找不到报无命令
注意:hash是哈希表,只要

3.命令的执行过程

别名

1.运行一个命令的时候先判断是内部还是外部,如果是内部直接执行;

2.如果是外部命令先看是否有缓存,有直接去缓存的路径下找命令,找到直接执行,找不到直接报错

3.没有缓存去规定的路径下查找 ,找到执行、找不到报错 

注意:别名>内部>hash>外部命令(绝对路径)先查找别名再内部命令,缓存、最后外部

 绝对路径不走缓存!!

[root@localhost ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
重点注意:如果要升级2.0版本尽量把文件放到前面去,因为是从前向后查找的,找到立即停止
[root@localhost ~]# free -h   //free 命令显示系统内存的使用情况,包括物理内存、交换内存(swap)和内核缓冲区内存。
              total        used        free      shared   buff/cache   available
Mem:           3.7G        818M        2.2G         25M        666M        2.6G
Swap:          8.0G          0B        8.0G
注意:清理缓存buff/cache命令:牺牲速度换取空间  

命令:其实就是程序

1.命令是执行特殊任务的

2.命令是一个文件 里面存储了代码

3.命令行使用的格式命令字 空格[选项] 空格 [参数]

注意: 重点: 命令行之间一定要使用空格(如果没空格会认为是一个参数)!区分区分大小写

4.命令行帮助命令

命令:ctrl + l 作用:清屏

tab补全,如果命令,文件路径唯一直接补全,如果不唯一,按两次tab显示符合条件命令或文件

上下键:回看使用过的命令

ctrl+r:搜索使用过的命令

ctrl +c 停止运行中的命令 结束命令

ctrl +u 清空到行首

ctrl +k 清空到行尾

5.常用命令

1.pwd

作用:查看当前所在的目录路径/位置

2.ls 

作用:用于显示目录中的文件信息

格式:ls   [选项]  [文件\目录]

  • -l 已长格式显示文件和目录列表 ll=ls -l

  • -a 显示全部包括隐藏文件

  • -A 显示全部文件或隐藏文件,但不包括 . 和..

  • -d 仅列出目录本身,而不是列出目录内的文件数据

  • -h 友好显示文件大小(human,人性化)

  • -R 递归显示该目录及该目录的子目录下的所有内容

  • -t 已时间顺序显示

  • -r 倒序显示

  • --color 显示颜色

  • -S 以文件容量大小排序

(1)常用选项

ls -a

ls - l(长格式显示:详细属性)

ls -i 显示文件的inode号

ls -ld :    -d是仅列出目录本身,不列出目录下的文件

ll -h

ls -R    //递归显示

ls -rt   //r:倒序    t:时间

注意:生产环境中慎重直接使用,文件量过大会直接死机(有的服务器上的文件是千万级别)

(2)通配符 (重点)
符号效果
匹配一个字符 f?.txt
*匹配所有非隐藏的字符无论多长多短,但不匹配 "." 开头的文件,即隐藏文件
{1..10}1到10
{a..z}a b c ...z
{A..Z}A B C .....Z
[123]([此处括号里值代表一个字符])取其中之一有就显示没有也无所谓
[a-z]单个小写字母范围需要注意
[0-9]单个数字匹配数字范围(0123456789)
\转义符,表示原来的意思
[[:lower:]]小写字母表示 a-z
[[:upper:]]大写字母表示 A-Z
[^zhou]匹配列表中的所有字符以外的字符
[[:digit:]]任意数字,相当于[0-9]
[[:alpha:]]任意字母

3.别名(alias)

临时修改

  • alias 命令别名=’命令‘

  • unalias  别名命令       //删除别名

  • \加别名命令 (显示原始命令)

永久修改

  • 在/etc/.profile和/etc/bashrc会影响全部用户

  • ./.bashrc只影响当前用户

    [root@localhost ~]# alias  myvim='vim /etc/sysconfig/network-scripts/ifcfg-ens33'
    [root@localhost ~]# myvim //用于别名
    [root@localhost ~]# alias  myvim=vim /etc/sysconfig/network-scripts/ifcfg-ens33
    -bash: alias: /etc/sysconfig/network-scripts/ifcfg-ens33: 未找到   //不加单引号会不识别
    [root@localhost ~]# unalias myvim   //取消别名
    
    
    [root@localhost ~]# ls     
    a  anaconda-ks.cfg  initial-setup-ks.cfg  公共  模板  视频  图片  文档  下载  音乐  桌面
    [root@localhost ~]# \ls         \加别名命令 (显示原始命令)
    a  anaconda-ks.cfg  initial-setup-ks.cfg  公共	模板  视频  图片  文档	下载  音乐  桌面
    [root@localhost ~]# alias ls='ls --color=auto'
    

    4.du(disk usage)

 作用:查看当前所在文件夹占用了磁盘的多少单元块。默认1单元块为4K, 不满4K 按4k算。

  格式:du [选项]  [文件或者目录]

选项说明
-a统计磁盘空间占用时包括所有的文件,而不仅仅只统计目录
-h以更人性化的方式(默认以KB计数,但不显示单位)显示出统计结果
-s(--summarize)只统计所占用空间总的(Summary)大小,而不是统计每个子目录、文件的大小
 -d   n最大显示到第n层
--exclude不计入统计

注意:

1.as不能同时使用

 2.ls -l与du的区别 

3. -d 显示到第几层级 

4. --exclude=“通配符”   不计入统计

 5. 目录操作

   1.mkdir

    格式:mkdir [选项]  文件夹名

    选项: -p 递归建立文件夹             -v 显示建立过程

2.touch

格式:touch  文件名

作用:1.新建空文件(当文件名不存在)     2.刷新文件的时间(当文件名已存在刷新文件的时间)

每个文件都有三个时间戳:

  1. access time 访问时间,atime,读取文件内容

  2. modify time 修改时间,mtime,改变文件内容(数据)

  3. change time 改变时间,ctime,元数据发生改变(元数据 文件大小 权限 )inode号改变

3.cp

cp(copy)备份

1.cp [选项]… 源文件 目标 相当改名复制 文件夹 文件相当于 改名字另存为

2.cp [选项]... 源文件... 文件夹 多个源 文件只能复制到文件夹

选项说明
-f覆盖目标同名文件或目录时不进行提醒,直接强制复制
-i覆盖目标同名文件或目录时提醒用户确认
-p复制时保持源文件的权限、属主及时间标记等属性不变
-r复制目录时必须使用此选项,表示递归复制所有文件及子目录
-a完整保留所有的信息
-v可视化
-u相当于增备,差异备份(只对文件夹起作用)

cp -u 在进行备份操作时非常有用,可以确保只复制更新过的文件,节省时间和存储空间

4.mv

格式:mv  [选项]   原文件或文件夹      目标文件或目录

作用:路径改变式移动   或者  路径不变是改名

参数:

  • -f:强制覆盖,如果目标文件已经存在,则不询问,直接强制覆盖;

  • -i:交互移动,如果目标文件已经存在,则询问用户是否覆盖(默认选项);

  • -n:如果目标文件已经存在,则不会覆盖移动,而且不询问用户;

  • -v:显示文件或目录的移动过程;

5.rm 

 格式: rm  [选项] 要删除的文件或者文件夹

 作用:删除文件或者文件夹

参数:

  • -f、强制

  • -i、交互

  • -r 递归(删除目录需要)

注意:特殊文件

6.创建链接文件-ln(重点)

硬链接:   ln  源文件的路径  目标文件的路径(**只能对文件创建硬链接,不能对文件夹**)

软链接:   ln  -s   源文件的路径  目标路径/(**对文件/文件夹都可以创建软链接**

硬链接:相当于文件的小名,inode号不变,在系统中多了一种找到它的方法,只能对文件使用,无法对文件夹使用。

软链接:快捷方式:大小是绝对路径的长度

系统中找文件是根据inode号查找,删文件硬链接的个数一定为0

对比项硬链接软链接
本质本质是同一个文件本质不是同一个文件
inode(身份证号)相同不同
连接数创建新的硬链接,链接数会增加,删除硬链接,链接数减少删除,新建都不会改变
文件夹不支持支持
删除源文件只是链接数减一,但链接文件的访问不受影响无法访问连接文件
文件类型和源文件相同链接文件,和源文件无关
文件大小和源文件相同(指向硬盘上的同一个文件)源文件的路径的长度

 硬链接:

、、、Phyton
[root@localhost data]# cp /etc/passwd  /opt/paswd
[root@localhost data]# ls  -i   /etc/passwd
35085303 /etc/passwd
[root@localhost data]# ls -i /opt/paswd     //复制会产生新的文件,所有inode号不一样
68863943 /opt/paswd
[root@localhost data]# cd /opt
[root@localhost opt]# ls
paswd  
[root@localhost opt]# ln /opt/paswd  /opt/abc //给/opt/paswd创建硬链接到/opt目录下改名abc
[root@localhost opt]# ll -i  //查看inode号
总用量 8
68863943 -rw-r--r--. 2 root root 2316 12月 29 15:18 abc
68863943 -rw-r--r--. 2 root root 2316 12月 29 15:18 paswd 
//可以看出硬链接inode号和源文件的inode号是一样的
重点:文件是否删除是看文件的硬链接个数是否为0
、、、Phyton

软链接:(难点)

[root@localhost opt]# ln -s /opt/passwd /mnt/soft    给/opt/passwd文件设置软链接  到/mnt/下并改名为soft
[root@localhost opt]# ll /mnt/
总用量 0
lrwxrwxrwx. 1 root root 11 12月 23 16:55 soft -> /opt/passwd 
//可以看出soft指向的就是源文件,软链接文件的大小就是源文件绝对路径的字符数量:/opt/passwd =11
[root@localhost opt]# cd /mnt
[root@localhost mnt]# cd soft
[root@localhost soft]# ls   //查看软链接中是否有文件
[root@localhost soft]# pwd  //查看当前所处的位置
/mnt/soft                 //当前目录下所处的位置
[root@localhost soft]# pwd -P   //加上-P的意思就是真实所在的位置
/opt/passwd      //源文件所处的真实位置

7.查找命令 

(1)查找命令在系统中位置:(which、whereis)

​    1.which    常用命令   :只找具体的命令 只在$PATH路径中找

​    2.whereis  常用命令 包括一些相关命令的文件

   3.wc 统计

 格式:wc  [参数]   [文本]

 作用:用以指定文本的行数、字数、字节数

参数:wc  -l   只统计行数    wc   -w  只统计单词      wc  -c  只统计字符数

(2)查找文件:(locate、find   重点!!!)
​1. locate

作用:用来查找经常不用的文件   

`locate` 命令是通过搜索一个预先建立好的数据库(通常是由 `updatedb` 命令创建和更新的)来查找文件和目录。    优点:快              缺点:不是实时

2.find 

  1.命令的特点:

-   精确查找
-   实时查找
-   支持查找条件多

​  2. find命令的格式:

find  [查找范围]   [选项]  [条件]  [处理动作]

[查找范围]:指具体目标路径;不指定为默认为当前目录
[查找条件]:描述你需要找的文件的一些特征
[处理动作]:默认输出至屏幕,常用的删除和移动
 -print:默认的处理动作,显示至屏幕
-ls:类似于对查找到的文件执行"ls -dils"命令格式输出
-fls file:查找到的所有文件的长格式信息保存至指定文件中,相当于 -ls > file
-delete:删除查找到的文件,慎用!
-ok 处理动作   {} \; 对查找到的每个文件执行由处理命令指定的命令,对于每个文件执行命令之前,都会交互式要求用户确认
-exec  处理动作  {} \; 对查找到的每个文件执行由处理命令 指定的命令{}: 用于引用查找到的文件名称自身

注意:找到/app文件夹下30天以上大于1G 以log 结尾的普通文件  移动到/opt文件夹下或者删除

            find  /app  -mtime +30   -size +1G   -name "*log"  -type f  -exec mv {}   /opt  \;

2.1  参数替换:xargs

由于很多命令不支持管道|来传递参数,xargs用于产生某个命令的参数,xargs 可以读入 stdin 的数据,并且以空格符或回车符将 stdin 的数据分隔成为参数

另外,许多命令不能接受过多参数,命令执行可能会失败,xargs 可以解决

注意:文件名或者是其他意义的名词内含有空格符的情况

单独使用xargs是将键盘上的输入输出在屏幕上

3.常用的选项:

-name按照名称查找文件 -iname 不区分大小写查找
-type按文件的类型查找
-user按照文件的主人查找
-size按照文件的大小查找文件 +大于 -小于 G M k
-inum按照文件inode号查找
-mtime按时间查找 atime mtime ctime +30 大于30天(实际是29天)
-perm按照文件权限查找
-maxdepth n最多只找到第n层
-mindepth n最少找到第n层

1.-name文件的名字(通配符表示或者固定的名字)

找到boot文件夹下以v开头的所有文件。

2.**-type:类型**

  七种类型:1.f 普通文件  2.d  目录  3.l  链接  

​   4.c  字符文件  5.b  块设备 6.s  套接字  7.p 管道

(1)f  普通文件

(2)d 目录文件

(3)l 链接文件

(4) c 字符文件

(5)b 块设备文件

(6)s 套接字文件

(7)p   管道文件

3.**-size:大小**

​    1.根据文件大小写来查找:常用单位:M,G,k

​     以6k为例:

​     -size  6k 表示(5k,6k]

​     -size  +6k 表示(6k,∞)     

​     -size    -6k 表示 [0,5k]            

​    -size 按大小查找  如果数字前面是减号或者不加 范围是需要计算的   

2. 根据时间戳

   a代表 “access”,即访问时间

   m代表 “modify”,即修改时间

    c代表 “change”,即状态改变时间

   以“天:time”为单位:-[acm]time

   #以“天”为单位

   表示[#,#+1)    如#是 3        3 到 4天

   +#表示[#+1,∞]   如#是 3    代表 4天以上       

    -#表示[0,#)    如#是 3        3天以内   

4.-user 用户名

find 范围(不写默认找当前文件夹) 选项 条件 处理动作

5.-perm文件的权限

6.-inum:inode号

7.-maxdepth n

8.-mindepth n

(3)使用find命令实现多个查找条件

1.逻辑运算符: “-a” 表示 而且 (and) "-o"表示或者(or)

2.逻辑运算中优先级的问题:

3.管道符 l

A命令的执行结果通过管道符|传给 B命令 A命令的结果对于 B命令而言就是处理对象

4.注意:并不是所有命令都可以使用管道符

处理动作:

-print:默认的处理动作,显示至屏幕
-ls:类似于对查找到的文件执行"ls -dils"命令格式输出
-fls file:查找到的所有文件的长格式信息保存至指定文件中,相当于 -ls > file
-delete:删除查找到的文件,慎用!
-ok COMMAND {} \; 对查找到的每个文件执行由COMMAND指定的命令,对于每个文件执行命令之前,都会交互式要求用户确认
-exec COMMAND {} \; 对查找到的每个文件执行由COMMAND指定的命令{}: 用于引用查找到的文件名称自身

 每次找到文件要确认是否移到/mnt/ 路径下

  

(3)标准输入输出

  • 标准输入(文件描述符为 0)默认是从键盘获取数据,用于向程序提供输入信息。
  • 标准输出(文件描述符为 1)通常是将程序的正常输出结果显示在终端屏幕上。
  • 标准错误输出(文件描述符为 2)用于输出程序运行过程中的错误信息,也是默认显示在终端屏幕上,但与标准输出是分开的通道。

  

;