Linux基础

(一). 前言

​ 在学习Linux前,我们需要了解Linux的相关知识。

1. 什么是Linux

Linux是一款免费的操作系统,用户可以通过网络或其他途径免费获得,并可以任意修改其源代码。这是其他的操作系统所做不到的。

2. 为什么要学习Linux

​ 在日常生活工作中,我们大部分人都是用的Windows系统,而开发出来的程序一般都是在Linux下运行的。Windows是单用户的操作系统,而Linux是支持多用户多任务多层次的操作系统。Linux同时具有字符界面和图形界面。在字符界面用户可以通过键盘输入相应的指令来进行操作。

3. Linux优点

1.免费

2.很多软件原生都是在Linux下运行的,庞大的社区支持,生态环境好。

3.开源,可被定制,开放,多用户的网络操作系统。

4.相对稳定

4. Linux内核及发行版

Linux内核版本只有一个,发行版本有多个。

5. 操作系统的作用

​ 使用操作系统来直接操作硬件。把操作硬件的代码封装出一个又一个的系统调用,供其他的应用程序通过系统调用间接的操作计算机的硬件

6. Linux系统文件/目录

/etc: 系统配置文件的目录

/bin: 可执行二进制文件的目录(例如终端命令)

Linux系统中,文件的操作都是在/home目录里边,其他的都是系统文件。

7. Linux终端命令格式

1.command [-options] [parameter]

command: 命令名

[-options] : 选项(可选),可用来对命令进行控制

parameter:传给命令的参数

(二). Linux的基本使用

一. 查阅命令帮助信息

-help
  • 显示command命令的帮助信息

查看ls命令的帮助信息

ls --help
-man
  • 查阅command命令的使用手册

查看ls命令的使用手册

man ls
小技巧

ctrl + shift + = 放大终端

ctrl + - 缩小终端

Tab键 补全代码

. 当前目录

.. 上一级目录

二. Linux常用命令

序号命令英文描述
01lslist查看当前文件下的内容
02cd[目录名]changge diretory切换目录
03touch[文件名]touch新建文件
04mkdir[目录名]make diretory创建目录
05rm[文件名]remove删除指定文件
06pwdprint work diretory查看当前所在的工作目录
07clearclear清空屏幕内容
1. ls命令的使用
ls常用选项
参数含义
-a显示目录下的所有子目录和文件,包括隐藏文件
-l列表方式显示文件的详细信息
-h和-l配合使用,人性化的方式显示文件大小
ls基本操作
ls -l		# 列出当前目录下的文件详细信息 
ls -a		# 显示所有目录包括隐藏文件
ls -h		# 显示文件大小
ls联合使用
ls -lha	    # 显示目录下的所有文件(包括隐藏文件),人性化方式显示文件大小
2. cd命令的使用
命令描述
cd切换到当前用户的家目录(home/用户目录)
cd ~切换到当前用户的家目录(home/用户目录)
cd .保持当前目录
cd …返回上一级目录
cd -可以切换最近两次使用的工作目录
绝对路径和相对路径
  • cd后边可以是绝对路径,也可以是相对路径。

cd 绝对路径

cd /home/pancc/Desktop		# 切换到 /home/pancc/Desktop目录

cd 相对路径

cd Desktop/					# 切换到 Desktop目录
cd ~/Desktop/				# 切换到 家目录下的Desktop目录
3. touch命令的使用
  • touch命令新建的是文件,如过没有此文件,则直接新建。若一开始就有指定过的,则修改文件的创建时间。
touch a.txt					新建a.txt文件
4. mkdir命令的使用
选项描述
-p加入该选项后,可以递归创建目录
mkdir的基本操作
mkdir test1						创建test1目录

加入-p选项,表示递归创建目录

mkdir -p test1/test2/test3		创建test1/test2/test3目录

Linux系统中同一目录下不能出现同名的文件名

例如: touch test1 和 mkdir test1

5. rm命令的使用
选项描述
-r递归删除目录下的内容,删除目录时,要带上r
-f强制删除 (如果要删除的目录不存在,也不会有提示)
rm的基本操作

删除文件

