虚拟机:
通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统
在不破坏原有的操作系统的基础上,学习新的操作系统
Linux分为内核及发行版本
内核是系统的心脏,管理硬件设备 ;在内核内部由终端系统进行系统调用来管理硬件
发行版是将左面应用系统加上linux内核,发行版通过系统调用(内核提供的)访问硬件,
Linux是多用户操作系统,一台计算机在同一时间可以由多个用户使用,多个用户共享系统的全部硬件和软件资源
ubuntu没有盘符的概念,只有一个根目录表/,只存放目录
在根目录下一个主要的文件/home目录,在这个目录下可以显示不同的用户,是用户家目录,zhangsan,lisi,wangwu,等等,在不同的用户名下有各自的文件夹,这些文件就是属于他们自己的。
/etc:系统配置文件存放的目录
/bin:可执行的二进制文件的目录
ctrl+shift+= 放大终端窗口字体
ctrl+- 缩小终端窗口字体
ls(list) 查看当前文件夹下的内容 (文件夹蓝色显示,文件是白色字体,横向显示文件夹内容)
pwd(print wrok directory)查看当前所在文件夹
cd[目录名](change directory)切换文件夹
cd 切换到当前用户的主目录(/home/用户目录 )
cd~ 切换到当前用户的主目录(/home/用户目录 )
cd. 保持在当前目录不变
cd.. 切换到上级目录
cd- 可以在最近两次工作目录之间来回切换
touch【文件夹】(touch) 如果文件不存在,新建文件夹:如果文件已经存在,可以修改文件的末次修改时间
mkdir【目录名】(make directory ) 创建目录 -p可以递归创建目录a/b/c/d 新创建目录的名称不能与目前目录中已有的目录或文件名同名
rm[文件名] (remove) 删除指定的文件名,无法直接删除目录
- f 强制删除,忽略不存在的文件,无需提示 即使不存在删除也不提醒
-r 递归地删除目录下的内容,删除文件夹时必须加次参数 rm -r *将桌面上的所有文件都删除 删除不能进行恢复
clear 清屏
Ubuntu 分大小写
command 【-options】【parameter】
command命令 ls pwd clear可以直接命令不需要有后续操作
option选项,可以对命令进行控制,也可以省略
parameter:传给命令的参数,可以是另个或多个
【】代表可选
touch 文件名称 cd 目录名称 (带参数的命令)
rm -r 目录名 (带option选项和参数,这样的情况下是可以删除目录的)
command --help 显示command命令的帮助信息
man command 显示command命令的帮助信息
查阅command命令的使用手册
空格键 显示手册的下一屏
Enter键 一次滚动手册页的一行
b 回滚一屏
f 前滚一屏
q 退出
自动补全
文件/目录/命令 的前几个字母敲出之后,按下tab键,可以自动补全
曾经使用过的命令
按上/下光标键可以在曾经使用
ctrl+c 另起一行,不想执行当前的命令
以.开头的文件为隐藏文件,要使用-a的参数才能显示 ls -a (-a显示所有目录)
.为当前目录
..为上一级目录
rm .123.txt 删除隐藏文件
-a 显示指定目录下所有子目录与文件,包括隐藏文件
-l 以列表方式显示文件的详细信息(ls -l 是纵向的方式显示内容且包括详细信息)
-h 配合-l 以人性化的方式显示文件大小(以kb方式显示文件大小)
ls -l -h 的效果与ls -lh一样
通配符
* 代表任意个数个字符 (也可以是0个)
[email protected]:~/Desktop$ ls 1* #可以把首字母是1的所有文件显示出来
111.txt 123.txt 145.txt 178.txt
ls *1 这样是无法找到.txt文件的 需要使用ls *1.txt 这样可以找到文件名最后一个是1的文件
? 代表任意一个字符,至少1个
[] 表示可以匹配字符组中的任意一个
[abc] 匹配a b c中的任意一个
[a-f] 匹配从a到f范围内的任意一个
拷贝和移动文件
tree[目录名] 以树状图列出文件目录结构、
tree -d 只显示目录
tree ~ 表示文件的家目录
cp源文件 目标文件 (copy)复制文件或者目录
mv 源文件 目标文件 (move)移动文件或目录/文件或目录重命名
cp : cp 源文件 目标文件 (目标文件是指将源文件复制到哪里)
cp命令的功能是将给出的文件或目录复制到另一个文件或目录中,先党羽DOS下的copy命令(如果现在是home/Desktop,希望将home/Documents下的readme/txt文件复制到桌面上,操作cp ~Documents/readme.txt ./readme.txt (~是指家目录, 而.是))
-i 覆盖文件前提示(将文件复制到桌面上,如果修改了原文件,再次复制到桌面的文件时会有提示是否进行覆盖)
-r 若给出的源文件是目录文件,则cp
将递归赋值该目录下的所有子目录和文件,目标文件必须为一个目录名
cp -r a test (将a递归文件复制到test)
mv:命令可以用来移动文件或目录,也可以给文件或目录重命名
mv 源文件 目标文件
mv test ~/Documents/(当前目录下的test文件移动到Documents下)
mv a/b/c/123.txt . (将当前目录下的a/b/c/123.txt直接移动到当前桌面下)
mv ./read.txt ./demo.txt 相当于将read文件重命名
-i 覆盖文件前提示 mv -i readme.txt 123.txt
查看文件内容
cat文件名(concatenate) 查看文件内容、创建文件、文件合并、追加文件内容等功能
cat 123.txt 查看文件内容显示全部的内容,适合查看内容较少的文件
-b 对非空输出行编号 nl命令与cat -b的效果等价
-n 对输出的所有行编号
more 文件名 分屏显示文件内容
more 123.txt 显示文件的部分内容 ,每次只显示一页内容,适合查看内容较多的文本文件
后续按空格键就可以显示
Enter键 一次滚动手册页的一行
b 回滚一屏
f 前滚一屏
q 退出
/word 搜索word字符串
grep 搜索文本文件名 搜索文本文件内容 ,对文本文件进行模式查找(正则表达式) grep as 123.txt 在123.txt中查找包含as的行,as会高亮显示
选项:
-n 显示匹配航及行号 grep -n as 123.txt
-v 显示不包含匹配文本的所有行(求反)grep -vn as 123.txt将不包含as的行显示出来,且包含行号
-i 忽略大小写
参数:
常用的两种模式查找
^a 行首,搜索以a开头的行 grep -n ^f 123.txt
ke$ 行尾,搜索以ke结束的行
有空格的字符串搜索,以引号的方式引起来再进行搜索
echo 文字内容
echo会在终端中显示参数指定的文字,通常会和重定向联合使用,echo创建文件的同时指定内容
重定向 >和>>
Linux 允许将命令执行结果重定向到一个文件
将本应显示在终端上的内容 输出/追加到已有文件的末尾
>表示输出,会覆盖文件原有的内容
>>表示追加,会将内容追加到已有文件的末尾
echo Hello Python >a 这样会创建出一个名为a的文件,文件的内容为Hello Python
ls -lh >a 会将ls以列表人性化显示的内容输入到新建的文件a中
管道 |
Linux允许将一个命令的输出,可以通过管道,作为另一个命令的输入
ls -lh | more 将输出结果通关管道传递给能够分屏显示的more
|左右分为两端,左端塞东西(写),右端取东西(读)
more:分屏显示内容
grep:在命令执行结果的基础上查询指定的文本
远程管理
关机/重启 : shutdown 选项 时间
-r 重新启动 (选项位置不加-r表示关机 加上是重新启动 时间显示now表示现在,不指定时间 和选项1分钟之后关闭电脑)
shutdown 20:25 在20:25关机
shutdown +10 10分钟之后自动关机
shutdown -c 取消之前指定的关机
查看或者配置网卡信息
ifconfig(configure a network interface)查看/配置计算机当前网卡配置信息
ping ip地址 检测到目标ip地址的连接是否正常
网卡:专门负责网络通讯的硬件设备(SIM卡)
IP地址:设置在网 卡上的地址信息(电话号码)
ens33 和lo的 inet地址是网卡地址 127.0.0.1本地会还地址,测试本机网卡是否正常
ifconfig | grep inet这样可以快速的找到网卡地址
inet6对应的是ipv6的地址
ping:一般用来检测当前计算机到目标计算机之间的网络是否通畅、数值越大,速度越慢
检测到目标主机的连接是否正常
ping IP 地址
检测本机网卡是否正常
ping 127.0.0.1
在Linux中,想要终止一个终端程序的执行,绝大多数都可以使用ctrl+c
远程登录和复制文件
ssh用户名@ip 关机/重新启动(secure shell)
scp用户名@ip:文件名或路径 用户名@ip:文件名或路径 远程复制文件(secure copy)
ssh基础
通过SSH客户端我们可以连接到运行了SSH服务器的远程机器上
数据传输是加密的,防止信息泄露(SSH客户端和SSH服务器都是软件)
数据传输是压缩的,提高传输速度
SSH客户端使用Secure Shell协议连接到远程计算机的软件程序
访问服务器 :通过ip地址找到计算机,在通过端口号找到计算机上安装的程序,用户才可以看到访问结果
客户端的简单使用
ssh [-p port] [email protected] (ssh -p 22 [email protected])
user是远程机器上的用户名,不指定的话为当前用户
remote远程机器地址,可以是 IP/域名,或者别名
port是SSH Server监听的端口,如果不指定,就默认值22
exit退出当前用户的登录 ssh只能在Linux或UNIX下使用
权限不够的情况下,在命令前面加上sudo
putty连接:打开putty在ip地址位置输入ubuntu的ip点击open就可以进行连接,输入账号和密码就可以在这里操作设置ubuntu上的文件目录
xshell连接:和putty连接基本一致
scp(secure copy)
在linux下用来进行远程拷贝文件的命令
地址格式与ssh基本相同,需要注意的是:在指定端口时使用的是大写的-P而不是小写的
把本地当前目录下的01.py复制到远程家目录下的Desktop/01.py
:号后面的路径如果不是绝对路径,则以用户的家目录作为参照路径
scp -P port 01.py user @remote:Desktop/01.py (-P端口 +源文件+目标文件(要加上[email protected]:))
把远程家目录下的Desktop/01.py文件复制到本地当前目录下的01.py
scp -P port [email protected]:Desktop/01.py 01.py
加上-r选项可以传送文件夹
把当前目录下的demo文件夹复制到远程家目录下的Desktop
scp -r demo [email protected]:Desktop
把远程家目录下的Desktop复制到当前目录下的demo文件夹
scp -r [email protected]:Desktop demo
-r 若给出的源文件是目录文件,将递归复制该目录下的所有子目录和文件,目标文件必须为一个目录名
-P 若远程SSH服务器的端口不是22,需要使用大写字母-P选定指定端口
PS C:\Users\86178> cd .\Desktop\
PS C:\Users\86178\Desktop> scp -P 22 [email protected]:Desktop/123.txt .
The authenticity of host '192.152.278.722 (192.152.278.722)' can't be established.
ECDSA key fingerprint is SHA256:jamdyvs3wN3CjiuN7zhH9p6K4Mg4ooLKqJBpszxtfws.
Are you sure you want to continue connecting (yes/no/[fingerprint])?
Warning: Permanently added '192.152.278.722' (ECDSA) to the list of known hosts.
[email protected]'s password:
123.txt 100% 0 0.0KB/s 00:00
PS C:\Users\86178\Desktop> scp -P 22 123.txt [email protected]:Desktop
[email protected]'s password:
123.txt 100% 5 1.0KB/s 00:00
scp这个终端命令只能在Linux或者UNIX系统下使用
如果在windows下,可以使用putty的pscp命令行工具或者是FileZilla的FTP进行文件传输
FileZilla
FileZilla在传输文件时,使用的是FTP(文件传输协议)服务不是SSH服务,端口号是21,在远程和本地进行拖拽就可以在两边进行移动
SSH(高级)
免密码登录
配置别名
有关SSH配置信息都保存在用户家目录下的.ssh(.在前是隐藏文件)目录下
1)免密码登录
配置公钥 ssh-keygen即可生成SSH钥匙
上传公钥到服务器 执行ssh-copy-id -p port [email protected] ,可以让远程服务器记住我们的公钥
将公钥复制到SSH服务器,这样之后公钥在服务器,私钥在本地
客户端发送的数据使用私钥加密,然后由网络传输到SSH服务器,再使用公钥解密,在ssh服务器使用公钥加密的数据传输到客户端使用私钥解密
2) 配置别名
每次都输入 ssh -p port [email protected],可以使用别名来替代上面的一大串
用户权限
用户管理包括用户和组管理
在Linux系统中,不管主机还是远程登录系统,每个系统都必须拥有一个账号 ,并且对于不同的系统资源拥有不同的使用权限
对文件/目录的权限包括:
读(read) r 数字代号 4
写(write) w 数字代号 2
执行(excute)x 数字代号 1
无权限 - 数字代号 0
可以在Linux中,指定每一个用户针对不同的文件或者目录的不同权限
为了方便用户的管理,提出了组的概念 ,将不同的用户添加到对应的组中,针对组设置好权限
ls -l扩展
-rw -rw r-- 三个为一组 r是可读,w是可写 -是无权限
第一组-rw是文件或目录的拥有者对应的权限 python用户
第二组对应的是文件或目录组对应的权限 第二列的python 是组的名称
第三组是其他用户具有的权限
文件的硬链接数是1是因为如果不在当前的desktop目录下访问文件,也可以使用绝对路径一次性访问到文件
aaa文件夹的硬连接数是2是因为我们可以通过~Desktop$ cd /jome/python/Desktop/aaa/(通过绝对路径进入aaa)或者通过在~/Desktop/aaa$ cd . (cd.是进入到当前目录)进入aaa中
如果在aaa文件夹下有新建了一个a文件夹,那么aaa的访问方式除了上述两种之外,还有进入aaa的a中 ~Desktop/aaa/a$ cd .. (..表示上级目录)这样也可以进入aaa
,这样的话硬件的连接方式就是3
可以使用 ls -l /etc/passwd 查看文件的详细信息
chmod简单使用
chmod可以修改 用户/组对文件/目录的权限
chmod +/- rwx 文件名|目录名(+表示增加权限,-表示删除权限,rwx是任意组合)
会一次性修改拥有者/组权限
如果目录没有可执行权限,就不能对目录进行终端操作 ,可读权限:阅读目录的内容,可写权限:修改目录内容;但是如果想要对目录执行终端操作,必须有可执行权限
超级用户:root账号通常用于系统的维护和管理,对操作系统的所有资源具有访问权限
在Linux安装过程中,系统会自动创建一个用户账户,而这个默认的用户称为“标准用户”
su 表示使用另一个用户的身份
sudo命令用来以其他身份执行命令,预设身份是root,当标准用户需要进行一些 系统维护工作时,可以在命令前面加上sudo,以root身份执行操作
若未经授权的用户企图使用sudo,则会发出警告邮件给管理员
组管理的终端命令
创建组/删除组的终端命令都需要通过sudo执行
01 groupadd 组名 添加组
02 groupdel 组名 删除组
03 cat /etc/group 确认组信息
04 chgrp -R 组名 文件/目录名 修改文件/目录的所属组
组信息保存在/etc/roup文件中 /etc目录是专门用来保存系统配置信息的目录
用户管理的终端命令
创建/删除用户/修改其他用户密码的终端命令需要通过sudo执行
01 useradd -m -g 组 新建用户名 添加新用户 -m自动建立用户家目录 -g指定用户所在的组否则会建立一个同名的组,默认对家目录没有可写权限
02 passwd 用户名 设置用户密码 如果是普通用户,直接用passwd,可以修改
03 userdel -r 用户名 删除用户 -r选项会自动删除用户家目录
04 cat /etc/passwd | grep 用户名 确认用户信息 新建用户后,用户信息会保存在/etc/passwd 文件中
创建用户时忘记加上-m选项指定新用户的家目录,最简单的方法就是删除用户,重新创建
查看用户信息
01 id[用户名] 查看用户UID和GID信息(UID用户名 GID组名)
02 who 查看当前所有登录的用户列表
python tty7 开机时间(IP地址)
03 whoami 查看当前登录用户的账户名
python 只出现python(用户名)
usermod -G sudo 用户名 :是把这个用户名添加到sudo附加组
两个passwd
/etc/passwd:用于保存用户信息的文件
/usr/bin/passwd:是用于修改用户密码的程序
使用which可以查看执行命令所在位置
which psswd
切换用户
su - 用户名 切换用户,并且切换目录 加上-可以切换到用户家目录,否则保持位置不变,还是切换之前的用户的家目录
exit 退出当前登录账户,切换到之前的用户
su不加用户名可以切换到root但不推荐使用
修改文件权限
01 chown 修改拥有者 chown 用户名 文件名|目录名(修改了之后,用户可能不在这个组里,那么它的使用权限就是其他用户的权限了)
02 chgrp 修改组 chgrp -R 组名 文件名|目录名
03 chomd 修改权限 chomd -R 755 文件名|目录名
755中第一个数字表示拥有者权限,第二个数字表示组权限,第三个数字表示其他用户权限