linux命令入门

正式开始学习linux命令, 听懂掌声。。。
学linux的好处
学习Linux命令有许多好处,尤其是对于计算机科学和信息技术领域的学生、开发人员和系统管理员来说。
以下是一些学习Linux命令的主要原因:
- 开源平台:Linux是一个开源操作系统,它的内核和大部分软件都是开源的,这意味着你可以自由地访问和修改它们。学习Linux命令可以帮助你更好地理解和利用开源技术。
- 跨平台兼容性:Linux是一个非常灵活的操作系统,可以在各种硬件平台上运行。学习Linux命令可以使你更加熟悉跨平台的概念和技术。
- 强大的命令行界面:Linux提供了一个强大的命令行界面,使用户能够通过输入命令来完成各种任务。学习Linux命令可以提高你的命令行技能,使你能够更高效地操作和管理计算机系统。
- 自动化和脚本编程:Linux命令提供了很多工具和功能,可以用于自动化任务和脚本编程。学习Linux命令可以帮助你编写脚本来自动执行重复性任务,提高工作效率。
- 网络和服务器管理:Linux在网络和服务器领域得到广泛应用。学习Linux命令可以使你更加熟悉网络协议、服务器配置和管理等方面的知识,帮助你成为一名优秀的系统管理员或网络工程师。
- 安全性和故障排除:学习Linux命令可以使你更好地理解和管理计算机系统的安全性。你可以使用各种命令来监视系统状态、查找和修复故障,并加强系统的安全性。
- 职业发展:掌握Linux命令可以为你的职业发展提供巨大的机会。在IT行业中,对Linux系统和命令的熟练掌握是许多工作岗位的基本要求,尤其是系统管理员、网络工程师和软件开发人员等职位。
综上所述,学习Linux命令对于个人技能发展、职业发展和对计算机系统的更深入理解都非常有益。无论你是计算机科学学生、开发人员还是系统管理员,学习Linux命令都将为你的工作和学习带来很大的帮助。
为什么要学Linux命令
- Linux从诞生就是黑屏界面,所有操作倚靠命令完成,如磁盘读写、文件操作、网络管理等
- 企业中,服务器的维护工作都是
ssh客户端完成,没有图形界面 - 程序员想要管理linux服务器,必须学习常用命令
Linux命令学习方法
- 熟能生巧,多敲打,多练习即可
- 不可能一下子掌握所有命令用法,学会使用搜索引擎查阅命令资料
当年超哥在一家美资企业,一位台湾老程序员送我的一本书。。。
可能是看我骨骼惊奇吧!!

什么是linux命令
就是你在linux系统里,输入linux系统才能识别的一些指令,你输入的一些固定存在的单词字母,就是命令。
前面咱们已经成功安装了Linux系统--ubuntu 20.04 ,那么现在跟着超哥奔向Linux命令行的世界。

Linux命令是用于在Linux操作系统上执行特定任务的命令行指令。
Linux是一种开源的操作系统,因其高度的可定制性和灵活性而受到广泛使用。Linux命令提供了一种与操作系统交互的方式,允许用户管理文件、目录、进程、网络和其他系统资源。
以下是一些常见的Linux命令及其功能:
- ls:列出当前目录中的文件和目录。
- cd:改变当前工作目录。
- mkdir:创建新的目录。
- rm:删除文件或目录。
- cp:复制文件或目录。
- mv:移动文件或目录,也可用于重命名文件或目录。
- cat:显示文件内容。
- grep:在文件中搜索指定模式。
- find:根据条件搜索文件。
- chmod:修改文件或目录的权限。
- chown:修改文件或目录的所有者。
- ssh:远程登录到另一台计算机。
- tar:打包和解包文件。
- gzip:压缩文件。
- unzip:解压缩文件。
- top:显示系统中运行的进程和资源使用情况。
- ps:显示当前用户的进程列表。
- ifconfig:显示和配置网络接口信息。
- ping:测试与另一台计算机的连接。
- shutdown:关闭系统。
这只是一小部分常见的Linux命令,Linux操作系统提供了许多其他命令和工具,用于执行各种管理和维护任务。可以使用命令行界面(Terminal)输入这些命令来与Linux系统进行交互。
Linux命令格式
1.一般情况下,【参数】是可选的,一些情况下【文件或路径】也是可选的
2.参数 , 同一个命令,跟上不同的参数执行不同的功能
3.执行linux命令,添加参数的目的是让命令更加贴切实际工作的需要!
4.linux命令,参数之间,普遍应该用一个或多个空格分割!
1.完整的命令格式
2.没有参数,没有对象
3.没有参数,有对象
Linux命令的一般格式如下:
command [options] [arguments]
command:要执行的具体命令,例如ls、cd、mkdir等。options:用于修改命令行行为的选项,通常以短横线(-)开头。选项是可选的,可以有多个选项,它们通常用于指定命令的特定行为或配置。例如,ls -l中的-l选项用于以长格式显示文件列表。arguments:命令的参数,指定命令要操作的文件、目录或其他资源。参数也是可选的,可以有一个或多个参数。例如,cp source_file destination_file中的source_file和destination_file是两个参数。
以下是一个具体的例子,展示了ls命令的使用:
ls -l /home/user/Documents
ls:要执行的命令是ls,用于列出文件和目录。-l:选项-l用于以长格式显示文件列表。/home/user/Documents:/home/user/Documents是一个参数,指定了要列出的目录路径。
请注意,Linux命令对大小写敏感。大多数命令和选项使用小写字母,但也有一些例外情况。此外,命令和选项之间可以有空格,但在没有引号或转义字符的情况下,空格会将命令或选项分隔成多个参数。
markdown文本语法
命令语法案例