rm a.txt				# 删除 a.txt文件

删除目录(删除目录要带上r)

rm -r test1				# 删除test1目录并且可以递归删除
rm -f test1				# 强制删除目录(如果要删除的目录不存在,也不会有提示)

Linux系统中,以d开头的表示目录,以r开头的表示文件

6. 通配符
  • linux中的通配符可以与命令配合在一起使用
通配符描述
*表示任意个字符
?代表一个字符,也至少有一个字符
[]可以匹配到字符组中的任何一个
[abc]匹配abc中的任意一个
[a-f]匹配从a-f内的任意一个字符
1. ls与通配符的使用
ls a*				# 查看以a开头的文件
ls *ab*				# 查看文件中有ab的文件
ls *.py				# 查看以.py结尾的文件
ls ?a?.txt			# 查看文件中至少有a的文件
ls [test]es.txt		# 根据字符组test,查看有es的文件
ls [1-5]*			# 根据[1-5]字符组,查看任意个文件
2. rm与通配符的使用
rm *3.txt			# 删除文件名以3结尾的文件
rm -r *				# 删除所有文件

7. tree命令

  • tree命令可以以树形结构来显示文件目录
选项描述
-d只显示目录
tree 				 # 树形展示目录下的文件
tree -d				 # 只显示目录的结构
tree -[目录名]		   # 显示指定目录结构

查看test目录的树形结构,并且只显示目录,不显示文件:

tree -d test

8. cp命令

  • cp命令可以将文件或目录复制到另一个目录中,相当于我们常对文件进行的copy操作
选项描述
-i添加提示(当出现同名文件时,会有提示)–推荐使用
-r复制目录

复制操作: cp 原路径 目标路径

复制文件

cp ~/Desktop/test/a.py .	# 将~/Desktop/test/ 目录下的a.py文件 复制到 当前目录下
cp a.py ~/Desktop/test		# 将当前目录下的a.py复制到~/Desktop/test目录下
cp -i a.py ~/Desktop/test	# 复制文件时设置提示

复制目录

cp -r a ~/Desktop/test		# 将a目录复制到~/Desktop/test目录下
  • 复制目录时,一定要有-r(递归目录下的所有子文件)

9. mv命令

  • mv可以用来移动文件或目录,也可以用来重命名文件或目录
选项描述
i覆盖文件前会有提示信息

移动操作:mv 文件名 目标路径

mv test ~/Desktop			# 将test目录移动到Desktop目录下
mv test/a.txt .				# 将a.txt文件移动到当前目录下
mv -i test/a.txt .			# 将a.txt文件移动到当前目录下(覆盖前会有提示)

重命名操作:mv 原文件名 要修改的文件名

mv test test01				# 将test文件重命名为test01

10. cat、more、grep命令

序号命令作用
01cat查看文件内容、创建文件、合并文件、追加文件内容等
02more分屏显示内容
03grep搜索文本内容(相当于平常使用的 ctrl + f )
cat
  • cat可以用来查看文件内容、创建文件、合并文件、追加文件内容等
  • cat可以一次性显示所有的文本内容,适合查看内容较少的文件
选项描述
-n显示行号(包含空行)
-b显示行号(不包含空行)

cat 文件名

cat a.py				# 查看文件a.py的内容
cat -n a.py 			# 查看文件a.py的内容并显示行数
cat -b a.py				# 查看文件a.py的内容并显示行数
cat -n test/a.py		# 查看文件a.py的内容并显示行数
more
  • more可以分屏显示文件的内容,每次分屏显示一页
  • 适合文本内容较多的文件

more 文件名

more a.py				#分屏显示a.py的内容
more test/a.py			#分屏显示a.py
grep
  • grep命令在Linux系统中是一种强大的文本搜索工具
  • grep可以对文本文件进行模式查找,模式查找也称为正则表达式
选项描述
-n显示匹配行以及行号
-v显示不包含匹配文本的所有行(相当于!n)
-i忽略大小写

grep 搜索内容 文件名

grep python a.py			# 在a.py文件中搜索"python"
grep -n python a.py			# 显示匹配行以及行号
grep -v python a.py			# 显示非匹配行
grep -i python a.py			# 忽略大小写

