linux命令入门

为什么要学Linux命令

  • Linux从诞生就是黑屏界面,所有操作,倚靠命令完成,如磁盘读写、文件操作、网络管理等
  • 企业中,服务器的维护工作都是ssh客户端完成,没有图形界面
  • 程序员想要管理linux服务器,必须学习常用命令

Linux命令学习方法

  • 熟能生巧,多敲打,多练习即可
  • 不可能一下子掌握所有命令用法,学会使用搜索引擎查阅命令资料

兄弟们,你们能做到如下,说明运维学的不差,问题不大!学习方法肯定是对的!就差熟练度

  • 于超老师,上课讲的东西,能听懂,跟着操作,能做对!(第一次,见识,练习,基本掌握),记不住
  • 反复练习,反复敲打,一个命令,敲打500次,才能很熟练
  • 运维命令,用法,越学越多,怕记不住,会忘(很正常,大家都这样,写笔记,整理你学过的东西!复习,看你得笔记!而不是超哥得笔记。
  • 10年了,10天,就觉得多??闹呢?

当年超哥在一家美资企业,一位台湾老程序员送我的一本书。。。

可能是看我骨骼惊奇吧!!

打开终端,输入命令

image-20220104175259752

终端就是一个可以让你操作的地方,你打开终端,就可以输入指令,发给操作系统。

image-20220104180116480

本节操作,告知各位,学命令的重要性!

不懂命令,你都不知道如何下手,!!先听课即可!

什么是linux命令

就是你在linux系统里,输入linux系统才能识别的一些指令,你输入的一些固定存在的单词字母,就是命令。

image-20220104180341275


前面咱们已经成功安装了Linux系统--ubuntu 22.04,那么现在跟着超哥奔向Linux命令行的世界。

Linux命令格式

1.一般情况下,【参数】是可选的,一些情况下【文件或路径】也是可选的

2.参数 , 同一个命令,跟上不同的参数执行不同的功能

3.执行linux命令,添加参数的目的是让命令更加贴切实际工作的需要!

4.linux命令,参数之间,普遍应该用一个或多个空格分割!

1.完整的命令格式
2.没有参数,没有对象
3.没有参数,有对象

Linux命令提示符

命令提示符
[py@pylinux ~]$            普通用户py,登陆后

[root@pylinux ~]#        超级用户root,登录后

root代表当前登录的用户

@ 分隔符

pylinux 主机名

~  当前的登录的位置,此时是家目录

# 超级用户身份提示符
$ 普通用户身份提示符

美化命令提示符

[yuchao-linux-242 root /opt]#tail -2 /etc/profile
# 美化PS1显示
export PS1='\[\033[01;35m\][\[\033[01;32m\]\h\[\033[01;31m\] \u \w\[\033[31m\]\[\033[01;35m\]]\[\033[01;36m\]\$\[\033[00m\]'

[yuchao-linux-242 root /opt]#source /etc/profile

image-20241213174236902

Tab命令补全

image-20220104200252888

linux终端里,系统为了让你更省心,不用记忆那么多内容,可以让你输入tab键,可以快速列出你想要的内容,你只需要输入一个命令的开头即可,它一般可以补全linux命令,以及文件路径。

image-20220104181435847

[yuchao@localhost Desktop]$ ls
ls        lsblk     lscpu     lshw      lsipc     lslogins  lsmd      lsmod     lsof      lsscsi    lsusb     
lsattr    lscgroup  lsdiff    lsinitrd  lslocks   lsmcli    lsmem     lsns      lspci     lssubsys  lsusb.py

Linux命令初体验

su命令

用于切换系统不同的用户。

如windows的用户切换,从老王用户,切换到小李用户。

image-20220104181947377

linux用户的切换,并且我们直接切换到超级用户,切换到皇帝身份。

# 短横线 -   表示切换用户且加载该用户的环境变量,且进入该用户家目录
[yuchao@localhost Desktop]$ 
[yuchao@localhost Desktop]$ su - root
Password: 
[root@localhost ~]# 

# 创建普通用户
useradd timo
passwd timo # 123123

# root切换普通用户,不需要密码,反之需要对方密码,root特权!!
# man手册,--help,和su切换用户,sudo 切换到root用户几个命令学习。

uname命令

在使用uname命令时,一般会固定搭配上-a参数来完整地查看当前系统的内核名称、主机名、内核发行版本、节点名、系统时间、硬件名称、硬件平台、处理器类型以及操作系统名称等信息。

1.作用:
    显示系统信息
2.语法:
    uname -参数

# 
[root@localhost opt]# uname -a
Linux localhost.localdomain 3.10.0-862.el7.x86_64 #1 SMP Fri Apr 20 16:44:24 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

# 解释
Linux  系统名称

localhost.localdomain 主机名
 3.10.0-862.el7.x86_64 内核版本号
     3 是主版本号,重大变化,才会变动
     10 是次版本号,新加功能后版本数字变化
     0 表示修改次数
     862表示编译次数
     el7 表示是7代版本
     x86_64 表示系统是64位的

发布时间
GNU/Linux是操作系统名称,开源计划

ls命令

功能:平铺显示目录下的文件列表

语法:

1.完整的命令格式
ls -l /

2.没有参数,没有对象,其实默认有一个点
ls

3.没有参数,有对象
ls /

关于路径

linux命令操作,关于要操作不同的文件,主要就分,绝对路径、相对路径

关于参数(选项)

ls -l  # 使用较长格式列出信息
ls -h  #-h, --human-readable          与-l 一起,以易于阅读的格式输出文件大小,kb、mb、gb
ls -a  # 显示隐藏文件 ,linux下以.开头的文件,表示是隐藏的

file命令,验证文件类型

单位换算

# 1TB = 1024GB
# 1GB = 1024MB
# 1MB = 1024KB
# 1KB(千字节) = 1024B(字节)

ubuntu安装openssh

# 1.确保机器打开22,sshd服务!这个软件是提供远程管理的!需要安装
ss --help 

# -tunlp 参数组合 -t -u -n -l -p
ss -tunlp # 检查22端口

systemctl status ssh # 检查系统是否运行ssh程序


# 以root身份执行命令
sudo apt install openssh-server -y

# 直接查看服务状态,启动服务
systemctl status ssh

# 看端口,看进程,看服务
ss -tunlp


# 远程访问试试,登录
# 安装xshell工具,下一步安装

image-20241213212851100

pwd命令

功能、语法
pwd(Print Working Directory) 显示当前目录

cd命令

主要功能:cd全称change directory,切换目录(从一个目录跳转到另外一个目录)

基本语法:
cd 涉及文件操作了,那就存在绝对,相对路径了


# 练习
[yuchao@localhost ~]$ 
[yuchao@localhost ~]$ pwd
/home/yuchao
[yuchao@localhost ~]$ cd /opt
[yuchao@localhost opt]$ ls
rh
[yuchao@localhost opt]$ 
[yuchao@localhost opt]$ cd ../home/yuchao
[yuchao@localhost ~]$ 
[yuchao@localhost ~]$ 
[yuchao@localhost ~]$ pwd
/home/yuchao

[yuchao@localhost ~]$ cd -
/opt
[yuchao@localhost opt]$ 
[yuchao@localhost opt]$ 
[yuchao@localhost opt]$ cd ~
[yuchao@localhost ~]$ 
[yuchao@localhost ~]$

特殊目录

- 上一次目录 cd -  
~ 当前登录的用户家目录 cd ~
. 当前位置
.. 上一层位置

# 小节
pwd
sudo
cat
.
..
-
~
cd

clear

clear 指令用来清除终端屏幕,在终端中通过快捷键 Ctrl+L 清除屏幕

shutdown

shutdown 以一种安全的方式关闭系统。
-r
    重启。
-h
    停机。

# 练习
[root@linux ~]# shutdown –h now   #关机 

[root@linux ~]# shutdown –h 23:00   #晚上11点关机

[root@linux ~]# shutdown –r now   #重启

[root@linux ~]# shutdown –r +30 'reboot now'   #30分钟后重启,并且提示reboot now

# poweroff
# unix linux GNU

man命令

当你忘记了某个命令怎么用,以及参数有哪些,都是什么作用,该怎么查?

查于超老师的笔记?还是咋办?

man 命令,查看linux命令的帮助手册,以后慢慢看,且是英文的,知道这个方式即可,可以复制出来,翻译一下也行。

学习阶段,一定要反复,大量练习,确保你真的学会。
面试,提问,回答不出来。1.不会 2.不熟

工作时候,谁关心你怎么做出来的?查资料,查笔记,都行。
有自己的笔记库,更省事。
临时去百度查,浪费大量时间。

history

history 命令可以用来显示曾执行过的命令,且显示条目有数量限制,默认是1000个,可修改,超哥以后再说

[yuchao@localhost ~]$ echo $HISTSIZE
1000


# 显示所有历史记录
[yuchao@localhost ~]$ history 

# 显示最后2条
[yuchao@localhost ~]$ history 2
    2  cd
    3  history 2

# 清空历史
[root@redhat ~]# history -c    #清除历史记录

w命令

image-20220308194534805

小节

  • clear
  • shutdown
  • w
  • history
  • man

hostnamectl命令

记忆方式:hostname + control 主机名控制的意思
作用:它是用来修改主机名称

语法
[root@10 ~]# hostnamectl --help
hostnamectl [OPTIONS...] COMMAND ...

Query or change system hostname.

  -h --help              Show this help
     --version           Show package version
     --no-ask-password   Do not prompt for password
  -H --host=[USER@]HOST  Operate on remote host
  -M --machine=CONTAINER Operate on local container
     --transient         Only set transient hostname
     --static            Only set static hostname
     --pretty            Only set pretty hostname

Commands:
  status                 Show current hostname settings
  set-hostname NAME      Set system hostname
  set-icon-name NAME     Set icon name for host
  set-chassis NAME       Set chassis type for host
  set-deployment NAME    Set deployment environment for host
  set-location NAME      Set location for host

centos7系统里有3类主机名

 --transient         Only set transient hostname
 --static            Only set static hostname
 --pretty            Only set pretty hostname
  • 静态主机名,static,关机后,重启后,名字依然存在,因为信息写入了/etc/hostname文件,每次开机都会再读取该文件内容。
  • 临时主机名,transient,关机,重启后,你设置的主机名失效。
  • 优雅主机名,pretty,可以让主机名显示更好看,如一些特殊符号。

如何查看主机名,更改主机名

(注意切换到root用户)

1.查看主机名

# 可以看到静态主机名
# 临时主机名,是系统默认读取的网络信息
# 还有系统平台信息,主机版本信息,内核版本


[root@10 ~]# 
[root@10 ~]# hostnamectl 
   Static hostname: localhost.localdomain
Transient hostname: 10.96.0.145
         Icon name: computer-vm
           Chassis: vm
        Machine ID: 340cf8a8efa8496494a0e9d7388e5f1f
           Boot ID: 8bd702c0ae3b42248b789515e52def50
    Virtualization: vmware
  Operating System: CentOS Linux 7 (Core)
       CPE OS Name: cpe:/o:centos:centos:7
            Kernel: Linux 3.10

2.设置静态主机名(基本用这个),永久生效

设置了永久主机名后,发现临时名字都没了

[root@10 ~]# hostnamectl set-hostname linux02.yuchaoit.cn
[root@10 ~]# 
[root@10 ~]# hostnamectl 
   Static hostname: linux02.yuchaoit.cn
         Icon name: computer-vm
           Chassis: vm
        Machine ID: 340cf8a8efa8496494a0e9d7388e5f1f
           Boot ID: 0c2d37e952104524a0f1e58fdf33c2b5
    Virtualization: vmware
  Operating System: CentOS Linux 7 (Core)
       CPE OS Name: cpe:/o:centos:centos:7
            Kernel: Linux 3.10.0-862.el7.x86_64
      Architecture: x86-64
[root@10 ~]#

3.配置优雅主机名

用在什么情况下?

当你的主机名,有特殊字符的话,主机名会自动修改你的格式

[root@10 ~]# hostnamectl set-hostname linux02.yuchaoit.cn
[root@10 ~]# 
[root@10 ~]# hostnamectl 
   Static hostname: linux02.yuchaoit.cn
         Icon name: computer-vm
           Chassis: vm
        Machine ID: 340cf8a8efa8496494a0e9d7388e5f1f
           Boot ID: 0c2d37e952104524a0f1e58fdf33c2b5
    Virtualization: vmware
  Operating System: CentOS Linux 7 (Core)
       CPE OS Name: cpe:/o:centos:centos:7
            Kernel: Linux 3.10.0-862.el7.x86_64
      Architecture: x86-64
[root@10 ~]# 
[root@10 ~]# hostnamectl --pretty set-hostname "yuchao's linux01 server"
[root@10 ~]# 
[root@10 ~]# hostnamectl 
   Static hostname: linux02.yuchaoit.cn
   Pretty hostname: yuchao's linux01 server
         Icon name: computer-vm
           Chassis: vm
        Machine ID: 340cf8a8efa8496494a0e9d7388e5f1f
           Boot ID: 0c2d37e952104524a0f1e58fdf33c2b5
    Virtualization: vmware
  Operating System: CentOS Linux 7 (Core)
       CPE OS Name: cpe:/o:centos:centos:7
            Kernel: Linux 3.10.0-862.el7.x86_64
      Architecture: x86-64

[root@10 ~]# hostnamectl --pretty
yuchao's linux01 server
[root@10 ~]# 
[root@10 ~]# hostnamectl --static
linux02.yuchaoit.cn


# 如果你设置了不规则主机名,系统会去除特殊符号
[root@10 ~]# hostnamectl set-hostname "yuchao's linux01 server"
[root@10 ~]# 
[root@10 ~]# 
[root@10 ~]# hostnamectl 
   Static hostname: yuchaoslinux01server
   Pretty hostname: yuchao's linux01 server
         Icon name: computer-vm
           Chassis: vm
        Machine ID: 340cf8a8efa8496494a0e9d7388e5f1f
           Boot ID: 0c2d37e952104524a0f1e58fdf33c2b5
    Virtualization: vmware
  Operating System: CentOS Linux 7 (Core)
       CPE OS Name: cpe:/o:centos:centos:7
            Kernel: Linux 3.10.0-862.el7.x86_64
      Architecture: x86-64
[root@10 ~]#

Linux系统文件

/etc初始化系统重要文件,centos,redhat系列参考。

w

  • /etc/resolv.conf:Linux系统DNS客户端配置文件,域名,解析对应的ip地址,DNS解析,dns服务器,

    • 查电话,查询xx营业厅的电话,打114电话查询。114电话和地址对应的数据库
    • baidu.com > IP
    • yuchaoit.cn > IP
    • douyin.com > IP
    • dns劫持

      • 你得浏览器 > 期望访问正常的域名(电脑的dns服务器被恶意篡改) > 域名(解析成黑客的IP) >访问的错误的IP地址,看到恶意的假网站。
    • ```

      安装命令文本编辑器,vim编辑器

      sudo apt install vim -y

      编辑dns配置文件,清空,导致机器无法dns解析

      sudo vim /etc/resolv.conf

      以#开头的注解行,给咱们自己看的,帮助文档

      第一步,vim此时是命令模式,可以输入不同的命令,比如 按下 i,进入编辑模式

      按下i,进入插入模式

      第二步,按下esc键,退出编辑模式

      第三部,输入 :wq! 保存且退出vim ,,注意!用英文输入法!!!!!!!!

# 重新写入2个dns服务器地址,作为主备,防止单个故障。
114.114.114.114
114.114.115.115

# 2个知识点
- vim 基本用法
- dns配置文件 /etc/resolv.conf 如何用
- 
```

image-20241214171724051

ubuntu常用文件

在Ubuntu(基于Linux)中有许多常用的文件和文件类型,以下是一些介绍:

一、系统配置文件

  1. /etc/apt/sources.list
    • 这个文件用于配置软件包的源。Ubuntu通过软件包管理系统(APT - Advanced Package Tool)来安装、更新和删除软件。sources.list文件包含了软件仓库的位置信息,这些仓库存储了各种软件包。例如,默认情况下,它会包含Ubuntu官方仓库的地址,如deb http://archive.ubuntu.com/ubuntu/ focal main restricted(这里的focal是Ubuntu版本代号,不同版本会有所不同)。用户可以通过修改这个文件来添加其他可靠的软件源,比如一些第三方软件库,以获取更多软件选择,但需要注意添加的源的安全性和兼容性。
  2. /etc/fstab
    • 它是文件系统表(Filesystem Table),用于在系统启动时自动挂载文件系统。每一行代表一个要挂载的文件系统,格式一般为<设备名称> <挂载点> <文件系统类型> <挂载选项> <备份选项> <文件系统检查顺序>。例如,UUID = 12345 - 6789 - abcd - efgh / ext4 defaults 0 1,其中UUID是设备的唯一标识符,/是挂载点,ext4是文件系统类型,defaults是挂载选项,01分别是备份选项和文件系统检查顺序。这个文件的正确配置对于系统能够正确访问硬盘分区、网络存储等文件系统非常重要。
  3. /etc/hosts

    • 用于本地主机名解析。它将主机名映射到IP地址,在没有DNS(Domain Name System)服务或者需要本地自定义主机名解析时使用。例如,127.0.0.1 localhost这一行表示将localhost这个主机名映射到本地回环地址127.0.0.1。用户可以添加其他条目,如192.168.1.10 myserver,这样当在本地访问myserver这个主机名时,就会被解析到192.168.1.10这个IP地址。
  4. /etc/passwd

    • 存储用户账户信息。每一行代表一个用户,格式为<用户名>:<密码占位符>:<用户ID>:<组ID>:<用户描述信息>:<用户主目录>:<用户默认shell>。例如,root:x:0:0:root:/root:/bin/bash,其中root是用户名,x表示密码存储在/etc/shadow文件中(出于安全考虑,密码不直接存储在/etc/passwd中),0是用户ID和组ID(root用户的特殊ID),/root是用户主目录,/bin/bash是用户默认使用的shell。
  5. /etc/shadow

    • 用于存储用户密码的加密信息和密码过期策略等。这个文件只有root用户可以读取,以保证密码的安全性。每行的格式为<用户名>:<加密后的密码>:<最后一次修改时间>:<最小密码修改间隔>:<密码有效期>:<密码过期前警告天数>:<密码过期后宽限期>:<账号失效时间>:<保留字段>。例如,root:$6$aBcdefGh$a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6:18674:0:99999:7:::,其中$6$aBcdefGh$a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6是经过加密的密码部分。
  6. /etc/group

    • 存储用户组的信息。每行格式为<组名>:<组密码占位符>:<组ID>:<组成员列表>。例如,sudo:x:27:user1,user2,表示sudo组的组ID是27,成员有user1user2。用户组用于管理用户对系统资源的访问权限,方便进行权限分配。

二、日志文件

  1. /var/log/syslog

    • 系统日志文件,记录了系统运行过程中的各种信息,包括内核消息、系统服务启动和停止信息、设备驱动程序的消息等。例如,当一个新的USB设备插入时,内核会在这个文件中记录设备的识别信息,如Jan 1 00:00:01 mycomputer kernel: [12345.67890] usb 1 - 1: new full - speed USB device number 2 using xhci_hcd,这里记录了USB设备在xhci_hcd驱动下被识别的时间和相关信息。

    • 统计文件行数
      wc -l /var/log/syslog # 统计文件行数
      
      cat -n /var/log/syslog # 不合适!因为它一次性把文件所有内容都打印出来!
      
  2. /var/log/auth.log
    • 主要记录用户认证相关的事件,如用户登录、sudo命令的使用等。当用户通过SSH登录系统时,会在这个文件中留下记录,像Jan 1 00:00:01 mycomputer sshd[1234]: Accepted password for user1 from 192.168.1.100 port 5000 ssh2,表示用户user1192.168.1.100通过SSH登录成功。这对于系统安全监控和审计非常有用。

三、可执行文件和脚本

  1. /bin/bash
    • bash(Bourne - Again SHell)是Ubuntu中最常用的命令行解释器。用户在终端中输入的命令就是由bash来解析和执行的。它提供了许多内置命令,如cd(用于切换目录)、ls(用于列出目录内容)等,同时也可以执行外部的可执行文件和脚本。例如,当用户在终端输入ls -l时,bash会解析这个命令,并调用系统中的ls程序来执行,并将-l参数传递给ls,以长格式列出文件和目录信息。
  2. /usr/bin/apt-get
    • 这是APT软件包管理工具的命令行程序,用于在终端中安装、更新和删除软件包。例如,apt - get update命令用于更新软件包列表,apt - get install package - name用于安装指定的软件包(如package - namevim,就会安装vim文本编辑器)。
  3. /usr/local/bin目录下的自定义脚本
    • 这个目录通常用于存放用户自己编写或安装的可执行脚本。比如,用户编写了一个名为backup.sh的备份脚本,将其放在/usr/local/bin目录下,并赋予执行权限(chmod +x /usr/local/bin/backup.sh)后,就可以在终端中直接执行backup.sh来进行备份操作。这个目录在系统升级时不会被覆盖,方便用户管理自己的工具和脚本。

Linux系统基础概念

提示:可以放大linux图形化终端的字体

ctrl   shift   +   放大字体
ctrl  -    缩小字体

image-20220107135032207

1.linux严格区分大小写

windows:不区分大小写,比如你创建文件夹,输入大写,小写,windows都认为是同一个。

linux严格区分大小写,文件夹的名字,大小写不同,就是不同的文件夹,文件也一样,因此我们后续对文件,文本操作,要注意大小写的区分处理。

image-20220107135032207

可以看到,仅有一个字母的大小写不同,也是3个文件夹。

2.文件扩展名

windows

Windows是依赖扩展名,区分不同的文件类型。比如


image-20220104113039579

.txt 是普通文本,一般是记事本这样的编辑器打开
.exe 是window下可以直接执行的文件,比如qq.exe 双击可以运行出qq登录器
.doc 是word文档

windows下修改文件名,是会修改文件类型的,会修改文件属性。

linux

mv命令 move单词

mv 旧文件名 新文件名   # 重命名

mv 文件  文件夹/ # 移动文件到xx文件夹下

而linux是大有不同,通过权限位标识来确定文件类型,我们在学习文件属性篇,重点再讲解,先记住如下概念。

  • linux不通过文件扩展名来识别文件类型,文件扩展名,仅仅就是让运维人员能够肉眼一眼,就知道它是什么类型,便于管理
    • 但其实是该文件类型在创建时已经定义好,文件名只是用于显示,不像windows下有实际意义。
    • 即使你修改linux的文件名,也不会修改文件的类型。
# 压缩,打包命令,一堆文件,合到一起

tar 各种参数用法

tar 
-c 打包
-f 制定归档文件名
-x 拆包


# 打包当前目录下所有文件,文件夹到归档文件中

tar -cf desktop-all.tar. ./*
# 请用file命令验证文件类型

# 拆包
tar -xf desktop 

# 不合理!尽可能的,给文件添加上对应的后缀,便于人类识别

image-20220104113943464


image-20220104114021021

扩展名小结

为了区分出文件类型,我们还是会给linux文件,添加上阅读性更好的文件扩展名字。

常见的有

  • 压缩文件

    • Linux 下常见的压缩文件名有 *.gz、*.bz2、*.zip、*.tar.gz、*.tar.bz2、*.tgz等。
    • 为什么压缩包一定要写扩展名呢?很简单,如果不写清楚扩展名,那么管理员不容易判断压缩包的格式,虽然有命令可以帮助判断,但是直观一点更加方便。
    • 就算没写扩展名,在 Linux 中一样可以解压缩,不影响使用。
  • 软件安装包

    • 如windows下的exe文件一样作用,linux也需要安装软件,也有软件包的格式。后面学习软件管理时重点讲解。
    • 如redhat系列的RPM包,所有的RPM包都是.rpm后缀格式。
  • 脚本文件
    • 如shell脚本,.sh
    • 如python脚本,.py
    • 如java的 .java
  • 网页相关的文件
    • .html
    • .jpg
    • .js
    • .css

这张图下展示了大多的linux后缀格式

image-20220104114901241

3.Linux一切皆文件

image-20220104135614494

使用linux,记住一句话,linux一切皆文件,linux上所有的内容,都以文件的形式保存。

比如我们可以通过访问某个路径下的文件内容,读取如网卡的信息,读取如U盘的信息。

以查看进程为例,进程指的是系统上运行的一个程序,如windows下的进程,这是一段程序,通过任务管理器,才能找到它的信息。

image-20220104135923206

linux读取进程信息,可以直接找到进程的文件

image-20220104161003471

linux普通文件/文件夹

普通文件,类似windows里的txt文件概念,可以直接写入内容,查看文件内容,这就是普通文件。

windows普通文件特点,一般可以这么操作的就称之为普通文件,包括了很多类型,如.txt .doc

  • 编辑器直接打开
  • 写入,修改,保存,查看内容

image-20220104161540042

linux普通文件,如何区分,我们知道没法通过后缀名直接判断

linux可执行文件

可执行文件,指的是,该文件,可以双击运行,产生一些执行任务,比如QQ安装包,批量处理脚本文件。

windows,肉眼可以通过不同的后缀,一般可以得知,是什么文件类型,如下是常见的可执行类型。

image-20220104162300660

linux,是否可执行,就不是后缀决定的,而依然是通过文件属性查看的。(这个属性,在你创建该文件时就决定了,以不同的linux命令决定)

linux文件夹

可以通过肉眼观察(前提是安装了图形化linux界面),蓝色的是文件夹,以及文件属性开头是d,表示目录。

文件夹用于管理一堆文件,以及子文件夹。

windows的文件夹就不多说了。

chmod 修改文件属性
chmod +x file

4.Linux的目录必须挂载后使用

挂载,mount,指的是给存储设备分配盘符,让我们能找到,使用存储设备(U盘,移动硬盘)

windows下的挂载,超哥的电脑里有好几块硬盘,C盘是固态硬盘,D,E两个盘是机械硬盘。

windows操作系统给硬盘加上了标记,我们通过C盘,盘符,即可找到C盘里的数据。

image-20220104172559463

linux里没有提供这样的字母,盘符。

而是

1.创建一个空文件夹,该文件夹有个名字,叫做挂载点(理解为windows下的盘符概念)

2.把设备和这个空文件夹做一个连接(这就叫做挂载),挂载是通过linux命令实现,后面讲。

图解linux挂载

image-20220104183304532

windows

  • 买硬盘
  • 分区
  • 格式化

linux

  • 买硬盘
  • 分区
  • 格式化
  • 挂载

挂载命令

mount  /dev/sda1 /mnt/chaoge_file

5.一切皆文件细节

linux/unix下的哲学核心思想是‘一切皆文件’。

“一切皆文件”,指的是,对所有文件(目录、字符设备、块设备、套接字、打印机、进程、线程、管道等)操作,读写都可用fopen()/fclose()/fwrite()/fread()等函数进行处理。屏蔽了硬件的区别,所有设备都抽象成文件,提供统一的接口给用户。虽然类型各不相同,但是对其提供的却是同一套操作界面。更进一步,对文件的操作也可以跨文件系统执行。

那么如何操作一个已经打开的文件?

文件描述符(file descriptor),简称fd。这里就使用到了“文件描述符”,它是一个对应某个已经打开的文件的索引(非负整数)。

文件类型

类型 简称 描述
普通文件 -,Normal File 如mp4、pdf、html log; 用户可以根据访问权限对普通文件进行查看、更改和删除,包括 纯文本文件(ASCII);二进制文件(binary);数据格式的文件(data);各种压缩文件.第一个属性为 [-]
目录文件 d,directory file /usr/ /home/ 目录文件包含了各自目录下的文件名和指向这些文件的指针,打开目录事实上就是打开目录文件,只要有访问权限,就可以随意访问这些目录下的文件。能用#cd命令进入的。第一个属性为[d],例如 [drwxrwxrwx]
硬链接 -,hard links 若一个inode号对应多个文件名,则称这些文件为硬链接。硬链接就是同一个文件使用了多个别名删除时,只会删除链接, 不会删除文件; 硬链接的局限性:1.不能引用自身文件系统以外的文件,即不能引用其他分区的文件;2.无法引用目录;
符号链接(软链接) l,symbolic link 若文件用户数据块中存放的内容是另一文件的路径名的指向,则该文件就是软连接,克服硬链接的局限性, 类似于快捷方式,使用与硬链接相同。
字符设备文件 c,char 文件一般隐藏在/dev目录下,在进行设备读取和外设交互时会被使用到 即串行端口的接口设备,例如键盘、鼠标等等。第一个属性为 [c]。 #/dev/tty的属性是 crw-rw-rw-,注意前面第一个字 c,这表示字符设备文件
块设备文件 b,block 存储数据以供系统存取的接口设备,简单而言就是硬盘。 # /dev/hda1 的属性是 brw-r—– ,注意前面的第一个字符是b,这表示块设备,比如硬盘,光驱等设备 系统中的所有设备要么是块设备文件,要么是字符设备文件,无一例外
FIFO管道文件 p,pipe 管道文件主要用于进程间通讯。FIFO解决多个程序同时存取一个文件所造成的错误。比如使用mkfifo命令可以创建一个FIFO文件,启用一个进程A从FIFO文件里读数据,启动进程B往FIFO里写数据,先进先出,随写随读。 # pipe
套接字 s,socket 以启动一个程序来监听客户端的要求,客户端就可以通过套接字来进行数据通信。用于进程间的网络通信,也可以用于本机之间的非网络通信,第一个属性为 [s],这些文件一般隐藏在/var/run目录下,证明着相关进程的存在

6.linux文件目录结构

Linux与windows区别

  • windows特点:E:\学习视频\高清视频\
  • Linux目录特点:/etc/hosts /root/data/yuchao.txt

Linux 系统目录结构基本特点:

1.Linux下一切从开始,根里面的第一层目录,叫做一级目录,然后依次二级目录。

2.Linux下面的目录是一个有层次的目录结构

3.在linux中每个目录可以挂载到不同的设备(磁盘)上

4.Linux 下设备不挂载不能使用,不挂载的设备相当于没门没窗户的监狱(进不去出不来),挂载相当于给设备创造了一个入口(挂载点,一般为目录)

操作系统目录分隔符

windows平台命令行目录分隔符

Linux平台命令行目录分隔符

Linux与Windows的目录结构比较

Linux首先是建立一个根"/"文件系统,所有的目录也都是由根目录衍生出来。

登录系统后,在当前命令窗口输入命令:

ls /

查看结果如下图:

在Linux底下,所有的文件与目录都是由根目录开始,是目录与文件的源头,然后一个个的分支下来,如同树枝状,因此称为这种目录配置为:目录树

目录树的特点是什么呢?

  • 目录树的起始点是根目录(/,root);
  • 每一个目录不止能使用本地的文件系统,也可以使用网络上的文件系统,可以利用NFS服务器挂载特定目录。
  • 每一个文件在此目录树中的文件名,包含完整路径都是独一无二的。

Linux目录挂载

挂载通常是将一个存储设备挂接到一个已经存在的目录上,访问这个目录就是访问该存储设备的内容。

对于Linux系统来说,一切接文件,所有文件都放在以根目录为起点的树形目录结构中,任何硬件设备也都是文件形式

如图所示,是U盘存储设备和Linux系统自己的文件系统结构,此时Linux想要使用U盘的硬件设备,必须将Linux本身的目录和硬件设备的文件目录合二为一,此过程就称之为挂载

挂载操作会隐藏原本Linux目录中的文件,因此选择Linux本身的目录,最好是新建空目录用于挂载
挂载之后,这个目录被称为挂载点

mount -l # 查看机器挂载点


# 查看光盘文件,一切皆文件 /dev/cdrom
mount /dev/cdrom /iso_data
umount /iso_data

此时U盘文件系统已经是Linux文件系统的一部分,访问/sdb-u文件夹,即是访问访问U盘系统中的文件夹。

linx的环境变量

同学们应该都会配置windows下的环境变量(PATH),都知道系统会按照PATH的设定,去每个PATH定义的目录下搜索可执行文件。

那么如何查看Linux下的PATH环境变量呢?

执行命令:
echo $PATH

变量,x=3 y=4 

如何取出变量的值,固定语法
echo ${PATH}


echo命令是有打印的意思
$符号后面跟上PATH,表示输出PATH的变量

PATH(一定是大写的)这个变量是由一堆目录组成,分隔符是":"号,而不同于windows的";"号。

image-20241214223647614

绝对路径与相对路径

Linux中非常重要的概念--路径,路径用来定位如何找到某个文件。

Linux下特别注意文件名/路径的写法,可以将所谓的路径(path)定义为绝对路径(absolute)和相对路径(relative)。这两种文件名/路径的写法依据是这样的:

  • 绝对路径:由根目录(/)为开始写起的文件名或者目录名称,如/home/yuchao/test.py
  • 相对路径:相对于目前路径的文件名写法。例如./home/yuchao/exam.py或../../home/yuchao/exam.py,简单来说只要开头不是/,就是属于相对路径,

因此你必须了解,相对路径是:以你当前所在路径的相对路径来表示的。

# 绝对路径
mkdir -p /a/b/c/

# 当前路径下,相对路径表示

mkdir ./a/b/c/
# 既然是相对路径,就是以你当前所处的位置,为相对
# 换算为绝对路径. /tmp/a/b/c

# 上一级目录的相对语法
mkdir ../a/b/c/


# /tmp 是linux临时目录,程序产生公开,临时数据,放到这里

例如你现在在/home 这个目录下,如要进入/var/log这个路径,如何写呢?

  1. cd /var/log (绝对路径)
  2. cd ../var/log(相对路径)

结果如图:

因为你在/home底下,因此你要回到上一层(../)之后,才能继续前往/var,特别注意:

  • . :代表当前的目录,也可以用./ 来表示,注意结尾的斜线,目录分隔符。
  • .. :代表上一层的目录,也可以用../来表示

图解绝对/相对路径

image-20220104182559992

Linux常见目录作用

  • /bin:bin是Binary的缩写, 这个目录存放着最经常使用的命令。

  • /boot:这里存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件。

  • /dev :dev是Device(设备)的缩写, 该目录下存放的是Linux的外部设备,在Linux中访问设备的方式和访问文件的方式是相同的。

  • /etc:这个目录用来存放所有的系统管理所需要的配置文件和子目录。

  • /home:用户的主目录,在Linux中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。

  • /lib:这个目录里存放着系统最基本的动态连接共享库,其作用类似于Windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库。

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

  • /media:linux系统会自动识别一些设备,例如U盘、光驱等等,当识别后,linux会把识别的设备挂载到这个目录下。

  • /mnt:系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在/mnt/上,然后进入该目录就可以查看光驱里的内容了。

  • /opt: 这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。

  • /proc:这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。 这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件,比如可以通过下面的命令来屏蔽主机的ping命令,使别人无法ping你的机器:

    echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
    
  • /root:该目录为系统管理员,也称作超级权限者的用户主目录。

  • /sbin:s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序。

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

  • /srv: 该目录存放一些服务启动之后需要提取的数据。

  • /sys:这是linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统 sysfs 。

    sysfs文件系统集成了下面3种文件系统的信息:针对进程信息的proc文件系统、针对设备的devfs文件系统以及针对伪终端的devpts文件系统。该文件系统是内核设备树的一个直观反映。当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中被创建。

  • /tmp:这个目录是用来存放一些临时文件的。

  • /usr:这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于windows下的program files目录。

  • /usr/bin:系统用户使用的应用程序。

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

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

  • /var:这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。

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

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

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

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

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

Linux软件安装到哪

image-20220118183630133

Copyright © www.yuchaoit.cn 2025 all right reserved,powered by Gitbook作者:于超 2024-12-14 22:46:05

results matching ""

    No results matching ""