看超哥讲的一定是对的!!
删除普通文件
# 没参数,默认 rm -i 提示你 ,alias 别名
#
rm cxk.txt # 默认有提示,是否删除,如果该文件为空,则自动删除
rm -i cxk.txt # 需要输入 y / n 确认删除
# rm的参数用法,如删除目录
# rm 命令,基础语法,考虑命令的作用,参数作用,能解决什么问题,是否要添加
# 固定用法,死记硬背,多练习,就会玩了
yu@yu-ubuntu:~/Videos$ rm bajie
rm: cannot remove 'bajie': Is a directory
yu@yu-ubuntu:~/Videos$
yu@yu-ubuntu:~/Videos$
yu@yu-ubuntu:~/Videos$
yu@yu-ubuntu:~/Videos$
yu@yu-ubuntu:~/Videos$ rm -r bajie
yu@yu-ubuntu:~/Videos$
yu@yu-ubuntu:~/Videos$
yu@yu-ubuntu:~/Videos$ rm -i wukong
rm: cannot remove 'wukong': Is a directory
yu@yu-ubuntu:~/Videos$
yu@yu-ubuntu:~/Videos$
yu@yu-ubuntu:~/Videos$ rm -i -r wukong
rm: remove directory 'wukong'? y
yu@yu-ubuntu:~/Videos$ ls
yu@yu-ubuntu:~/Videos$
yu@yu-ubuntu:~/Videos$ cat cxk.txt
ji ni tai mei.
# 注释,程序不会读它,固定死
# ls 和 rm 的基础语法
# 1. 不加文件对象
yu@yu-ubuntu:~/Videos$ pwd
/home/yu/Videos
yu@yu-ubuntu:~/Videos$ ls
bajie wukong
# rm 删东西,删什么,你得告诉操作系统吧。。。
# 2. 不加参数
# rm 特性,必须加上操作谁
# 删文件夹
yu@yu-ubuntu:~/Videos$ rm bajie
rm: cannot remove 'bajie': Is a directory
# 查看帮助,如何用参数,干掉目录
# 删文件
# ls
ls tangsen
ls: cannot access 'tangsen': No such file or directory
# ls命令,ubuntu桌面下玩法
yu@yu-ubuntu:~/Desktop$ touch taikula.txt
yu@yu-ubuntu:~/Desktop$
yu@yu-ubuntu:~/Desktop$
yu@yu-ubuntu:~/Desktop$
yu@yu-ubuntu:~/Desktop$ mkdir cxk
yu@yu-ubuntu:~/Desktop$
yu@yu-ubuntu:~/Desktop$
yu@yu-ubuntu:~/Desktop$ mkdir
mkdir: missing operand
Try 'mkdir --help' for more information.
# ls不加操作对象,与参数
yu@yu-ubuntu:~/Desktop$ ls
cxk taikula.txt
# 3. 加对象
yu@yu-ubuntu:~/Desktop$ ls taikula.txt
taikula.txt
yu@yu-ubuntu:~/Desktop$ ls -l taikula.txt
-rw-rw-r-- 1 yu yu 0 7月 6 18:48 taikula.txt
# ls --help
# 4. 加参数
# ls 不加对象,默认就是操作当前目录,看看我这个目录下有什么
yu@yu-ubuntu:~/Desktop$ ls -l
total 4
drwxrwxr-x 2 yu yu 4096 7月 6 18:49 cxk
-rw-rw-r-- 1 yu yu 0 7月 6 18:48 taikula.txt
# 5. 加对象,和参数
yu@yu-ubuntu:~/Desktop$ ls -l taikula.txt
-rw-rw-r-- 1 yu yu 0 7月 6 18:48 taikula.txt
Linux命令提示符