grep的联合使用

grep -ni python a.py

常用的两种模式查找

参数描述
^i行首模式(显示以i开头的行)
i$行尾模式(显示以i结尾的行)
grep ^i a.py				# 搜索以"i"开头的行
grep i$ a.py				# 搜索以"i"结尾的行
grep -n ^i a.py				# 搜索以"i"开头的行并显示行

11. echo命令

  • echo会在终端中显示指定的参数,一般会和重定向一起使用
echo hello					# 终端中显示hello

重定向 > 和 追加>>

>: 表示输出,文件的原有内容会被覆盖

>> :表示追加,会将文件内容追加到已有的文件末尾

echo python > a.py			# 文件a.py的内容是 "python"(覆盖了文件原来的内容)
echo java >> a.py			# 文件a.py的末尾添加了 "java"

Linux允许将命令显示结果重定向/追加到一个文件

ls -l > a.py				# 重定向
ls -l >> a.py				# 追加

12. | 管道

  • Linux中,一个命令的输出结果作为另一个命令的输入,可以通过管道来实现
  • 常用的管道命令有: moregrep
ls -lh ~ | more				# ls -lh的结果分屏显示
ls -lh ~ | grep abc			# ls -lh的结果中搜索"abc"
ls -lh ~| grep -ni abc		# ls -lh的结果中搜索"abc"

三. shutdown关机

  • Linux系统中可以使用命令shutdown进行关机
命令描述
shutdown1分钟后关机
shutdown -r1分钟后重启
shutdown -r now1分中后重启
shutdown 17:2017:30关机
shutdown -c取消之前的计划

四. 网络

  • 网卡是一个专门负责网络通讯的硬件设备

  • ip地址是设置在网卡上的地址信息(通过ip可以找到网络上的计算机)

  • 网卡相当于SIMip地址相当于电话号码 ip地址标识网卡

ifconfig查看网络配置信息

ifconfig

如果查不到本地的ip地址,可以使用

sudo ifconfig ens33

通过 | 管道查看网络配置

ifconfig | grep inet

ping ip地址–(查看两机之间通讯是否正常)

ping 170.120.110.31

查看本地网络是否工作正常

ping 127.0.0.1

五. 远程管理

1. SSH的使用
  • SSH(对数据进行了加密和压缩)目的是维护、管理远程的服务器
  • LinuxSSH是非常常用的工具,通过SSH客户端我们可以连接到运行的SSH服务器的远程机器上

ssh客户端的使用:

  • ssh [-p port] user@remote
  • user: 是远程机器上的用户名,如果不指定默认为当前用户
  • remote: 是远程服务器的地址,可以是ip/域名 或者是别名
  • port: 为ssh server监听的端口,如果不指定,就默认为22

ssh客户端登录到另一台机器的用户上

ssh -[p 22] user@remote

这里,我们使用ssh登录到用户是pancc,ip地址是192.168.241.131的服务器上:

ssh pancc@192.168.241.131
  • 默认端口是22

安装ssh:

apt-get install openssh-server

开启SSH服务:

service sshd start

若开启SSH服务前出现Unit sshd.service not found,则:

systemctl enable ssh.service
2. scp的使用
  • linux系统中,远程拷贝文件时,可以使用scp
  • windows系统中要在FileZillia中使用FTP远程服务器进行文件传输
选项描述
-r传送文件夹需要-r
-P若不是默认端口,则要设置-P来指定端口

scp -[P port] 文件名 user@remote:远程服务器文件

本地a.py拷贝到远程服务器Desktop目录下

scp a.py pancc@192.168.241.128:Desktop/

远程服务器的a.py文件拷贝到当前目录下

scp pancc@192.168.241.128:Desktop/a.py .
3. 远程登录
  • 客户端->服务端 私钥对文件进行加密
  • 服务端->客户端 公钥对文件进行加密
  • 公钥解密私钥,私钥解密公钥
1. 配置公钥

执行ssh-keygen,生成SSH钥匙:

ssh-keygen
2. 上传公钥到服务器

