Linux笔记之一
- 一、Linux基本概念
-
- [1.1 概念](#1.1 概念)
- [1.2 为什么要学Linux](#1.2 为什么要学Linux)
- 二、Linux基本目录
- 三、Linux基本命令
-
- [3.1 相对路径](#3.1 相对路径)
- [3.2 绝对路径](#3.2 绝对路径)
- [3.3 Linux基本命令](#3.3 Linux基本命令)
-
- [3.3.1 处理目录的命令](#3.3.1 处理目录的命令)
- [3.3.2 创建文件的命令](#3.3.2 创建文件的命令)
- [3.3.3 内容查看命令](#3.3.3 内容查看命令)
- 总结
一、Linux基本概念
1.1 概念
Linux
,全称GNU/Linux
,是一种免费使用和自由传播的类UNIX
操作系统,其内核由林纳斯·本纳第克特·托瓦兹于1991年10月5日首次发布,它主要受到Minix和Unix
思想的启发,是一个基于POSIX
的多用户、多任务、支持多线程和多CPU的操作系统。
它能运行主要的Unix工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。Linux有上百种不同的发行版,如基于社区开发的debian、archlinux,和基于商业开发的Red Hat Enterprise Linux、SUSE、Oracle Linux等。
1.2 为什么要学Linux
因为我们要部署服务,Linux系统一直以其稳定性而闻名,它们可以连续运行多年而不发生任何重大问题。事实上,很多Linux
用户都从未在自己的环境中遇到过系统崩溃的情况。相对windows
而言,挂起和崩溃完全是一种常态。
Windows
由于是商业产品,源代码封闭,我们无法知道微软在里面做了什么手脚。而Linux
由于是源代码开放操作系统,不存在这个问题
二、Linux基本目录
在Linux系统中一切皆文件。以下为Linux系统的目录层级结构:
新创建的Linux系统的目录
/bin
,目录通常包含了一些基本的、系统级别的命令,这些命令并不是简单地"放到一个文件里面",而是每个命令都对应一个独立的可执行文件。这些文件通常是由C、C++等编程语言编写的程序,经过编译链接后生成的可执行文件。如 ls(列出目录内容)、cp(复制文件或目录)、mv(移动或重命名文件)、rm(删除文件或目录)等。/usr/bin
, 目录则包含了更多的用户级命令/sbin
,存放系统管理员使用的系统维护命令/usr/sbin
,存放更多的系统管理员命令/usr/local/bin
,通常用于存放用户自己安装的程序的可执行文件/boot
,这里存放的是启动 Linux 时使用的一些核心文件,包括一些连接文件以及镜像文件。/dev
,目录是Linux
系统中用于存放设备文件的特殊目录。通过设备文件,用户和应用程序可以实现对硬件设备的访问和控制。这些设备文件分为字符设备文件和块设备文件两类,分别用于处理字符流和块数据的传输。/etc
,目录是一个非常重要的系统配置文件目录。它包含了大量的配置文件,这些文件用于控制系统和应用程序的行为。/etc
目录中的文件通常是全局性的,对所有用户都有效,且大多数文件只能由root
用户(或具有相应权限的用户)进行修改。/home
,用户的主目录,在 Linux 中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的/lib
,目录是一个存放共享库(shared libraries)文件的目录。共享库是一种特殊类型的文件,它们包含了程序运行时所需的代码和数据,但可以被多个程序同时访问和使用,从而节省磁盘空间和内存。usr/lib
,这个目录也用于存放共享库文件,但主要用于存放用户级别的库文件(即不是系统核心组件所需的库文件)。随着Linux系统的发展,越来越多的库文件被放置在/usr/lib或其子目录中,以更好地组织和管理它们。/lost+found
,目录是一个特殊的目录,它通常位于文件系统的根目录(/)下或者是其他挂载的文件系统(如分区或外部存储设备)的根目录下。这个目录的主要作用是存放那些在系统非正常关机(如突然断电)或文件系统错误修复(如使用fsck命令)过程中恢复的文件碎片或孤立文件。/media
,linux 系统会自动识别一些设备,例如U盘、光驱等等,当识别后,Linux 会把识别的设备挂载到这个目录下/mnt
,目录是一个传统的挂载点目录,用于临时挂载文件系统或存储设备。它并不是系统启动时必须自动挂载的目录之一,但通常用于用户或管理员手动挂载文件系统、硬盘分区、USB驱动器、CD/DVD光驱等外部设备。/opt
,目录是一个用于存放第三方应用程序的目录。这个目录的设计初衷是为了提供一个集中的位置,用于安装那些不由Linux发行版官方包管理器管理的软件。/opt 目录的使用有助于保持系统目录(如/usr、/bin等)的整洁,同时使得第三方软件的管理更加灵活和方便。
-/proc:
这是一个虚拟文件系统,包含了系统运行时的信息,如进程、内核参数、硬件信息等。它不是存储在磁盘上的,而是由内核在运行时动态生成的。用户可以通过读取/proc目录下的文件来获取系统信息。/root
,这是系统管理员(root用户)的家目录。只有root用户才能访问这个目录,里面通常包含了root用户的个人文件和配置文件/selinux
,Security-Enhanced Linux是一个安全模块,用于为Linux系统提供访问控制安全策略。/selinux目录可能包含SELinux相关的配置文件和策略文件,但具体的文件和目录结构可能因发行版而异。请注意,并非所有Linux发行版都默认启用SELinux。/srv
,这个目录用于存放服务数据。服务数据是指由系统或第三方服务提供的数据,这些数据不是由用户直接产生的,但可能需要由用户访问。例如,web服务器可能会将网站数据存放在/srv/www目录下。/sys
,类似于/proc,/sys也是一个虚拟文件系统,它提供了对内核对象(如设备、驱动等)的访问接口。通过这个目录,用户可以查询和修改内核参数,而无需直接编辑内核源代码或重新编译内核。/tmp
,这个目录用于存放临时文件。系统重启后,/tmp目录下的文件通常会被自动删除(尽管这取决于系统的具体配置)。任何用户都可以在这个目录中创建和删除文件,但应注意不要将重要数据存放在这里。/usr
,/usr目录包含了大量的用户级程序、库文件、文档等。它通常被划分为多个子目录,如/usr/bin(用户级可执行文件)、/usr/lib(用户级库文件)、/usr/share(共享文件,如文档和图标)等。/var
,目录用于存放经常变化的数据,如日志文件、邮件队列、打印作业等。这些文件的内容会随着系统的运行而不断增加,因此需要定期清理和维护/run
,目录是一个较新的目录,用于存放自系统启动以来运行中的信息。它替代了之前版本中使用的/var/run目录。/run目录中的文件在系统重启后会被自动清空。
下面比较重要的几个目录,切忌不要误删:
/etc:
上边也提到了,这个是系统中的配置文件,如果你更改了该目录下的某个文件可能会导致系统不能启动。
/bin, /sbin, /usr/bin, /usr/sbin:
这是系统预设的执行文件的放置目录,比如 ls 就是在 /bin/ls 目录下的。值得提出的是 /bin、/usr/bin
是给系统用户使用的指令(除 root 外的通用用户),而/sbin, /usr/sbin
则是给 root 使用的指令。
/var:
这是一个非常重要的目录,系统上跑了很多程序,那么每个程序都会有相应的日志产生,而这些日志就被记录到这个目录下,具体在 /var/log 目录下,另外 mail 的预设放置也是在这里。
三、Linux基本命令
3.1 相对路径
从当前工作目录(Current Working Directory)开始的路径。它不包含从根目录开始的完整路径,而是基于当前目录的位置来指定目标文件或目录的位置。相对路径不使用斜杠(/)作为开头。
路径的写法,不是由 / 写起,例如由 /usr/share/doc
要到 /usr/share/man
底下时,可以写成: cd .../man
这就是相对路径的写法
3.2 绝对路径
绝对路径是从根目录(/)开始的完整路径。它包含了从根目录到目标文件或目录所需经过的所有目录的完整列表,中间用斜杠(/)分隔。
例如,如果你想要访问位于/home/username/documents/file.txt
的文件,那么这个路径就是file.txt
的绝对路径
3.3 Linux基本命令
3.3.1 处理目录的命令
接下来我们就来看几个常见的处理目录的命令吧:
- ls(英文全拼:list files): 列出目录及文件名
- cd(英文全拼:change directory):切换目录
- pwd(英文全拼:print work directory):显示目前的目录
- mkdir(英文全拼:make directory):创建一个新的目录
- rmdir(英文全拼:remove directory):删除一个空的目录
- cp(英文全拼:copy file): 复制文件或目录
- rm(英文全拼:remove): 删除文件或目录
- mv(英文全拼:move file): 移动文件与目录,或修改文件与目录的名称
ls(列出命令):
选项与参数:
-a :全部的文件,连同隐藏文件,文件名以.开头(常用)
-d :显示详细信息(常用)
-l :查看目录属性(常用)
-h:与l配合使用显示详细文件大小
将目录下的所有文件列出来(含属性与隐藏档):
其中上述:u所有者 g所属组 o其他人 r读 w写 x执行
mkdir (创建新目录):
选项与参数:
-m :配置文件的权限喔!直接配置,不需要看默认权限 (umask)
-p :递归创建(常用)
rmdir (删除空的目录):
选项与参数:
**-p :**从该目录起,一次删除多级空目录
不过要注意的是,这个 rmdir 仅能删除空的目录,可以使用 rm 命令来删除非空目录。
cp (复制文件或目录):
选项与参数:
-r :递归复制,复制目录
-p:保留文件属性
-i:若已经存在时,在覆盖时会先询问动作的进行(常用)
mv (移动文件与目录,或修改名称):
选项与参数:
-f :如果目标文件已经存在,不会询问而直接覆盖;
-i :若目标文件已经存在时,就会询问是否覆盖!
rm (移除文件或目录):
选项与参数:
-f :强制执行
-i :在删除前会询问是否删除
-r :递归删除啊!最常用在删除目录
3.3.2 创建文件的命令
(1)使用touch命令
touch命令常用于创建空文件或更新文件的访问和修改时间。要创建一个.txt文件,你可以这样做:
bash
touch 文件名.txt
(2)使用文本编辑器
可以使用文本编辑器(如nano、vim、gedit等)来创建并编辑文件。这些工具允许你直接在文件中输入内容。
bash
nano 文件名.txt
或
bash
vim 文件名.txt
(3)使用重定向操作符>
可以使用重定向操作符>来创建并写入文件。这个命令通常用于将命令的输出保存到文件中,但你也可以用它来创建一个空文件或覆盖一个已存在的文件。
bash
echo -n > 文件名.txt
3.3.3 内容查看命令
Linux系统中使用以下命令来查看文件的内容:
- cat 由第一行开始显示文件内容
- tac 从最后一行开始显示,可以看出 tac 是 cat 的倒着写!
- nl 显示的时候,顺道输出行号!
- more 一页一页的显示文件内容
- less 与 more 类似,但是比 more 更好的是,他可以往前翻页!
- head 只看头几行
- tail 只看尾巴几行
你可以使用 man [命令]来查看各个命令的使用文档,如 :man cp。
cat第一行开始显示文件内容:
选项与参数:
-n :显示行号;
-b :列出行号,空白行不标行号!
-E :将结尾的断行字节 $ 显示出来;
-T :将 [tab] 按键以 ^I 显示出来;
-v :列出一些看不出来的特殊字符
-A :相当於 -vET 的整合选项;
tac最后一行开始显示
tac与cat命令刚好相反,文件内容从最后一行开始显示,可以看出 tac 是 cat 的倒着写!
more一页一页翻动
在 more 这个程序的运行过程中,你有几个按键可以按的:
空白键 (space):代表向下翻一页;
Enter :代表向下翻『一行』;
/字串 :代表在这个显示的内容当中,向下搜寻『字串』这个关键字;
:f :立刻显示出档名以及目前显示的行数;
q :代表立刻离开 more ,不再显示该文件内容。
b 或 [ctrl]-b :代表往回翻页,不过这动作只对文件有用,对管线无用。
主要是当文件的内容比较多时,可以慢慢向下翻动
less一页一页翻动
less运行时可以输入的命令有:
空白键 :向下翻动一页;
[pagedown]:向下翻动一页;
[pageup] :向上翻动一页;
/字串 :向下搜寻『字串』的功能;
?字串 :向上搜寻『字串』的功能;
n :重复前一个搜寻 (与 / 或 ? 有关!)
N :反向的重复前一个搜寻 (与 / 或 ? 有关!)
q :离开 less 这个程序;
head取出文件前面几行
选项与参数:
-n :指定行数
tail取出文件后面几行
选项与参数:
-n :后面接数字,代表显示几行的意思
-f :动态显示文件末尾内容
bash
tail [-n 输入要显示后多少行] 文件名
总结
这篇文章主要简单介绍Linux的基本概念、目录结构以及常用的命令。这些内容都是需要掌握的。