在Linux系统中,命令提示符是在终端(Terminal)窗口中显示的指示符,用于指示用户输入命令的位置。它通常由一个特殊字符或字符串组成,表示用户可以在该位置输入命令。
命令提示符的默认格式在不同的Linux发行版和终端设置中可能会有所不同,但一般情况下,它通常包含当前用户名、主机名和当前工作目录的信息。
默认的命令提示符通常以$符号结尾,表示普通用户权限。
而以#符号结尾的命令提示符表示超级用户(root)权限。
以下是一些示例命令提示符:
- 普通用户提示符:
username@hostname:~/current_directory$ - 超级用户提示符:
root@hostname:~/current_directory#
在命令提示符后面,用户可以输入命令来执行相应的操作。例如,如果提示符显示$,则可以输入诸如ls、cd、mkdir等命令来执行相应的操作。
值得注意的是,虽然默认的命令提示符可能会在不同的系统和终端设置中有所不同,但用户可以通过修改shell的配置文件来自定义命令提示符的外观和行为。常见的shell包括Bash(Bourne Again SHell)、Zsh(Z Shell)和Fish(Friendly Interactive SHell),它们具有各自的配置文件(例如.bashrc、.zshrc、.config/fish/config.fish),可以在其中自定义命令提示符。
命令提示符
[py@pylinux ~]$ 普通用户py,登陆后
[root@pylinux ~]# 超级用户root,登录后
root代表当前登录的用户
@ 分隔符
pylinux 主机名
~ 当前的登录的位置,此时是家目录,特殊字符,表示用户家目录
特殊的目录的意思,目录就可以切换
cd ~ # 直接进入当前用户的家目录
# 超级用户身份提示符
$ 普通用户身份提示符
# 关于目录的切换
yu@yu-ubuntu:~$ cd /
yu@yu-ubuntu:/$ pwd
/
yu@yu-ubuntu:/$
yu@yu-ubuntu:/$ ls
bin cdrom etc lib lib64 lost+found mnt proc run snap swapfile tmp var
boot dev home lib32 libx32 media opt root sbin srv sys usr
yu@yu-ubuntu:/$
# 小结
root超级用户
yu普通用户
俩角色的命令提示符的区别
以及 基本 linux 目录切换,包括根目录是什么,了解下
动手操作下。。。

美化命令提示符
# 美化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\]'
export PS1='\[\033[01;32m\]\u@\h:\[\033[01;34m\]\w\[\033[00m\]\$ '
export PS1='\[\033[01;32m\]\u@\h:\[\033[01;34m\]\w\[\033[00m\] \$(date +"%T")\$ '
Tab命令补全
在计算机命令行界面中,Tab命令补全(Tab completion)是一种快捷方式,用于自动补全命令、文件路径、目录和其他命令行参数。当用户在命令行输入部分内容时,按下Tab键会自动将其扩展为匹配的命令或路径。
Tab命令补全的作用是提高命令行的效率和准确性。它可以帮助用户避免手动输入长而复杂的命令或路径,并减少输入错误的可能性。通过使用Tab键,用户可以快速浏览可用的命令、文件和目录,并选择合适的选项。
当用户输入部分命令或路径时,按下Tab键会触发自动补全功能。系统会尝试根据用户输入的内容匹配可能的选项,并将其显示在命令行中。如果有多个匹配项,用户可以继续输入更多内容以缩小匹配范围,然后再次按下Tab键进行进一步补全。
Tab命令补全通常与操作系统的命令行解释器(例如Unix/Linux的Bash、Windows的Command Prompt或PowerShell等)一起使用。它是一种广泛支持的功能,可以在大多数命令行环境中找到,并且被广泛用于加快命令行操作的速度和准确性。