执行ssh-copy-id -p port user@remote,可以让远程服务器记住我们的公钥:

ssh-copy-id pancc@192.168.241.128

查看公钥:

cd ~/.ssh
cat id_rsa.pub
3. 设置远程服务器别名

cd.ssh目录下,新建一个config文件,在config文件中进行配置

# 1.进入.ssh目录
cd ~/.ssh
# 2.新建config文件
touch config
# 3.编辑config
vi config
# 4.配置config
Host 别名
        HostName ip地址
        User 用户名
        Port  22

在这里,设置远程服务器的别名为pcc

Host pcc							# 远程服务器别名
		HostName 192.168.241.128	# 远程服务器的ip地址
		User pancc					# 远程服务器的用户名
		Port 22						# 端口号

1.有了别名就可以很简便的登录上远程服务器

ssh pcc

2.有了别名传输文件到远程服务器时也可以很简便

scp a.py pcc:Desktop/

六. 用户权限

linux系统中,用户分别有: 拥有者、用户组、其他用户

如何确定硬链接数?

  • 如果是文件,一般只有一个硬链接(一种方式找到文件->绝对路径)。

  • 如果是目录取决于它的子目录,子目录越多硬链接数越多。

1. chmod
  • chmod可以修改用户/组 对 文件/目录 的权限

chmod +rwx 文件名/目录

#增加权限: 可读可写可执行
chmod +rwx a.py
#减少权限
chmod -rwx a.py

chmod 777 文件名

#1. 修改文件
chmod 777 a.py

#2. 修改目录
chmod 777 test 

Linux目录中的权限:

#1.若无执行x,无法cd(Linux目录中必须要有可执行x)
chmod -x test		# bash: cd: test: 权限不够

#2.若无可读r,无法ls
chmod -r test 		# ls: 无法打开目录'.': 权限不够

#3.若无可写,无法touch
chmod -w test 		# touch: 无法创建'a.py': 权限不够
2. 超级用户: sudo
  • root的身份进行登录
  • 平常我们登录的是标准用户
  • root账号通常用于系统的维护和管理
3. 组管理
  • 在使用组管理时,最前面需要使用sudo
序号命令描述
01groupadd 组名增加组
02groupdel 组名删除组
03cat /etc/group查看组信息
04chgrd -R 组名 文件/目录名修改文件/目录的所属组( -R递归)
  • /etc/group: 用来保存组信息
  • /etc 是专门用来保存系统信息的目录

增加test测试组

sudo groupadd test

删除dev开发组

sudo groupdel dev

查看组信息

cat /etc/group

修改a.py文件的所属组

sudo chgrp test a.py

修改test目录的所属组

sudo -R chgrp dev test01 (使用R选项递归)
4. 用户管理
  • 在使用用户管理时,最前面需要加上sudo
序号命令描述说明
01useradd -m -g 组名 用户名添加用户-m 自动建立用户家目录 -g指定用户所在组
02userdel -r 用户名删除用户-r 选项会自动删除用户家目录
03passwd设置密码如果是标准用户,直接passwd就可以对密码进行修改
04cat /etc/passwd查看用户信息新建用户后,用户保存信息会在,etc/passwd文件中
  • 创建用户时,默认会创建一个和用户名同名的组名
  • 创建用户时,若忘记添加-m选项指定新用户的家目录—(解决办法:删除用户,重新创建)
  • 用户信息保存在/etc/passwd文件中

查看有哪些用户

ls -l /home

添加pcc用户

sudo useradd -m -g dev pcc

删除python用户

sudo userdel -r python

设置pcc用户密码

sudo passwd pcc

查看用户信息

cat /etc/passwd
5. 查看用户信息
序号命令描述
01id查看用户uid(用户代号)和gid(组代号)
02who查看当前所有登录的用户列表
03whoami查看当前登录的用户账户名

查看pcc用户id

id pcc

查看当前登录的用户列表

who

查看当前登录的用户账户名

whoami

查看用户信息

