前言Linux系统的基本操作对于大多数计算机类相关学生或者相关从业人员都很重要,本文以树莓派上的Linux系统为实例,从基础出发,详细介绍Linux系统中最需要掌握的知识点,介绍常见的命令参数与用法。 什么是Linux这里就不搬概念了,Linux本质上和Window一样都是运行在计算机上的操作系统,但是有一个核心区别就是Linux是开源的。 Linux主要学习范畴 运行在桌面端的Linux像Windows一样有图形化界面,我们可以用鼠标操作,但是大多数Linux系统运行在服务器上没有图形化界面,那我们怎么执行呢?使用Shell工具,它就像一个外部用户与Linux内核沟通的桥梁,例如复制粘贴重命名文件,这些都是通过Linux命令来执行的,我们所要学习的就是要理解这些命令并使用这些命令。 如何使用Shell工具知道了Linux基本概念后,我们该如何使用Shell工具来登录远程Linux系统呢?
如果你的电脑上的操作系统是Windows,可以使用putty工具或者Xshell(具体按照方法可自行搜索)登录Linux系统,在指定界面按照提示输入Linux系统的IP地址、用户名、登录密码即可登录; Xshell登录
如果你的电脑上的系统是macOS或者Linux类系统(Ubuntu、CentOS、Kylin、Raspberry Pi OS)那么直接打开终端工具输入命令: ssh 用户名@IP地址 再按提示输入登录密码就可以登录了。 在树莓派上远程登录服务器 如果是单纯的学习Linux基础知识也可以直接打开终端就可以了! 使用Xshell连接Linux服务器这里以Windows上的终端工具Xshell登录树莓派的Linux系统为例,登录成功后,系统会显示上一次登录的时间。 使用Xshell连接树莓派
使用命令行工具通用的快捷键在学习Linux命令之前,有一些快捷键是必须要掌握的,它能大大提高你的Linux命令使用效率。
文件和目录Linux的文件目录系统Linux不像Windows分了C盘和D盘,它只有一个根目录,根目录有若干文件夹,每一个文件夹都有它特定的用途:
浏览和切换目录Windows有图形界面,浏览和切换目录可以直接在我的电脑里点击鼠标,而Linux如何在命令行交互界面中浏览文件目录呢? ls列出文件和目录(Linux中最常用的命令之一)。 【常用参数】
cd表示切换目录 【常用写法】
pwd显示当前目录的路径(显示从根目录开始到当前目录的绝对路径) which查看Linux中某个可执行程序的位置 pi@raspberrypi4b:/home $ which python3/usr/bin/python3 du列举出当前目录的文件大小信息
cat一次性查看文件的所有内容并将其输出到终端中来,适合查看内容不多的文本文件
less分页显示文本内容,适合查看内容较多的文本文件 【快捷指令】
head和tail显示文件的开头或者末尾几行 默认显示10行,可以添加参数n指定显示n行文本内容,tail还有一个重要的用处就是查看log日志文件,可以实时查看日志文件结尾的更新情况。使用参数-f可以每隔一秒查看文件是否有更新,也可以使用参数-s指定间隔时间查看文本内容是否更新 tail -f -s 3 access.log touch创建一个文件
如果指定的文件在当前文件夹中不存在,则直接创建一个空白的新文件; 如果想要一次性创建多个文件,可以使用命令: touch file1.txt file2.txt file3.txt mkdir创建一个目录,类似于Windows中新建一个指定名称的文件夹; 【常用参数】
文本编辑在Linux系统的命令行中如果需要对文本进行编辑,主要有两个应用nano和vim,其中vim是vi的增强版本。这里主要介绍一下vim的基本使用。 vim【常用写法】 vim hello.txt # 当前目录下有hello.txt就直接编辑,若没有则新建一个该名称的空白文件 vim打开文本时,默认启动正常模式(只能跳转光标,不可编辑文本),需要输入键盘i键才会启动编辑模式。编辑好文件后,如果想保存输入:进入命令模式,此时输入的命令显示在控制台最后一行。wq表示保存退出,按回车执行操作。如果不想保存文本,q!表示不保存退出。 【注意事项】 vim文本编辑器对于新手来说,使用不太习惯,但是如果熟练使用vim编辑器后,该工具能非常有效的提高工作效率。 vim操作指南 解压缩在Linux系统中,将多个文件压缩成一个压缩包的过程,主要分成两部分: 第一步:将多个文件打包成一个tar包 第二步:将tar包压缩成压缩文件。 tartar的主要用途是将文件夹或者多个文件创建成一个tar包(归档) 【常用写法】
【参数解读】
zip/unzip如果需要在Linux中处理zip压缩包,可以使用unzip解压,zip进行压缩。 【常用写法】 unzip xiaoyu.zip # 解压zip压缩包unzip -l xiaoyu.zip # 只查看内容,不解压zip xiaoyu.zip xiaoyu/ # 将xiaoyu文件夹压缩为xiaoyu.zip 文件基本操作cp拷贝文件和目录 【常用写法】
rm删除文件或目录 【常用参数】
【常用写法】
sortsort可以快速对文本文件的行进行排序 【常用写法】
【案例讲解】 我们创建一个文本文件city.txt,写入以下内容:
执行sort city.txt命令后系统会输出: sort排序效果 【常用参数】
uniquniq命令用于删除文本文件中的重复内容 【常用写法】
【常用参数】
【注意事项】 uniq只能去除文本文件中连续重复的行数 scpscp是secure copy的缩写,可以通过网络安全地把文件从一台电脑拷贝到另一台电脑。 【基本用法】 scp 源文件 目标文件 其中原文件和目标文件的格式为user@ip:file_name scp ./hello.txt root@192.168.123.160:~/ # 将本系统目录下的hello.txt文件拷贝到服务器的家目录下scp root@106.55.62.52:~/hello.txt ./hello.txt # 将服务器家目录下的hello.txt文件拷贝到本系统当前目录下 lnln是Link的缩写表示创建链接,在Linux系统中文件名与文件内容是分开存储的,每一个文件名通过inode标识绑定到对应的文件内容。为了保护某些重要文件的安全已经方便系统操作,Linux系统设计了两种链接:硬链接和软链接。 (1)硬链接 硬链接 如果我们使用命令ln file1 file2让file2与file1进行硬链接,此时假若删除file1,会发现file2不会受到影响,对于硬链接来说删除链接任意一方的文件,共同指向的文件内容并不会从硬盘中删除。只有同时删除了file1与file2,它们所共同指向的文件内容才会消失。 (2)软链接 软链接 软连接类似于Windows里的快捷方式,执行创建软链接命令ln -s file1 file3后,系统会创建file3指向file1的软链接。此时file3只是file1的快捷方式,它指向file1显示file1的内容。但是file3与file1的inode并不同,我们删除file3,file1不会受到影响。但是如果删除file1的话,file3就会变成死链接。 【案例思考】 删除原文件file1后,硬链接文件file2不受影响,软连接文件file3开始无法访问 用户与权限用户的管理在Linux系统中允许多个用户存在,这些用户被划分到不同的组中。但是Linux系统中的root用户(超级管理员用户)最特殊,它被划分到root组中,具有系统中的最高权限。为了保护各个用户在系统中的文件安全,Linux系统定义了各种文件权限级别:可读、可写、可执行。 sudo以root身份执行命令
假如nginx.conf这个文件对于普通用户执行vim工具只有可读权限,如果要编辑该文件则需要以root用户身份来执行。这时候只需要使用sudo命令即可。 useradd添加新用户 【常用参数】
useradd建立账户后,使用passwd来设定账户的密码,使用userdel来删除账户。注意执行这些命令都需要root用户权限。 useradd -g root -d /home/xy xiaoyu # 新建一个用户名为xiaoyu的用户,属于root组家目录在/home/xy文件夹下passwd xiaoyu # 修改xiaoyu用户的密码userdel xiaoyu # 删除xiaoyu用户名,其家目录下的文件夹依然保留userdel xiaoyu -r # 删除xiaoyu用户名的同时删除家目录下的文件夹 su全称switch user表示切换用户
如果以root用户登录系统后再su切换成普通用户,可以使用exit切换回root用户身份。 群组的管理Linux中每一个用户都属于一个特定的群组,如果创建用户时没有指定特定的群组,系统会为用户分配一个与用户名相同的群组,并把用户规划给该群组。 groupadd创建群组,用法和useradd相同 groupadd com # 创建com组groupdel com # 删除com组 groups查看用户对应的组名称
chgrp用户修改文件的群组 chgrp com file1.txt # 将file1.txt的文件群组修改为com chown修改文件的所有者
chown设置文件属主 文件权限管理chmod修改文件的访问权限 chmod 777 hello.java # 将hello.java这个文件设置为所有用户可读可写可执行 chmod设置文件权限 在Linux系统中,不同的用户处于不同的地位拥有不同的权限。为了保护系统的安全,Linux系统对不同的用户访问同一文件(包括目录)的权限做了不同的规定。 可以使用ll或者ls -l命令,查看当前目录下文件的属性以及文件所属的用户和组。
其中drwxr-xr-x表示文件或目录的权限,我们来解读一下这些字母分别代表什么含义:
权限字符串的含义 每个文件的熟悉由10个字符来确定,第0位确定文件类型,第1-3位确定文件属主(文件的所有者)拥有该文件的权限,第4-6位确定文件的属组(所有者同组用户)拥有该文件的权限,第7-9位确定其它用户拥有该文件的权限。 【案例分析】 我们试着用上面的知识解读一下-rwxrw-r--的权限信息;
数字分配权限回到前面的图,我们发现有的时候可以通过数字来赋予文件权限,比如chmod 777 file.txt,这是什么意思呢?原来Linux系统中将读权限设置为数字4、写权限设置为数字2、执行权限设置为数字1,如果需要表示权限只需要做一些简单加法就行。 【案例分析】 我们试着理解chmod 540 hello.py这个语句给hello.py这个文件赋予的权限。
字母分配权限除了使用字符数字,Linux系统中还可以通过字母来分配权限;
【案例分析】
查找在Linux系统中,我们通常需要检索某一个文件,这时候就需要相关的查找工具。 locate搜索包含关键字的所有文件和目录,支持正则表达式。 locate file1.txt 【注意事项】
findfind是一款Linux内置工具,主要的功能是找文件,甚至可以在找到文件后再进行后续操作,功能非常强大。 【常用写法】
find . -type d -name 'XXXXX' # 在当前目录查找XXXXX的目录 type 的值可选为:
find -name '*.java' -atime +7 # 7天之前访问过的java文件find . -mtime -1 # 近1天修改过的文件
grepgrep主要用于查找文件里符合条件的字符串 【常用参数】
grep -nr xiaoyu *.py # 递归查找当前文件夹下所有的py文件中含有关键字xiaoyu的位置并显示行数grep -v xiaoyu *.py # 查找当前文件夹下所有的py文件中不包含xiaoyu关键字的所有行grep -E ^xiao /root/*.py # 查找root文件夹下所有的py文件中以xiao开头的位置 软件安装在日常使用的Linux系统中,安装软件的方式主要有两种。Red Hat家族的.rpm包,一般使用yum进行安装;另一个Debian家族的.deb包,一般使用apt进行安装。 常用Linux系统的两大家族 以树莓派的Raspberry Pi OS系统为例,它属于Debian家族安装,其软件包后缀为.deb,可以使用apt-get为系统安装软件,系统大部分操作基本上和Ubuntu类似。 仓库安装软件apt-getapt-get适用于deb包从互联网软件仓库中搜索、安装、卸载软件或者操作系统,其中apt的全称是Advanced Package Tool。 【常用操作】
【注意事项】
sudo apt-get update # 刷新软件源sudo apt-get upgrade # 将系统中所有软件包一次性升级到最新版本
编译安装软件我们刚学会了使用apt-get安装软件,但是如果遇到apt仓库中没有的软件,我们就需要学会更高级的软件安装方法:编译源码安装; 【基本步骤】
tar -xzvf httpd-2.4.53.tar.gz # 解压压缩包cd httpd-2.4.53 # 进入解压后的文件夹
重定向与管道理解命令的去向在Linux系统中一个命令的去向可以有三个方向:终端显示、文件、另外一个命令的入参。 命令输出的三个去向 命令一般是通过键盘输入,然后输出到终端、文件,它的标准用语分别是标准输入stdin、标准输出stdout、标准错误输出stderr 标准输入输出 重定向重定向是指本来要显示在终端的结果,重新输送到别的地方(文件中或者作为其它命令的输入) 输出重定向
2.使用>>输出重定向,表示新内容追加到文件末尾; echo 'hello' >> hello.txt 3.使用2>输出重定向,表示标准错误输出
4.使用2>&1输出重定向,表示标准输出和错误输出都重定向到一个地方 cat hello.txt > res.txt 2>&1 # 覆盖cat hello.txt >> res.txt 2>&1 # 追加 输入重定向
输出结果与cat hello.txt相同,但是系统的工作流程是不同的。 2. 使用<<输入重定向 wc -m << END # 输入这个命令后,终端就进入键盘输入模式,其中END为结束命令 管道管道,顾名思义就是可以像管道一样把两个命令的输入输出连起来,英文是pipeline在Linux中可以用符号|表示。 管道的功能 例如我们对city.txt这个文本文件进行查看、排序、降重,可以写成:
这样我们就能找出进过排序与降重的城市列表了。 【注意事项】 cat、sort、uniq、grep等命令均支持管道符,是因为这些命令均可以从标准输入中读取要处理的文本(即从标准输入中读取参数);而对于部分命令,例如rm、kill等命令则不支持从标准输入中读取参数,因为其只支持从命令行中读取参数。 进程进程查看在Windows系统中,如果某个应用卡住了,我们可以在任务管理器里找到对应进程,然后强制结束。那么在Linux系统中如何查看进程呢? w可以查看当前系统中有哪些用户处于登录状态及其他信息 pi@raspberrypi4b:~ $ w 23:44:34 up 4 min, 3 users, load average: 0.33, 0.44, 0.21USER TTY FROM LOGIN@ IDLE JCPU PCPU WHATpi tty7 :0 19:48 3:56m 0.88s 0.16s /usr/bin/lxsesspi tty1 - 19:48 3:56m 0.15s 0.12s -bashpi pts/0 192.168.123.122 23:41 2.00s 0.13s 0.03s w 【数据解读】 第一行显示的是任务队列信息 23:44:34表示当前时间,up 4 min表示系统正常运行了4分钟,3 users表示当前有三个用户在登录,load average代表负载均衡信息,三个值分别代表最近1分钟、5分钟、15分钟的平均负载。
ps用于显示当前系统中的进程,是当前时刻系统的进程快照,不会实时更新。
【数据解读】
【常用参数】
top获取进程的动态列表 top命令 【数据解读】 第一行:同w命令第一行相同,显示的是任务队列信息; 第二行:总进程数目、处于运行态、休眠态、停止态、僵尸态的进程数目; 第三行:显示的是CPU状态信息,
第四行:内存的状态 第五行:交换分区的信息 表格抬头含义:
【常用参数】
kill用于结束某个进程,可通过ps 或者 top找到相关进程的pid然后使用kill结束该进程 kill 455 # 结束进程ID为455的进程kill 537 455 # 结束进程ID为537和455的进程kill -9 1753 # 强制结束进程 管理进程默认情况下,用户创建的进程都是前台进程,一般的前台进程从键盘读取数据,把结果输出到显示器。后台进程则不必等待程序运行结束,就可以输入其它命令。需要在执行的命令后添加&符号,表示启动一个后台进程。 &启动后台进程,该后台进程与终端相关联,一旦关闭终端,进程就结束了。
nohup启动进程使其不受挂断操作(关闭终端操作)的影响,一般情况下nohup与&结合使用表明启动后台进程且不受挂断操作影响。 nohup ./frps -c frps.ini > /dev/null 2>&1 & # 后台读取配置信息启动frps,无论是否启动成功都将结果重定向到/dev/null 这时如果需要结束该进程需要在top中找到其PID然后使用kill结束该进程。 bg在Linux系统中,处于前台运行状态的进程,使用快捷键Ctrl + Z可以将进程转为后台暂停状态。同样,处于后台暂停状态的进程可以使用bg命令转为前台运行状态。 【常用写法】
fg对于后台运行的进程或者后台暂停的进程,使用命令fg都可以将其转为前台运行的进程。 对于进程前后台的切换,其控制方法可以看下面的运行状态图: 进程前后台切换 守护进程一个运行起来的程序被称为进程,在Linux中有些进程不与任何进程关联,不论用户的身份如何,都在后台运行。这些进程的父进程是PID为1的进程,PID为1的进程只有在系统关闭时才会被销毁。它会在后台一直运行等待分配工作,我们将这类进程称之为守护进程。 守护进程的名字通常会在最后有一个d,表示daemon守护的意思,例如systemd、httpd 最后希望能通过本文的学习,能够让小伙伴对Linux系统的基本操作有一个全面的认识,希望大家一边看着文中的内容一边动手操作,这样才能真正掌握知识。 看到这了,希望大家能给小雨点个赞! |
|