linux终端里,系统为了让你更省心,不用记忆那么多内容,可以让你输入Tab键,可以快速列出你想要的内容,你只需要输入一个命令的开头即可,它一般可以补全linux命令,以及文件路径。
Linux命令初体验
su命令
用于切换系统不同的用户。
如windows的用户切换,从老王用户,切换到小李用户。

linux用户的切换,并且我们直接切换到超级用户,切换到皇帝身份。
# 短横线 - 表示切换用户且加载该用户的环境变量,且进入该用户家目录
[yuchao@localhost Desktop]$
[yuchao@localhost Desktop]$ su - root
Password:
[root@localhost ~]#
uname命令
在使用uname命令时,一般会固定搭配上-a参数来完整地查看当前系统的内核名称、主机名、内核发行版本、节点名、系统时间、硬件名称、硬件平台、处理器类型以及操作系统名称等信息。
uname -a命令显示了有关系统的详细信息,包括内核版本、主机名、操作系统类型和处理器架构等。在给定的输出中,操作系统是Linux,主机名是yu-ubuntu,内核版本是5.13.0-30-generic,处理器架构是x86_64。
uname -r命令仅显示内核版本号。在给定的输出中,内核版本为5.13.0-30-generic。
这些命令对于了解当前正在运行的操作系统的内核信息很有用。在Unix/Linux系统中,uname命令通常用于显示与内核相关的信息,并提供一些关于系统配置的基本诊断。
yu@yu-ubuntu:~$ uname -a
Linux yu-ubuntu 5.13.0-30-generic #33~20.04.1-Ubuntu SMP Mon Feb 7 14:25:10 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux
yu@yu-ubuntu:~$ uname -r
5.13.0-30-generic
"generic"标识符用于指示适用于普通硬件配置的内核版本。它是一种通用的内核构建,旨在兼容各种常见的硬件设备和系统配置。这种通用内核版本通常可以在大多数标准计算机系统上运行,并提供广泛的兼容性和功能。
ls命令
功能:平铺显示目录下的文件列表
语法:
1.完整的命令格式
ls -l /
2.没有参数,没有对象,其实默认有一个点
ls
3.没有参数,有对象
ls /
关于路径
linux命令操作,关于要操作不同的文件,主要就分,绝对路径、相对路径
关于参数(选项)
ls -l # 使用较长格式列出信息
ls -h #-h, --human-readable 与-l 一起,以易于阅读的格式输出文件大小,kb、mb、gb
ls -a # 显示隐藏文件 ,linux下以.开头的文件,表示是隐藏的
# 1TB = 1024GB
# 1GB = 1024MB
# 1MB = 1024KB
# 1KB(千字节) = 1024B(字节)
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 ~]$
特殊目录
- 上一次目录
~ 当前用户家目录
. 当前位置
.. 上一层位置
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
man命令
当你忘记了某个命令怎么用,以及参数有哪些,都是什么作用,该怎么查?
查于超老师的笔记?还是咋办?
man 命令,查看linux命令的帮助手册,以后慢慢看,且是英文的,知道这个方式即可,可以复制出来,翻译一下也行。
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命令
yu@yu-ubuntu:~$ w
16:58:09 up 19 min, 2 users, load average: 0.04, 0.32, 0.21
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
yu :0 :0 16:50 ?xdm? 2:49 0.00s /usr/lib/gdm3/gdm-x-session --run-script env GNO
yu pts/0 10.0.0.1 16:50 1.00s 0.03s 0.01s w
在上述命令行输出中,w命令用于显示当前系统上已登录用户的信息。
输出中的各列表示以下信息:
USER:已登录用户的用户名。
TTY:用户所连接的终端设备或伪终端(pty)。
FROM:用户登录的来源,即登录的IP地址或终端。
LOGIN@:用户登录的时间。
IDLE:用户在终端上闲置的时间。
JCPU:用户在所有终端上使用的CPU时间。
PCPU:用户在当前终端上使用的CPU时间。
WHAT:用户当前正在执行的命令或程序。
在给定的输出中,有两个用户已登录到系统上:
用户名为"yu"的用户登录到显示器上(:0),并运行/usr/lib/gdm3/gdm-x-session --run-script env GNO命令。
用户名为"yu"的用户通过pts/0终端连接,来源是IP地址为10.0.0.1的远程主机。
输出还提供了系统的运行时间信息("up 19 min"),以及平均负载("load average: 0.04, 0.32, 0.21")。平均负载是系统对于一段时间内的负载情况的指标,它表示了系统中正在运行或等待运行的进程数量。
这个输出提供了当前登录用户的概览和系统负载信息,可以帮助管理员或用户了解系统的使用情况。
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
1.查看主机名
# 可以看到静态主机名
# 临时主机名,是系统默认读取的网络信息
# 还有系统平台信息,主机版本信息,内核版本
[root@10 ~]#
[root@10 ~]# hostnamectl
2.设置静态主机名(基本用这个),永久生效
设置了永久主机名后,发现临时名字都没了
[root@10 ~]# hostnamectl set-hostname linux02.yuchaoit.cn
[root@10 ~]#
Linux重要的系统文件
在Ubuntu 20.04和其他Linux系统中,存在许多常见的系统文件和目录,其中一些是重要的配置文件和关键系统路径。以下是一些常见的系统文件和目录:
/etc:这个目录包含系统的配置文件。在Ubuntu 20.04中,你可以在这个目录下找到许多重要的配置文件,如/etc/passwd(包含用户账户信息)、/etc/group(包含用户组信息)、/etc/hosts(包含主机名与IP地址的映射关系)、/etc/apt(包含APT软件包管理器的配置)等。/var:这个目录包含变量数据,如日志文件、数据库文件、缓存文件等。在Ubuntu 20.04中,一些重要的子目录包括/var/log(存储系统日志文件)、/var/www(默认的Web服务器根目录)和/var/lib(存储各种应用程序的数据文件)。/usr:这个目录包含用户可共享的只读数据,如应用程序、库文件和文档。在Ubuntu 20.04中,一些重要的子目录包括/usr/bin(存储可执行文件)、/usr/sbin(存储系统管理员使用的可执行文件)、/usr/lib(存储共享库文件)和/usr/share(存储共享数据和文档)。/home:这个目录包含用户的个人文件和设置。在Ubuntu 20.04中,每个用户都有一个对应的子目录,如/home/username,其中"username"是用户的用户名。/boot:这个目录包含启动过程中使用的文件,如内核、引导加载程序和启动配置文件。在Ubuntu 20.04中,你可以在/boot目录下找到内核镜像文件,如vmlinuz。/proc:这个目录是一个虚拟文件系统,提供有关正在运行的进程和系统内核的信息。在Ubuntu 20.04中,你可以在/proc目录下访问诸如/proc/cpuinfo(CPU信息)和/proc/meminfo(内存信息)等文件。
这只是一些常见的系统文件和目录的示例,实际上,Linux系统有许多其他的重要文件和目录。这些文件和目录的位置和用途可能会因Linux发行版和版本的不同而有所差异。
linux区分大小写
windows:不区分大小写,比如你创建文件夹,输入大写,小写,windows都认为是同一个。