cat /etc/group | grep dev	
cat /etc/passwd | grep pcc	# 用户名-密码(x)-用户代号-组代号-
usermod
命令描述
usermod -g 组名 用户名修改用户的主组
usermod -G 组名 用户名修改用户的附加组
  • 主组: /etc/passwd的第四列对应的组
  • 附加组:/etc/group 最后一列的用户列表,用于指定用户的附加权限

修改pcc用户的主组(dev),修改后的主组为(test):

sudo usermod -g test pcc

修改pcc用户的附加组(sudo),使得pcc用户拥有sudo权限:

sudo usermod -G sudo pcc
  • pcc用户添加了附加组sudo,有了sudo权限
which
  • which可以用来查询终端命令的所在位置

which 终端命令

查询ls命令的位置

which ls		# /bin/ls

查询passwd命令的位置

which passwd	# /usr/bin/passwd

ls -l /usr/bin/passwd
  • /etc/passwd是保存用户信息的文件
  • /usr/bin/passwd 是用于修改用户密码的程序
su
  • su可以用来切换当前用户名

su 用户名

切换到pcc用户

su pcc

七. 系统信息

1. 时间和日期
序号命令描述
01datedate查看系统日期
02cal -[y]cal查看日历,-y查看当年的日历

查看系统日期

date	

查看日历

cal
cal -y		# 当年日历
2. 磁盘信息
序号命令描述
01df -h显示磁盘剩余空间
02du -h [目录名]显示目录下的文件大小,不指定的话则是当前目录

显示磁盘剩余空间

df -h

显示当前目录的文件大小

du -h

显示当前目录下test目录的文件大小

du -h test
3. 进程信息
序号命令描述
01ps [aux]显示进程的信息,一般都使用ps au
02top动态的显示进程并且排序
03kill [-9] 进程代号强制结束进程(指定的进程代号)
  • a: 终端上的所有进程包括其他用户进程
  • u: 进程的详细状态
  • x: 非终端上的进程

显示进程信息

ps au

动态显示进程

top

强制结束进程

kill -9 2472		# 结束代号为2472的进程

八. 其他命令

1. 查找命令
  • 在我们不记得文件全名的时候,可以使用find进行搜索
序号命令描述
01find [路径] -name " "查找指定路径下扩展名是" "的文件,包括子目录
  • 如果省略路径,表示在当前文件夹下查找
  • find命令可以同时配合通配符使用

查找所有的.py文件

find -name "*.py"

查找指定路径下所有的.py文件

find ~/Desktop/test -name "*.py"
2. 软链接
  • 添加了软链接的文件,就类似windows的快捷方式
序号命令描述
01ln -s [源文件] [目标文件或目录]软链接一般的都是以绝对路径来创建
  • 如果以相对路径移动文件到别的目录很可能会出问题,文件打不开

  • 不加s则创建的是硬链接,硬链接几乎不使用

  • 源文件删除,软链接也就失效

创建软链接

ln -s /home/pancc/test/hello.txt link_01
  • 在当前目录下创建的软链接

删除软链接

rm -rf link_01
3. 打包/解包
1. tar -[xcvf]
选项描述
c创建打包文件
x解开打包文件
v列出打包解包的详细过程,显示进度
f指定文件名称,f后面一定是.tar文件,必须放选项最后
  • 打包 tar -xvf 包名 文件名

  • 解包 tar-cvf 包名

a.py,b.py,c.py打包成pack01.tar

tar -cvf pack01.tar a.py b.py c.py

pack01.tar进行解包

tar -xvf pack01.tar
2. gzip解压缩

压缩文件

tar -zcvf pack02.tar.gz a.py b.py c.py

解压文件

tar -zxvf pack02.tar.gz

若在后面加 -C 文件名,则表示解压到指定文件夹

tar -zxvf pack02.tar.gz -C test02
3. bzip解压缩

压缩文件

tar -jcvf pack03.tar.bz2 a.py b.py c.py

解压文件

tar -jxvf pack03.tar.bz2

解压到指定文件夹

tar -jxvf pack03.tar.bz2 -C test03
4. 安装软件/卸载/更新

安装

sudo apt install 软件名

卸载

sudo apt remove 软件名

更新

sudo apt apgrade 更新已安装的包
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值