Linux起初没图形化界面,所有操作(磁盘操作,文件存取,目录操作,进程管理,文件管理)都要靠命令。
服务器维护工作需要在安装ssh客户端来远程维护,ssh客户端并没有图形界面,都需要命令完成。
command [-options] [parameter]
命令名 [-命令选项:对命令进行额外控制] [命令参数:命令的操作对象,可以是文件,目录,用户、进程等],中括号代表可选
命令名 --help:显示帮助信息
man 命令名:显示使用手册(manual)
manual的操作键 | 功能 |
---|---|
空格 | 显示手册下一页 |
Enter键 | 一次滚动手册页的一行 |
b | 回滚一屏 |
f | 前滚一屏 |
q | 退出 |
/word | 搜索word字符串 |
命令 | 作用 |
---|---|
ls | list,查看当前文件夹下的内容 |
pwd | print work directory,查看当前所在的文件夹 |
cd [目录名] | change directory,切换文件夹 |
touch [文件名] | 如果文件不存在,创建文件 |
mkdir [目录名] | make directory,创建目录 |
rm [文件名] | remove,删除指定的文件名 |
rm -r [目录名] | 删除指定的目录 |
clear | 清屏 |
tree[目录名] | 以树状图列出文件目录结构 |
cp 源文件 目标文件 | copy复制文件/目录 |
mv 源文件 目标文件 | move移动或重命名文件/目录 |
cat 文件名 | concatenate查看文件内容、创建文件、文件合并、追加文件内容 |
more 文件名 | 分屏显示文件内容 |
grep 要搜索内容 | 搜索文本文件内容 |
shutdown 选项 时间 | 关机/重启 |
ifconfig | 查看配置网卡信息 |
ping ip地址 | 检测目标IP地址的连接是否正常 |
ssh -p (小写) 端口号 user@ip/域名/别名 | 远程登录 |
scp -P 端口号 源文件 user@ip/域名/别名: 远程目录/目标文件名 | 远程复制文件 |
chmod +/-rwx 文件/目录 | 对文件/目录 增加/删除 可读可写可执行的权限 |
sudo | 以root用户执行命令 |
groupadd 组名 | 添加组 |
groupdel 组名 | 删除组 |
cat/etc/group | 确认组信息 |
chgrp 组名 文件/目录名 | 修改文件/目录的所属组 |
sudo groupadd 组名 | 添加组 |
sudo groupdel 组名 | 删除组 |
cat /etc/group | 确认组信息 |
sudo chgrp -R 组名 被修改的文件/目录名 | 修改文件/目录的所属组,-R是递归修改子目录和文件的权限 |
sudo useradd -m -g 组名 新建用户名 | 添加新用户 |
sudo passwd 用户名 | 设置用户密码,普通用户可以直接修改自己账户密码 |
sudo userdel -r 用户名 | 删除用户 |
id [用户名] | 查看用户UID(用户代号)和GID(组代号) |
who | 查看当前所有登录的用户列表(包括当前系统登录和远程登录) |
whoami | 查看当前登录用户的账户名 |
sudo usermod -G 组 用户名 | 修改用户附加组(etc/group中的) |
which 所要查的命令 | 查看命令所在位置 |
su - 用户名 | 切换用户,并且切换目录(切换到当前用户的家目录) |
sudo chown 用户名 文件名/目录名 | 修改拥有者 |
ls常用选项 | 含义 |
---|---|
-a | 显示指定目录所有目录与文件,包括隐藏文件 |
-l | 以列表的形式显示文件的详细信息 |
-h | 配合-l人性化显示文件大小(以K为单位)ls -lh ,ls -lha |
drwxr-xr-x 2 wenmiao wenmiao 4.0K 10月 13 2020 公共的
-ls详细信息 | 含义 |
---|---|
d | 权限,第一个字母若是d代表目录,如果是-代表文件 |
rwx r-x r-x | 分别代表文件/目录的拥有者权限 、文件/目录组权限 、其他用户权限 ,r代表可读,w代表可写,x代表可执行,-代表没有该权限 |
2 | 硬链接数(有多少种方式能访问到当前的目录/文件) |
wenmiao | 文件/目录拥有者的名称 |
wenmiao | 文件/目录组用户的名称 |
4096K | 占用磁盘空间 |
10月13 2020 | 创建时间 |
公共的 | 目录/文件名称 |
硬链接数,一般文件的硬链接数是1,目录有多少个硬链接数取决于它有多少个子目录(子目录数+2)
ls通配符 | 含义 |
---|---|
* | 代表任意个字符(包括0个)(例1*.txt可以匹配1.txt,12.txt,123.txt) |
? | 代表1个字符(例1?.txt只能匹配11.txt,12.txt,13.txt) |
[abc] | 可以匹配字符组中的任意一个(例如[1245]23.txt可匹配123.txt,223.txt,423.txt,523.txt) |
[a-f] | 匹配从a到f范围内的任意一个字符(例如[1-4]23.txt可以匹配123.txt,223.txt,323.txt,423.txt) |
cd命令 | 含义 |
---|---|
cd | 切换到当前用户目录(/home/用户目录) |
cd ~ | 切换到当前用户目录(/home/用户目录)(~ 代表的是当前用户家目录,admin用户代表/home/admin,管理员用户代表/root) |
cd . | 保持当前目录不变 |
cd .. | 切换到上级目录 |
cd - | 进入到上一次所在目录(特殊用法,两个路径来回调) |
用来修改文件时间
如果文件不存在,会创建一个空白文件并修改文件时间
如果文件已经存在,修改文件的末次修改日期
创建一个新目录
mkdir选项 | 含义 |
---|---|
-p | 递归创建目录 mkdir -p a/b/c |
rm删除之后不能恢复,不能像windows图形化界面一样把文件放到回收站
所以千万不要在根目录里面删除系统文件和目录,都在家目录里面玩耍
删除目录要加-r,删除文件可以不加
rm选项 | 含义 |
---|---|
-f | 强制删除,忽略不存在的文件的提示信息,有则删除 |
-r | 递归删除目录下的所有内容,删除文件夹时必须加此参数 |
rm通配符 | 含义 |
---|---|
rm *2.txt | 删除以2.txt结尾的所有文件 |
rm -r * | 删除当前目录所有的文件和目录 |
以树状图列出文件目录结构
下载tree命令:sudo apt install tree # version 1.8.0-1
tree命令 | 含义 |
---|---|
tree | 从当前工作目录[.]开始显示树形图 |
tree[目录名] | 从指定工作目录开始显示树形图 |
tree ~ | ~代表家目录,代表从家目录开始显示树形图 |
tree选项 | 含义 |
---|---|
-d | 只显示目录,不显示文件 |
将给出的文件或目录复制到另一个文件或目录中,相当于DOS下的copy命令
rm删除目录需要加一个-r,cp复制目录需要加一个-r
cp命令 | 含义 |
---|---|
cp 源文件 目标目录 | 复制文件或目录到目标文件 |
cp 124.txt /home/wen/123 | 复制124.txt到/home/wen/123目录下 |
cp 1.txt /home/we/1.txt | 复制1.txt到/home/we/1.txt文件中,不存在1.txt文件则复制,存在则无法创建 |
cp 2.txt /home/we/1.txt | 复制2.txt到/home/we/1.txt文件中,修改文件名 |
cp -r 123 /home/wen/a | 复制123目录下的所有子目录和文件到/home/wen/a目录下 |
cp选项 | 含义 |
---|---|
-i | 覆盖文件前提示,输入n表示不覆盖,输入y表示覆盖 |
-r | 源文件是目录,将递归复制该目录下的所有子目录和文件,目标文件必须为一个目录名 |
-f | 覆盖已存在的目标文件而不给出提示 |
-v | 显示拷贝进度 |
mv命令选项 | 含义 |
---|---|
mv 源文件 目标文件 | 移动文件/目录,也可给文件/目录重命名 |
mv ./a/b/a.txt . | 将a.txt文件从./a/b目录下复制到.(d当前目录下) |
mv ./a/b/c ./a/b/d | 把整个c目录移动到d目录下(区别cp命令,目录也无须加-r) |
mv a.txt b.txt | 如果是同一个目录下,就不是复制,而是重命名,将a.txt重命名为b.txt |
mv -i b.txt readme.txt | 如果覆盖会提示,n表示不覆盖,y表示覆盖 |
-i | 覆盖文件前提示 |
cat命令 | 含义 |
---|---|
cat a.txt | 一次全部显示文本内容,适合查看内容较少时使用 |
cat选项 | 含义 |
---|---|
-b | 对非空输出行编号 |
-n | 对输出的所有行编号(忽略空行) |
more命令 | 含义 |
---|---|
more a.txt | 分屏显示文本内容,适合查看内容较多时使用 |
more操作键(与mannal命令类似) | 含义 |
---|---|
空格 | 显示手册下一页 |
Enter键 | 一次滚动手册页的一行 |
b | 回滚一屏 |
f | 前滚一屏 |
q | 退出 |
/word | 搜索word字符串 |
grep命令 | 含义 |
---|---|
grep sand readme.txt | 查找readme.txt文件中有sand字符串的行 |
grep -n sand readme.txt | 查找有 sand字符串的行并显示行号 |
grep -v sand readme.txt | 查找没有 sand字符串的行 |
grep -vn sand readme.txt | 查找没有 sand字符串的行并显示行号 |
grep -ni sand readme.txt | 查找有 sand字符串(忽略大小写)的行并显示行号 |
grep -n “Hello SAND” readme.txt | 如果要查找的字符串中间有空格,需要用引号 |
grep ^and readme.txt | 查找以and开头的所有行 |
grep and$ readme.txt | 查找以and结尾的所有行 |
grep选项 | 含义 |
---|---|
-n | 显示匹配行及行号 |
-v | 显示没有匹配文本的所有行(求反) |
-i | 忽略大小写 |
grep允许对文本进行模式查找(正则表达式)
grep参数 | 含义 |
---|---|
^a | 行首,查找以a开头的行 |
ke$ | 行尾,查找以ke结尾的行 |
touch创建文件需要先创建,再编辑内容
touch b
echo创建文件可以直接创建并写入内容
echo python >> cc
echo命令 | 含义 |
---|---|
echo hello python | 将hello python输出到终端 |
linux允许将命令执行结果重定向到一个文件(即将本应该显示在终端上的内容输出/追加到指定文件中)
重定向符号 | 含义 |
---|
|表示输出,会覆盖文件原有内容
|表示追加,会将内容追加到已有文件末尾
重定向命令 | 含义 |
---|---|
echo hello p > redirect | 若redirect文件不存在,则创建一个,并将hello p写入redirect文件中;若存在则直接覆盖 |
ls -lh >redirect | 将ls -lh查出的内容写入或覆盖到redirect文件中 |
echo hello p2 >> redirect | 若redirect不存在,则创建一个并写入,若存在则将hello p2直接追加到redirect文件中 |
tree >> redirect | 将tree查出的树形图追加到redirect文件中 |
linux允许将一个命令的输出通过管道做为另一个命令的输入
左端写,右端读
常用管道命令 | 含义 |
---|---|
more | 分屏显示内容 |
grep | 在命令执行结果基础上查询指定的文本 |
ls -lha ~ | more:查出家目录的包括隐藏文件的所有文件目录信息,通过管道传给more命令,让其分屏显示
ls -lha ~ | grep -n test:同上,通过管道传给grep命令,让其查出有test字符的行及行号(过滤执行结果)
shutdown命令 | 含义 |
---|---|
shutdown | 不指定选项和参数,默认表示1分钟后关机 |
shutdown -c | 如果不想1分钟后关机,在1分钟之内输入这个命令可以取消关机 |
shutdown -r now | 时间为now,加了-r选项,表示现在关机 |
shutdown 20:25 | 系统在今天20:25关机 |
shutdown +10 | 系统在10分钟后关机 |
远程维护服务器时最好不要关闭系统,而应该重新启动系统
shutdown选项 | 含义 |
---|---|
-r | 重新启动(不加是直接关机,加了是重新启动) |
网卡是一个专门负责两台电脑网络通讯的硬件设备(有限网卡,无线网卡WIFI)
IP地址是设置在网卡上的地址信息,地址信息唯一标识一个网卡
电脑比作电话,网卡相当于SIM卡,IP地址相当于电话号码
IP地址是唯一的,否则会出现冲突,无法正常通讯,不同的系统(Windows,linux,macOS在同一台电脑上虚拟机上的IP地址也不同,但相似)
下载ifconfig命令:sudo apt install net-tools
ipconfig命令 | 含义 |
---|---|
ipconfig | 查看或配置网卡信息 |
ipconfig ` | ` grep inet |
一台计算机可能会有一个物理网卡和多个虚拟网卡,在linux中物理网卡的名字通常以ensXX表示
127.0.0.1被称为本地回环/环回地址,一般来测试本机网卡是否正常
ping命令 | 含义 |
---|---|
ping IP地址 | 检测目标主机是否连接正常,ctrl+c结束发包 |
ping 127.0.0.1 | 检测本地网卡工作是否正常,ctrl+c结束发包 |
linux中,想要终止一个终端程序,绝大多数都使用ctrl+c
如果ping的IP地址不在局域网中,会显示错误信息:Destination Host Unreachable,目标主机不能到达
通过SSH客户端可以连接到运行了SSH服务器的远程机器上
在自己的服务器上安装一个SSH服务器软件,在自己电脑上安装一个SSH客户端软件
在linux和macOS系统SSH客户端都是自带的,在windows系统需要自己安装SSH客户端
SSH客户端是一种使用Secure Shell(SSH)协议连接到远程计算机的软件程序
SSH是目前较可靠,专门为远程登录会话和其他网络服务提供安全性协议
ssh协议的作用 | 含义 |
---|---|
对传输的数据进行加密 | 防止信息泄露 ,防止DNS欺骗和IP欺骗 |
对数据进行压缩 | 提高传输速度 |
域名:一串用点分隔的名字组成,例如www.itcast.cn
域名是IP地址的别名,方便用户记忆(可以通过域名或IP地址在网络上找到一台计算机)
IP地址
:通过IP地址找到网络上的计算机
端口号
:通过端口号可以找到计算机上运行的应用程序
SSH服务器默认的端口号是22,如果默认端口号,在连接的时候,可以省略
ping www.baidu.com(域名)可以得到百度的IP地址(39.156.66.14)
输入39.156.66.14可以打开百度首页,输入39.156.66.14:80也可以打开百度首页
通过域名:端口号
来访问一台电脑上的某一个应用
服务 | 端口号 |
---|---|
SSH服务器 | 22 |
Web服务器 | 80 |
HTTPS | 443 |
FTP服务器 | 21 |
ssh [-p port] user@remote
使用exit退出当前用户的登录
ssh终端命令只能在linux或unix系统下使用,如果在windows系统中,需要安装PuTTY或Xshell客户端软件
ssh参数 | 含义 |
---|---|
user | 远程机器上的用户名,若不指定默认为当前用户 |
remote | 远程机器的地址,可以是IP/域名/别名 |
port | SSH Server监听的端口,如果不指定,默认值22 |
ssh命令 | 含义 |
---|---|
ssh -p 22 w@192.168.106.128 | 远程登录IP地址为192.168.106.128的电脑,用户名为w,端口号为22的服务 |
登录后可以对这台电脑进行操作,比如
建文件:touch 1.txt
强制重启:sudo shutdown -r now
下载网址:PuTTY
安装后,需要输入想要访问电脑的IP地址,如果出现 connection refused错误,说明虚拟机没有安装ssh-server
安装ssh-server:sudo apt-get install openssh-server
有关ssh配置信息都保存在用户家目录下的.ssh目录下(.ssh是一个隐藏目录)
Ubuntu作为客户端,macOS作为服务器,连接macOS
免密码登录视频
完成以下两个操作,设置免密登录后,无论是ssh登录命令或者scp复制命令都不需要输入密码了
免密登录的原理:
①.配置公钥:ssh-keygen
,生成id_rsa.pub(公钥),id_rsa(私钥)两个文件,即可生成SSH钥匙
②.上传公钥到服务器:ssh-copy-id -p port user@remote
,将公钥文件复制到远程服务器,让远程服务器记住公钥,现在公钥在远程服务器,私钥在本地
SSH客户端发送数据使用私钥加密,SSH服务器接收后使用公钥解密
SSH服务器发送数据使用公钥加密,SSH客户端接收后使用私钥解密
③.因为数据都是加密的,就不需要再输入密码登录了
非对称加密:公钥加密的数据,需要用私钥解密;私钥加密的数据,需要用公钥解密
配置别名
①. touch config:在~/.ssh/目录下创建一个config文件
②.将下面配置信息粘贴到config文件中
Host 别名
HostName Ip地址
User user
Port 22
③.登录远程服务器时,只需要使用ssh 别名,即可登录,不需要再输入ssh -p 22 user@remote了
④.复制文件时,使用scp -r ~/Desktop myhost:Desktop/demo即可
scp终端命令只能在linux或unix系统下使用,macOS也可以(因为macOS是基于unix系统开发的)
如果在windows系统,需要安装PuTTY,使用pscp命令行根据或者安装FIleZilla使用FTP进行文件传输
scp命令 | 含义 |
---|---|
scp -P port 源文件 user@remote: 远程目录/目标文件名 | 远程拷贝文件(secure copy) |
scp -P port 01.py user@remote:Desktop/02.py | 把本地当前目录下的01.py文件 复制到远程家目录下的Desktop/02.py中 |
scp -P port user@remote:Desktop/01.py 02.py | 把远程家目录下的Desktop/01.py文件 复制到本地当前目录下的02.py中 |
scp -r demo user@remote:Desktop | 把当前目录下的demo目录 复制到远程家目录下的Desktop下 |
scp -r user@remote:Desktop demo | 把远程家目录下的Desktop目录 复制到当前目录下的demo下 |
scp选项 | 含义 |
---|---|
-r | 若源文件是目录,夹-r选项将递归复制该目录下的所有子目录和文件 |
-p | 若远程SSH服务器的端口号不是22,需要用大写字母-P指定端口 |
注:
:
后面的路径是相对路径,是相对于用户的家目录作为参照路径
注:与ssh命令区别
ssh使用的是小写p,scp命令使用的是大写的P
ssh是单向的,只能SSH客户端操作SSH服务器
scp是双向的,可以SSH客户端复制到SSH服务器,也可以SSH服务器复制到SSH客户端
scp命令 | 含义 |
---|---|
scp -P 22 wen@192.168.106.128:Desk/01.py . | 远程家目录Desk/01.py文件 复制到本地当前目录下的中 |
scp -P 22 01.py wen@192.168.106.128:Desk | 本地当前目录下的01.py文件 复制到远程家目录Desk/中 |
scp -r demo wen@192.168.106.128:Desk | 当前目录下的demo目录 复制到远程家目录下的Desk下 |
scp -r wen@192.168.106.128:Desk demo | 远程家目录下的Desk目录 复制到当前目录下的demo下 |
下载路径:FileZilla
FileZilla传输文件时使用的是FTP服务,而不是SSH服务,因此端口号是21
filezilla无法连接到服务器
打开filezilla—左上角文件下的站点管理器—新站点—输入主机,用户和密码,不需要输入端口号–连接即可
可以看到本地站点和远程站点,将需要的文件直接拖到对方的文件所在区即可完成复制
用户管理包括用户管理与组管理
本机或远程登录系统都必须有一个账号(用户)
并且不同用户对于不同系统资源(文件/目录)拥有不同的使用权限
组是为了方便用户管理,将具有相同权限的用户放在同一个组中
先设置组,对组设置好权限,再将不同的权限的用户添加到对应的有相应权限的组中
文件/目录的权限 | 缩写/数字代号 |
---|---|
可读(read) | r/4 |
可写(write) | w/2 |
可执行(excute) | x/1 |
chmod命令 | 含义 |
---|---|
chmod +/- rwx 文件名/目录名 | 修改用户/组对文件/目录的权限 |
chmod + rw 01.py | 给01.py文件增加 可读可写的权限 |
chmod - rw 01.py | 给01.py文件删除 可读可写的权限 |
chmod +x 01.py | 添加可执行权限 |
chmod -x test(目录) | 删除test目录的可执行权限 |
拥有可执行权限的文件ls命令下会
变绿
,使用./01.py
执行01.py文件
以下是01.py文件的内容
#!/usr/bin/python3
print("Hello World")
print("这是美好的一天")
在linux中,要想针对目录下执行终端命令,就必须给该目录增加可执行的权限,否则会提示权限不够
目录没有的权限 | 什么命令执行不了 |
---|---|
删除目录可执行 权限 | cd test就无法进入test目录,ls test也无法查看test目录内容,touch 01.py无法执行 |
删除目录可读 权限 | ls test无法执行 |
删除目录可写 权限 | touch 01.py无法执行 |
root用户
用于系统的维护和管理(不用于日常使用),对操作系统的所有资源具有所有访问权限
不推荐直接用root账号登录系统,linux安装过程中会提示创建一个用户账号,这个默认用户被称为标准用户
su(substitute user),表示使用另一个用户身份
日常使用标准用户,标准用户想维护管理系统时,加一个sudo,表示以其他身份(预设身份是root)执行命令
用户使用sudo需要输入密码,之后有5分钟的有效期限,超过期限需要重新输入密码
若未经授权的用户企图使用sudo,会发出警告邮件给管理员root用户
提示:创建组/删除组/修改组的终端命令都需要通过
sudo
执行
如果不加sudo会报错,没有权限,/etc是存放系统配置信息的目录,/etc/group存放组用户的配置信息
命令 | 含义 |
---|---|
sudo groupadd 组名 | 添加组 |
sudo groupdel 组名 | 删除组 |
cat /etc/group | 确认组信息 |
sudo chgrp -R 组名 被修改的文件/目录名 | 修改文件/目录的所属组,-R是递归修改子目录和文件的权限 |
预先针对组设置权限,后将不同用户添加到对应组中,就不用依次为每个用户设置权限
#1.在python用户桌面目录下创建python学习目录
wenmiao@ubuntu:~/桌面$ mkdir python学习
#2.新建dev组
wenmiao@ubuntu:~/桌面$ sudo groupadd dev
#3.将python学习目录的组修改为dev
wenmiao@ubuntu:~/桌面$ sudo chgrp -R dev python学习
提示:创建用户/删除用户/修改用户的终端命令都需要通过
sudo
执行
命令 | 含义 |
---|---|
sudo useradd -m -g 组名 新建用户名 | 添加新用户 |
sudo passwd 用户名 | 设置用户密码,普通用户可以直接修改自己账户密码 |
使用默认的useradd添加用户后是没有sudo权限的,可以使用usermod将用户添加到sudo附加组中(见下面)
选项 | 含义 |
---|---|
-m | 自动建立用户家目录,如果不使用-m选项就不会创建用户的家目录/home/zhangsan |
-g | 指定用户所在组,否则会建立一个与用户名同名的组(这是为何平时ls -lh后看到的用户和组的名字相同) |
命令 | 含义 |
---|---|
sudo userdel -r 用户名 | 删除用户 |
选项 | 含义 |
---|---|
-r | 自动删除用户的家目录 |
如果创建用户时忘记加上-m选项,最简单的方法是使用userdel -r将用户删除,重新创建
用户信息保存在/etc/passwd文件中
命令 | 含义 |
---|---|
id [用户名] | 查看用户UID(用户代号)和GID(组代号) |
who | 查看当前所有登录的用户列表(包括当前系统登录和远程登录) |
whoami | 查看当前登录用户的账户名 |
用来设置用户的主组附加组和登录shell
命令 | 含义 |
---|---|
sudo usermod -g 组 用户名 | 修改用户主组(etc/passwd中的GID) |
sudo usermod -G 组 用户名 | 修改用户附加组(etc/group中的) |
sudo usermod -s /bin/bash 用户名 | 修改用户登录Shell(一个软件,在Ubuntu中使用ctrl+alt+T打开) |
Ubuntu默认使用的Shell叫
dash
(软件,效率高,但显示不美观),而wenmiao用户使用的Shell叫bash
使用 cat /etc/passwd查看,dash的结尾是/bin/sh,而bash的结尾是/bin/bash
/etc/passwd:保存用户信息的文本文件(不能执行)
/usr/bin/passwd:用于修改用户密码的程序(可执行)
命令 | 含义 |
---|---|
which 所要查的命令 | 查看命令所在位置 |
which passwd | pswwd命令的位置存放在/usr/bin/passwd |
linux中,大多数可执行文件都存放在/bin、/sbin、/usr/bin、/usr/sbin
命令 | 含义 |
---|---|
/bin | 普通的二进制可执行文件目录,主要用于具体应用(binary) |
/sbin | 系统管理员专用,主要用于系统管理的二进制可执行文件目录(system binary) |
/usr/bin | 后期安装的普通的一些软件(user commands for applications ) |
/usr/sbin | 后期安装与系统管理相关,超级用户的一些管理程序(super user commands for applications) |
命令 | 含义 |
---|---|
su 用户名 | 切换用户,但不切换当前目录,任然是在原用户的家目录中 |
su - 用户名 | 切换用户,并且切换目录(切换到当前用户的家目录) |
su - | 切换到root目录,不安全,不推荐使用,但在切换到root目录后不需要使用sudo了 |
使用exit退出,一直到退出shell
命令 | 含义 |
---|---|
sudo chown 用户名 文件名/目录名 | 修改拥有者 |
sudo chgrp -R 组名 文件名/目录名 | 递归的修改所有目录和子目录的组 |
sudo chmod -R 755 文件名/目录名 | 递归的修改所有目录和子目录的权限 |
755,第一个7表示文件/目录所有者权限,第二个7表示所在组权限,第三个5表示其他用户权限
r表示4,w表示2,x表示1,如果不设置就是0,如果rwx(可读可写可执行权限都有,则数字就是4+2+1=7)
权限 | 数字 |
---|---|
rwx | 7(4+2+1) |
rw- | 6(4+2+0) |
r-x | 5(4+0+1) |
r– | 4(4+0+0) |
-wx | 3(0+2+1) |
-w- | 2(0+2+0) |
–x | 1(0+0+1) |
— | 0(0+0+0) |
常见数字组合 | 含义(u用户、g组、o其他) |
---|---|
777 | u=rwx,g=rwx,o=rwx |
755 | u=rwx,g=r-x,o=r-x |
644 | u=rw-,g=r–,o=r– |
当远程维护服务器时,方便查看服务器上当前的系统日期和时间/磁盘空间占用情况/程序执行情况
命令 | 含义 |
---|---|
date | 查看系统时间 |
cal | 查看本月日历(calender) |
cal -y | -y选项可以查看一年的日历 |
命令 | 含义 |
---|---|
df -h | 显示磁盘剩余空间(disk free) |
du -h[目录名] | 显示目录下文件大小(disk usage) |
du -h | 不加目录就显示当前目录的文件大小 |
选项 | 含义 |
---|---|
-h | 以人性化的方式显示文件大小 |
进程:当前正在执行的一个程序
在电脑上安装的QQ不能说是进程,只有被打开后才能叫做进程
命令 | 含义 |
---|---|
ps aux | 查看进程的详细状况(process status) |
top | 动态显示运行中进程并且排序(查看CPU和内存占用率最高的进程),退出top命令输入q |
kill [-9] PID进程代号 | 终止指定代号的进程,-9表示强制终止 |
ps命令:若不加选项,只显示当前用户通过终端启动的应用程序
kill命令:最好终止由当前用户开启的进程,而不要终止root身份开启的进程,否则可能导致系统崩溃
选项 | 含义 |
---|---|
a | 显示终端上所有进程,包括其他用户的进程 |
u | 显示进程的详细信息 |
x | 显示没有控制终端的进程(不是通过终端启动的进程) |
find命令 | 含义 |
---|---|
find [路径] -name “*.py” | 查找指定路径下扩展名为.py的文件,包括指定目录的子目录 |
如果省略路径,表示在当前文件夹下查找
使用find命令,可以使用通配符*、?、[abc]、[a-f]
find例子 | 含义 |
---|---|
find -name “*1* ” | 搜索桌面目录文件名包含1的文件 |
find -name “*.txt ” | 搜索桌面目录下,所有以.txt为扩展名的文件 |
find -name “1*” | 搜索桌面目录下,以数字1开头的文件 |
在linux中,文件名和文件的数据是分开存储的
软链接相当于windows中的快捷方式,可以快速的打开软链接指向的文件
为什么要使用软链接(快捷方式):因为文件目录结构比较深(像/home/wenmiao/桌面/demo/b/c/01.py)
ln命令 | 含义 |
---|---|
ln -s 被链接的源文件 链接文件 | 建立文件软链接 |
创建后的两个文件占用相同大小的硬盘空间
源文件要使用绝对路径,不能使用相对路径,方便移动链接文件后,仍能够正常使用
软链接演练 | 含义 |
---|---|
mkdir -p demo/b/c | 在桌面目录下创建demo/b/c目录 |
mv 01.py demo/b/c | 将桌面目录下的01.py移动到demo/b/c目录下 |
ln -s /home/wenmiao/桌面/demo/b/c/01.py FirstPython | 使用相对路径在桌面目录下新建01.py的软链接FirstPython |
ln -s ./demo/b/c/01.py FirstPython2 | 使用绝对路径在桌面目录下新建01.py的软链接FirstPython2 |
mv FirstPython ./demo | 将FirstPython移动到demo目录下 |
mv FirstPython2 ./demo | 将FirstPython2移动到demo目录下 |
mv First* ./demo | 可以将上面两个命令替换掉 |
相对路径和绝对路径创建的软链接第一次创建时都可以正常使用,但移动后相对路径的无法使用
对比使用相对路径和绝对路径的区别:
使用相对路径创建的软链接移动后链接断开,不能打开了
使用绝对路径创建的软链接移动后链接链接,还可以打开
硬链接就是有多少种方式可以访问文件或目录
硬链接数,一般文件的硬链接数是1,目录有多少个硬链接数取决于它有多少个子目录(子目录数+2)
ln命令 | 含义 |
---|---|
ln 被链接的源文件 链接文件 | 建立硬链接文件 |
硬链接演练 | 含义 |
---|---|
在哪个目录建立硬链接,要先切换到当前目录,ln /home/wenmiao/桌面/demo/b/c/01.py 01_hard | 在~/Desktop/demo 目录下建立~/Desktop/demo/b/c/01.py的硬链接01_hard |
ls -l | 使用ls -l查看文件的硬链接数 |
rm ./demo/b/c/01.py | 删除01.py文件 |
tree | 并且使用tree来确认demo目录下的三个链接文件 |
软硬链接区别
硬链接在源文件删除后任然可以访问,只是硬链接数少1条
软链接在源文件删除后无论是相对路径创建的还是绝对路径创建的都会失效
不同操作系统中,常用的打包方式不一样
Windows常用rar
Mac常用zip
Linux常用tar.gz
tar是把一系列文件打包到一个大文件夹中,也可以把一个打包的大文件恢复成一系列文件(只打包和解包,不压缩)
tar命令 | 含义 |
---|---|
tar -cvf 打包文件.tar 被打包文件/路径1,2,3 | 打包文件 |
tar -xvf 打包文件.tar | 解包文件 |
tar选项 | 含义 |
---|---|
c | 生成档案文件,创建打包文件 |
x | 解开档案文件 |
v | 列出归档解档的详细过程,显示进度 |
f | 指定档案文件名称,f后面一定是.tar文件,所以必须放选项后面(其他选项顺序随意) |
打包/解包演练 | 含义 |
---|---|
在桌面创建demo文件夹 | mkdir demo |
在demo下新建三个空白文件01.py,02.py,03.py | touch 01.py,touch 02.py,touch 03.py |
将三个文件打成py.tar的包 | tar -cvf py.tar 01.py 02.py 03.py |
新建tar目录 | mkdir tar |
将py.tar移动到tar目录下 | mv py.tar ./tar |
进入tar目录,解包py.tar | cd tar,tar -xvf py.tar |
tar只负责打tar包,扩展名为xxx.tar
gzip负责压缩tar打包后的文件,扩展名为xxx.tar.gz
tar选项 | 含义 |
---|---|
-z | 调用gzip,方面实现打包后压缩和解压缩功能 |
-C | 解压缩到指定目录,注意要解压缩的目录必须存在,不加-C选项默认解压缩在当前目录 |
gzip+tar命令 | 含义 |
---|---|
tar -zcvf 打包文件.tar.gz 被压缩文件/路径 | 压缩文件 |
tar -zxvf 打包文件.tar.gz | 解压缩文件 |
tar -zxvf 打包文件.tar.gz -C 目标路径 | 解压缩到指定路径 |
gzip压缩/解压缩演练 | 含义 |
---|---|
将三个文件压缩成py.tar.gz | tar -zcvf py.tar.gz *.py |
将py.tar.gz移动到tar目录下 | mv py.tar.gz ./tar |
进入gz目录,解压缩py.tar.gz到kk文件夹 | cd gz,tar -zxvf py.tar.gz -C /home/wenmiao/桌面/demo/kk |
tar只负责打tar包,扩展名为xxx.tar
bzip2负责压缩tar打包后的文件,扩展名为xxx.tar.bz2
tar选项 | 含义 |
---|---|
-j | 调用bzip2,方面实现打包后压缩和解压缩功能 |
bzip2+tar命令 | 含义 |
---|---|
tar -jcvf 打包文件.tar.gz 被压缩文件/路径 | 压缩文件 |
tar -jxvf 打包文件.tar.gz | 解压缩文件 |
tar -jxvf 打包文件.tar.gz -C 目标路径 | 解压缩到指定路径 |
bzip2压缩/解压缩演练 | 含义 |
---|---|
将三个文件压缩成py.tar.bz2 | tar -jcvf py.tar.bz2 *.py |
解压缩py.tar.bz2到demo/bz2文件夹中 | tar -jxvf py.tar.bz2 -C /home/wenmiao/桌面/demo/bz2 |
apt命令 | 含义 |
---|---|
sudo apt install 软件包 | 在终端中安装软件 |
sudo apt remove 软件名 | 卸载软件 |
sudo apt upgrade | 更新已安装的软件包,去服务器上检查哪些软件有更新包,就会自动更新 |
apt演练 | 含义 |
---|---|
sudo apt install sl | sl命令执行后,终端中显示一个小火车 |
sudo apt install htop | htop命令可以使top命令查出的进程排名软件更美观 |
软件源:安装所有软件的源头
如果希望在Ubuntu中安装软件更加快速,可以通过设置镜像源,选择一个访问网速更快的服务器,来提高软件下载/安装服务
更新服务器的过程时间较长,更新完成后,再安装软件就会从新设置的服务器下载软件了
镜像源:所有服务器的内容是相同的(镜像),但位置不同,国内服务器通常速度更快一些