linux严格区分大小写,文件夹的名字,大小写不同,就是不同的文件夹,文件也一样,因此我们后续对文件,文本操作,要注意大小写的区分处理。
可以看到,仅有一个字母的大小写不同,也是3个文件夹。
2.文件扩展名
windows
Windows是依赖扩展名,区分不同的文件类型。比如
.txt 是普通文本,一般是记事本这样的编辑器打开
.exe 是window下可以直接执行的文件,比如qq.exe 双击可以运行出qq登录器
.doc 是word文档
linux
而linux是大有不同,通过权限位标识来确定文件类型,我们在学习文件属性篇,重点再讲解,先记住如下概念。
- linux不通过文件扩展名来识别文件类型,文件扩展名,仅仅就是让运维人员能够肉眼一眼,就知道它是什么类型,便于管理
- 但其实是该文件类型在创建时已经定义好,文件名只是用于显示,不像windows下有实际意义。
- 即使你修改linux的文件名,也不会修改文件的类型。
扩展名小结
为了区分出文件类型,我们还是会给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

3.Linux一切皆文件
"Linux一切皆文件"(Everything is a file)是一个广泛引用的概念,用来描述Linux和类Unix系统的设计理念。它指的是在Linux系统中,几乎所有的东西(包括硬件设备、文件、目录、进程等)都被视为文件。
在Linux中,文件是对数据的抽象表示,它可以是文本文件、二进制文件、设备文件、目录等。这个概念的核心思想是将不同类型的数据都视为文件对象,并通过统一的接口进行访问和操作。
通过将一切视为文件,Linux系统实现了一种统一的编程模型和接口。这意味着无论是读取文件、写入文件、创建文件还是删除文件,都可以使用相似的系统调用或命令来完成。这种一致性使得Linux系统的管理和编程更加简洁和灵活。
此概念的另一个重要方面是设备文件。在Linux中,硬件设备(如磁盘驱动器、打印机、键盘等)也被表示为文件,称为设备文件。通过将设备表示为文件,可以使用相同的文件操作接口来访问和控制这些设备。
总而言之,"Linux一切皆文件"表达了Linux系统的设计思想,将各种实体都抽象为文件对象,并提供统一的接口来操作这些文件。这种设计理念为Linux系统带来了简单、一致和灵活的特性,使得Linux在管理和编程方面非常强大。

使用linux,记住一句话,linux一切皆文件,linux上所有的内容,都以文件的形式保存。
比如我们可以通过访问某个路径下的文件内容,读取如网卡的信息,读取如U盘的信息。
以查看进程为例,进程指的是系统上运行的一个程序,如windows下的进程,这是一段程序,通过任务管理器,才能找到它的信息。

linux读取进程信息,可以直接找到进程的文件
linux普通文件/文件夹
普通文件,类似windows里的txt文件概念,可以直接写入内容,查看文件内容,这就是普通文件。
windows普通文件特点,一般可以这么操作的就称之为普通文件,包括了很多类型,如.txt .doc
- 编辑器直接打开
- 写入,修改,保存,查看内容

linux普通文件,如何区分,我们知道没法通过后缀名直接判断
有办法
file命令
ls -l
linux可执行文件
可执行文件,指的是,该文件,可以双击运行,产生一些执行任务,比如QQ安装包,批量处理脚本文件。
windows,肉眼可以通过不同的后缀,一般可以得知,是什么文件类型,如下是常见的可执行类型。

linux,是否可执行,就不是后缀决定的,而依然是通过文件属性查看的。(这个属性,在你创建该文件时就决定了,以不同的linux命令决定)
在Linux系统中,可执行文件是一种特殊类型的文件,它包含了可被计算机直接执行的机器代码或脚本命令。可执行文件是一种用于运行程序或执行特定任务的文件。
Linux可执行文件可以有多种形式,包括:
- 二进制可执行文件(Binary Executable):这种类型的可执行文件包含了已编译的机器代码,可以直接由处理器执行。二进制可执行文件通常以ELF(Executable and Linkable Format)格式为基础,可以在Linux系统中运行。这些文件通常没有以".exe"等特定扩展名结尾,而是可以没有扩展名或以其他命名约定来标识。
- 脚本文件(Script):这种类型的可执行文件包含一系列文本命令或脚本语言代码,例如Shell脚本、Python脚本等。这些文件需要通过解释器来执行,解释器会逐行读取文件内容并执行其中的命令。脚本文件通常以特定的扩展名结尾,如".sh"(Shell脚本)或".py"(Python脚本)。
可执行文件通常包含了程序或指令的代码和数据,以及可能需要的其他资源或依赖项。当用户运行可执行文件时,操作系统会根据文件类型调用相应的执行方法,执行文件中的指令或将其传递给相应的解释器。
在Linux系统中,可执行文件的权限和访问控制是通过文件的权限位(如读、写、执行)来管理的。只有具有足够权限的用户或进程才能执行或访问可执行文件。
通过使用可执行文件,用户可以运行各种类型的应用程序、工具或脚本,实现特定的功能或执行特定的任务。Linux系统提供了广泛的可执行文件,包括系统工具、应用程序、服务和用户自定义的脚本等。
linux文件夹
可以通过肉眼观察(前提是安装了图形化linux界面),蓝色的是文件夹,以及文件属性开头是d,表示目录。
文件夹用于管理一堆文件,以及子文件夹。
4.Linux的目录必须挂载后使用
挂载,mount,指的是给存储设备分配盘符,让我们能找到,使用存储设备(U盘,移动硬盘)
windows下的挂载,超哥的电脑里有好几块硬盘,C盘是固态硬盘,D,E两个盘是机械硬盘。
windows操作系统给硬盘加上了标记,我们通过C盘,盘符,即可找到C盘里的数据。

linux里没有提供这样的字母,盘符。
而是
1.创建一个空文件夹,该文件夹有个名字,叫做挂载点(理解为windows下的盘符概念)
2.把设备和这个空文件夹做一个连接(这就叫做挂载),挂载是通过linux命令实现,后面讲。
图解linux挂载
在Linux中,目录必须挂载后才能使用是指,在文件系统中的目录要通过挂载操作与实际的物理设备或虚拟设备进行关联,才能对其中的文件和子目录进行访问。
在Linux中,每个文件系统(如ext4、NTFS等)都有一个根目录(称为挂载点),用于将其关联到文件系统层次结构中的一个位置。当将文件系统挂载到特定目录时,该目录就成为文件系统的访问入口。
挂载操作将实际的存储设备(例如硬盘、分区、网络存储等)与目录进行关联,使得文件系统中的文件和目录在特定目录下可见和可访问。这样,用户可以通过访问挂载点上的目录,实现对存储设备中数据的读取、写入和管理。
要使用一个目录,首先需要确保目录已经存在,然后执行挂载操作将文件系统与该目录进行关联。挂载操作可以手动执行,也可以通过系统启动时的自动挂载配置来实现。
在Linux中,可以使用mount命令来手动挂载文件系统,或者通过编辑/etc/fstab文件来配置系统启动时的自动挂载。一旦文件系统挂载完成,相关目录下的文件和子目录就可以被访问和操作了。
需要注意的是,如果目录没有被挂载,或者挂载操作失败,那么该目录下的文件和子目录将不可见和不可访问。
通过挂载机制,Linux系统可以将不同的存储设备和文件系统整合到一个统一的文件系统层次结构中,提供灵活的数据管理和访问方式。

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与Windows目录
Linux与windows区别
- windows特点:E:\学习视频\高清视频\
- Linux目录特点:/etc/hosts /root/data/yuchao.txt
Linux 系统目录结构基本特点
1.Linux下一切从根开始,根里面的第一层目录,叫做一级目录,然后依次二级目录。
2.Linux下面的目录是一个有层次的目录结构
3.在linux中每个目录可以挂载到不同的设备(磁盘)上
4.Linux 下设备不挂载不能使用,不挂载的设备相当于没门没窗户的监狱(进不去出不来),挂载相当于给设备创造了一个入口(挂载点,一般为目录)
Linux系统目录结构具有以下基本特点:
- 层次结构:Linux系统目录结构采用了层次结构的组织方式,以树形结构进行组织。根目录(/)位于顶层,下面是一系列子目录和文件。
- 单一根目录:Linux系统只有一个根目录(/),所有其他目录和文件都是相对于根目录的路径。这种单一根目录的结构简化了路径的表示和管理。
- 文件系统挂载:Linux系统支持将不同的文件系统挂载到指定的目录上。这使得不同的存储设备、网络资源和虚拟文件系统能够以统一的方式进行访问和管理。
- 标准目录约定:Linux系统遵循一套标准目录约定(Filesystem Hierarchy Standard,FHS),定义了各个目录的用途和预期内容。这种标准化使得不同的Linux发行版在目录结构方面保持一致性。
- 重要目录的用途:
- /bin:存放系统基本命令(二进制可执行文件)。
- /etc:存放系统配置文件。
- /home:存放用户的个人目录。
- /var:存放可变数据,如日志文件、数据库等。
- /tmp:存放临时文件。
- /dev:存放设备文件,用于访问硬件设备。
- /proc:虚拟文件系统,提供系统和进程信息。
- /lib和/usr/lib:存放共享库文件。
- /sbin和/usr/sbin:存放系统管理和维护的命令(二进制可执行文件)。
- 权限和访问控制:Linux系统的目录和文件通过权限位(如读、写、执行)进行权限控制。用户需要相应的权限才能访问和操作目录和文件。
这些特点使得Linux系统目录结构在管理和组织文件、软件和系统配置方面具有一致性和灵活性。它提供了一种标准化的方式来组织和访问系统资源,同时方便了用户和管理员对系统进行配置和维护。
操作系统目录分隔符
windows平台命令行目录分隔符
Linux平台命令行目录分隔符
Linux与Windows的目录结构比较
Linux首先是建立一个根"/"文件系统,所有的目录也都是由根目录衍生出来。
登录系统后,在当前命令窗口输入命令:
ls /
在Linux底下,所有的文件与目录都是由根目录开始,是目录与文件的源头,然后一个个的分支下来,如同树枝状,因此称为这种目录配置为:目录树。
目录树的特点是什么呢?
- 目录树的起始点是根目录(/,root);
- 每一个目录不止能使用本地的文件系统,也可以使用网络上的文件系统,可以利用NFS服务器挂载特定目录。
- 每一个文件在此目录树中的文件名,包含完整路径都是独一无二的。
Linux目录挂载
挂载通常是将一个存储设备挂接到一个已经存在的目录上,访问这个目录就是访问该存储设备的内容。
对于Linux系统来说,一切接文件,所有文件都放在以根目录为起点的树形目录结构中,任何硬件设备也都是文件形式

如图所示,是U盘存储设备和Linux系统自己的文件系统结构,此时Linux想要使用U盘的硬件设备,必须将Linux本身的目录和硬件设备的文件目录合二为一,此过程就称之为挂载。
挂载操作会隐藏原本Linux目录中的文件,因此选择Linux本身的目录,最好是新建空目录用于挂载
挂载之后,这个目录被称为挂载点

此时U盘文件系统已经是Linux文件系统的一部分,访问/sdb-u文件夹,即是访问访问U盘系统中的文件夹。
linx的环境变量
同学们应该都会配置windows下的环境变量(PATH),都知道系统会按照PATH的设定,去每个PATH定义的目录下搜索可执行文件。
那么如何查看Linux下的PATH环境变量呢?
执行命令:
echo $PATH
echo命令是有打印的意思
$符号后面跟上PATH,表示输出PATH的变量
PATH(一定是大写的)这个变量是由一堆目录组成,分隔符是":"号,而不同于windows的";"号。
什么是绝对、相对路径
在Linux系统中,绝对路径和相对路径是两种用于定位文件或目录位置的表示方式。
绝对路径:绝对路径是一个完整的路径,从根目录(/)开始,沿着目录层次结构一直到目标文件或目录。绝对路径始终以根目录作为起点,提供了文件或目录在整个系统中的准确位置。
例如,
/home/user/Documents/file.txt是一个绝对路径,它表示位于根目录下的home目录、user目录、Documents目录中的file.txt文件。相对路径:相对路径是相对于当前工作目录的路径。它基于当前位置来表示目标文件或目录的位置,而不考虑整个文件系统的结构。
相对路径可以使用以下几种特殊符号:
.:表示当前目录。..:表示父级目录。~:表示当前用户的主目录。
例如,假设当前工作目录是
/home/user,则相对路径Documents/file.txt表示位于当前目录下的Documents目录中的file.txt文件。
相对路径的优势在于它们相对简短,更易于在当前工作目录下进行导航和操作。然而,绝对路径提供了一个确切的位置,不受当前工作目录的影响,特别适用于需要明确指定文件或目录位置的情况。
在使用绝对路径或相对路径时,需要考虑权限和访问限制。只有具有足够权限的用户才能访问和操作目标文件或目录,无论使用绝对路径还是相对路径。
绝对路径与相对路径
Linux中非常重要的概念--路径,路径用来定位如何找到某个文件。
Linux下特别注意文件名/路径的写法,可以将所谓的路径(path)定义为绝对路径(absolute)和相对路径(relative)。这两种文件名/路径的写法依据是这样的:
- 绝对路径:由根目录(/)为开始写起的文件名或者目录名称,如/home/yuchao/test.py
- 相对路径:相对于目前路径的文件名写法。例如./home/yuchao/exam.py或../../home/yuchao/exam.py,简单来说只要开头不是/,就是属于相对路径,
因此你必须了解,相对路径是:以你当前所在路径的相对路径来表示的。

例如你现在在/home 这个目录下,如要进入/var/log这个路径,如何写呢?
- cd /var/log (绝对路径)
- cd ../var/log(相对路径)
结果如图:
因为你在/home底下,因此你要回到上一层(../)之后,才能继续前往/var,特别注意:
- . :代表当前的目录,也可以用./ 来表示,注意结尾的斜线,目录分隔符。
- .. :代表上一层的目录,也可以用../来表示


图解绝对/相对路径

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软件安装到哪
