文件和目录常用命令:
按下tab键可以自动补全或出现可能存在的命令
按上/下方向键可以在曾使用过的命令之间来回切换,按ctrl+c可以退出选择
在终端中对文件的操作都不能回撤
-
ls 查看目录下的内容【不止是当前目录下的!ls后面啥的不跟,默认就是当前目录;如果是ls py,就会显示py目录下的内容】
-
ls -a 显示隐藏文件【隐藏文件首字符为.】
-
ls -l 以列表的方式显示文件的详细信息
-
ls -h 配合-l 一起 以人性化的方式显示文件大小
-
ls 通配符的使用
? 只能代表一个字符
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vKTFM6nh-1596703539235)(D:\学习笔记\放在typora里的图片\1595580857466.png)]
-
-
cd 切换工作目录
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PC5YRpKJ-1596703539237)(D:\学习笔记\放在typora里的图片\1595581209332.png)]
-
pwd 查看当前所在目录
-
tree 以树状图列出目录结构
-d 只显示目录,不显示文件
-
创建和删除操作
【在linux中,同一个目录下,目录与文件不能重名】
-
touch 文件不存在,则创建文件;文件存在,则修改文件的末次修改时间
-
mkdir 创建目录
-p 可以递归创建目录
-
rm 删除文件;注意删除就不能恢复,会从磁盘中直接删除,不会进入垃圾桶;使用时一定要小心!!
-r 递归删除目录;【用rmdir只能删除空文件夹,rm -r可以删除非空文件夹】
-f 强制删除,文件不存在也不会报错
rm也可以使用通配符进行删除
【如果在根目录下执行 rm -rf * 整个系统就GG了】
-
-
拷贝
cp
和移动mv
文件-
cp 源文件 目标文件
-i 覆盖文件前提示
-r 若源文件是目录,则cp -r将递归复制该目录下的所有子目录和文件,目标文件必须为一个目录名
-
mv 源文件 目标文件
移动文件或目录;如果源文件和目标文件路径相同,则对其进行重命名;如果目标文件已存在,则会覆盖
-i 覆盖文件前提示
-
-
查看文件内容
-
cat 文件名
concatenate 连接 查看文件内容、创建文件、文件合并、追加文件内容等;
cat会一次显示所有的内容,适合查看内容较少的文本文件
-b 对非空输出行编号 【Linux中还有一个命令
nl
和cat -b
效果等价】-n 对输出的所有行编号
-
more 文件名
more命令用于分屏显示文件内容,每次只显示一页内容
适合查看内容较多的文本文件
使用
more
的操作键:【这个操作键和man
一样】空格:显示下一页
回车:显示下一行
b:回滚一屏
f: 前滚一屏
q: 退出
-
grep 搜索文本 文件名
grep命令是一种强大的文本搜索工具;【跟ctrl+f的效果一样】
grep允许对文本文件进行模式查找,模式查找就是正则表达式
-n 显示匹配行及行号
-v 显示所有的不匹配行(相当于求反)
-i 忽略大小写
常用的两种模式查找:
^a 行首,搜索以a开头的行
a$ 行尾,搜索以a结束的行
-
-
echo 文字内容
echo
会在终端中显示参数指定的文字,通常会和重定向联合使用 -
重定向 > 和 >>
Linux允许将命令执行结果重定向到一个文件
将本应显示在终端上的内容 输出
>
或追加>>
到指定文件中,如果该文件不存在则会新建>
表示输出,会覆盖文件原有的内容>>
表示追加,会将内容追加到已有文件的末尾# 覆盖,等于python中w模式的file.write('1');注意write()里只能写字符串 echo hello! > 1 # 追加,等于python中a模式的file.write() echo hello!! >> 1 # 不管是输出还是追加,如果文件1不存在则都会新建 ls -lh > a #把本应输出的文件列表写入了a文件中
【touch创建新文件为空,用echo可以直接创建并往里面写入内容】
-
管道 |
Linux允许将一个命令的输出 通过管道作为另一个命令的输入
就类似现实生活中的管子,管子的一头塞东西进去,另一头取出来。这里
|
的左右分为两端,左端写,右端读常用的管道命令有:
-
more:分屏显示内容
# 把ls -lh 输出的结果分屏显示 ls -lh | more
-
grep:在命令执行结果的基础上查询指定的文本
# 例如想查找tree命令列出的目录里的带py的文本 # 1.可以先通过重定向把tree的输出写入文件a,然后在a中查找py tree >> a grep py a # 2.直接通过管道来查询 tree | grep py
-
远程管理常用命令
关机/重启
shutdown命令可以安全关闭或者重新启动系统
不指定选项和参数,默认表示1分钟之后关闭电脑;可以再输入shutdown -c取消操作
远程维护服务器时,最好不要关闭系统,而是重启系统;所以别忘记加上-r
shutdown 选项 时间
- -r 重启
# 重启操作系统,now表示现在
shutdown -r now
# 立刻关机
shutdown now
# 20:25关机
shutdown 20:25
# 十分钟后自动关机
shutdown +10
#取消之前指定的关机计划
shutdown -c
查看或配置网卡信息
**ifconfig:**查看/配置计算机当前的网卡配置信息
网卡:网卡是一个专门负责网络通信的硬件设备;(电脑上连接网线的硬件设备就是网卡/有线网卡,无线网卡就是wifi)
IP地址是设置在网卡上的地址信息,是保证电脑之间进行网络通信的重要设置【有了地址才能找到人嘛,也就才能进行通信】,每台联网的电脑上都有一个唯一的IP地址。(IP地址本质上是标识网卡的)
- 127.0.0.1:本地环回地址,用来测试本机网卡是否正常工作【就是可以ping一下寄几】
- 一台计算机中有可能会有一个物理网卡和多个虚拟网卡,在Linux中,物理网卡的名字通常以ensXX表示
# 查看网卡对应的IP地址
ifconfig | grep inet
**ping ip地址:**检测到目标ip地址的连接是否正常
ping 127.0.0.1
远程登录和复制文件
ssh 用户名@ip
secure shell 作用:关机/重新启动
scp 用户名@ip:文件名或路径 用户名@ip:文件名或路径
远程复制文件
SSH基础
在Linux中SSH是非常常用的工具,通过SSH客户端我们可以连接到运行了SSH服务器的远程机器上。SSH客户端/服务器是一个软件
在linux和Unix操作系统上,SSH服务器和客户端都是默认安装的;而在Windows操作系统下,需要单独安装SSH客户端
SSH客户端/服务器是一种使用Secure Shell(SSH)
协议连接到远程计算机的软件程序;
SSH
是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议:数据传输是加密的,防止信息泄露;数据传输是压缩的,提高传输速度
- 利用SSH协议可以有效防止远程管理过程中的信息泄露:通过SSH协议可以对所有传输的数据进行加密,也能够防止DNS欺骗和IP欺骗
- SSH的另一项优点是传输的数据可以是经过压缩的,所以可以加快传输的速度
SSH客户端的简单实用
ssh [-p port] user@remote
# user是在远程机器上的用户名,不指定的话默认为当前用户
# remote是远程机器地址,可以是IP/域名/别名
# port是SSH Server监听的端口,如果不指定,默认为22
# 使用exit命令退出当前用户的登录
注意:
ssh
这个终端命令只能在linux或者unix系统下使用;因为这俩系统自带ssh客户端和服务器- 如果在Windows系统中,可以安装PuTTY或者XShell客户端软件
- 如果SSH服务器的端口号不是22,就需要使用
-p
选项,指定正确的端口号
scp
secure copy,在linux下用来进行远程拷贝文件的命令;cp是在本地拷贝文件
它的地址格式与ssh基本相同,需要注意的是,在指定端口时用的是**大写的
-P
**而不是小写的-p
# 把本地当前目录下的 01.py 文件,复制到远程服务器 用户的home目录下的 Desktop/01.py
# 注意!`:` 后面的路径如果不是绝对路径,则以用户的家目录作为参照路径
scp [-P port] 01.py user@remote:Desktop
# 把远程服务器 home目录下的 Desktop/01.py 文件 复制到本地当前目录下
scp [-P port] user@remote:Desktop/01.py 01.py
# 加上 -r 选项可以传递文件夹
# 把本地当前目录下的 demo 文件夹,复制到远程服务器 home目录下的 Desktop
scp -r demo user@remote:Desktop
# 把远程服务器 home目录下的 Desktop 复制到 本地当前目录下的 demo 文件夹
scp -r user@remote:Desktop demo
【和cp命令很像,-r选项就是递归复制,用来复制目录的】
注意:
-
scp
这个终端命令只能在linux或者unix系统下使用; -
如果在Windows系统中,可以安装PuTTY,使用
pscp
命令行工具或者FileZilla使用FTP
进行文件传输【FileZilla在传输文件时,使用的是
FTP服务
而不是SSH服务
,因此端口号应该设置为21!】【当然这是在Windows系统下才使用的】
####SSH高级
有关SSH配置信息都保存在用户家目录下的
.ssh
目录下
-
免密码登录
配置完之后,ssh登录或者scp复制就不需要再输密码了
- 配置公钥:在本机上执行
ssh-keygen
即可生成SSH钥匙,一路回车 - 上传公钥到服务器:在本机上执行
ssh-copy-id [-p port] user@remote
,可以让远程服务器记住我们的公钥;此时的user和remote是服务器用户名和ip
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PmfwlPUt-1596703539239)(D:\学习笔记\放在typora里的图片\1595656577109.png)]
- 配置公钥:在本机上执行
-
配置别名
每次输入
ssh -p port user@remote
会很麻烦,尤其是每次都得输入user,remote和port;配置别名可以使用
ssh cxy
来替代上面那么一长串在
~/.ssh/config
里面追加以下内容:Host cxy HostName ip地址 User 远程计算机的用户名 Port 22
保存之后,即可用
ssh cxy
实现远程登录,scp
同样可以使用# 把本地计算机的Desktop目录拷贝到远程计算机的用户cxy目录中的123目录 scp -r Desktop cxy:123 # 冒号一定不要忘记加!
用户权限相关命令
用户和权限的基本概念
用户:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-00fYAYm4-1596703539240)(D:\学习笔记\放在typora里的图片\1595666744347.png)]
组:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IRCRyTp0-1596703539241)(D:\学习笔记\放在typora里的图片\1595666873252.png)]
ls -l
扩展:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sKy19sRJ-1596703539244)(D:\学习笔记\放在typora里的图片\1595667347909.png)]
修改权限终端命令
chmod
可以修改 用户/组 对 文件/目录 的权限
chmod +/-rwx 文件名/目录名
# 这种方式会一次性修改拥有者/组的权限
如果一个目录没有可执行权限x,那么用户就不能对其执行终端命令,例如:ls,cd等。【也就是说,可执行权限就是可以执行终端命令的权限!】
超级用户:
Linux系统中的
root
账号通常用于系统的维护和管理,对操作系统的所有资源具有访问权限;在大多数版本的Linux中,都不推荐直接使用root账号登录系统
在Linux安装的过程中,系统会自动创建一个用户账号,而这个默认的用户就称为标准用户
root账号就可以添加用户、添加组、添加软件等等
sudo:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3enBMXvW-1596703539245)(D:\学习笔记\放在typora里的图片\1595668226969.png)]
组管理终端命令
创建组/删除组的终端命令都需要通过
sudo
执行
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dgECuBXJ-1596703539245)(D:\学习笔记\放在typora里的图片\1595668574666.png)]
【/etc
这个目录用来保存系统配置信息的相关文件】
sudo groupadd test
sudo groupdel test
cat /etc/group
# 创建0.1目录
mrdir 0.1
# 新建test组
sudo groupadd test
# 将0.1目录的组修改为test
sudo chgrp -R test 0.1/
【chgrp -R
递归修改文件/目录的组,注意这里R要大写!】
系统信息相关命令
通过远程终端维护服务器时,可以通过以下命令查看服务器上当前的时间/日期、磁盘占用情况、程序执行情况
时间和日期
-
date 查看当前系统时间
-
cal 查看日历
-y 查看一年的日历
磁盘和目录空间
-
df disk free 显示磁盘剩余空间
-h 以人性化的方式显示文件大小【和ls -lh一样】
-
du [目录名] disk usage 显示目录下的子目录大小
-h 以人性化的方式显示文件大小
进程信息
-
ps aux
process status 查看进程的详细状况
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-l94t8Ml4-1596703539246)(D:\学习笔记\放在typora里的图片\1595679492060.png)]
【ps后面带选项的时候不需要带
-
号!】【ps au 显示的是通过终端启动的进程;经常用的就是
ps au
】 -
top 动态显示运行中的进程并进行排序;按
q
退出 -
kill [-9] 进程代号 终止指定代号的进程,-9表示强行终止
其他命令
find 查找
find
命令功能非常强大,通常用来在特定的目录下搜索符合条件的文件如果省略路径,表示在当前文件夹下查找
find [路径] -name "*.py"
查找指定路径下扩展名是.py的文件,包括子目录;注意和通配符结合一起用
软链接
ln -s 被链接的源文件 链接文件
建立文件的软链接,就类似于Windows下的快捷方式;当前工作目录是哪儿就会在哪儿建;如果把源文件删除,软链接文件会失效,而硬链接文件不会
- 没有
-s
选项的ln
建立的是一个硬链接文件 - 源文件要使用绝对路径,不能使用相对路径,这样可以方便移动链接文件后,仍然能够正常使用;否则再移动软链接文件后,它就无法正常工作
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QGsbSl2b-1596703539246)(D:\学习笔记\放在typora里的图片\1595683392626.png)]
软链接文件中保存的是文件名【文件描述符】,是链接文件数据的路径,一旦文件名被删除,软链接就失效;而硬链接是文件的另外一个名字,通过硬链接可以直接访问到存储在磁盘中的文件数据,如果想删除有硬链接的文件,必须把源文件和所有的硬链接文件都删除,文件数据才会从磁盘中被删掉
注意:
- 在Linux中,只有文件的
硬链接数==0
,该文件才会被删除 - 使用
ls -l
可以查看一个文件的硬链接数量 - 在日常工作中,几乎不会建立文件的硬链接
打包和压缩
在不同的os中,常用的打包压缩方式是不同的;
windows常用rar
mac常用zip
linux常用tar.gz
tar
是Linux中最常用的备份工具,此命令可以把一系列文件打包到一个大文件中,也可以把一个打包的大文件恢复成一系列文件,命令格式如下:
【注意!tar只负责打包,不负责压缩!tar和gzip命令结合可以实现文件的 打包和压缩】
# 打包文件
tar -cvf 打包文件.tar 被打包的文件/目录
# 解包文件
tar -xvf 打包文件.tar
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SqidlJE7-1596703539248)(D:\学习笔记\放在typora里的图片\1595688242178.png)]
【一般都是固定顺序,打包tar -cvf
,解包tar-xvf
】
【在Linux中,最常见的压缩文件格式就是xxx.tar.gz
;tar负责打包,gzip压缩tar包,其扩展名一般用xxx.tar.gz】
在tar
命令中有一个选项-z
可以调用gzip
,从而方便的实现压缩和解压缩的功能:
# 压缩文件
tar -zcvf 打包文件.tar.gz 被压缩的文件/目录
# 解压缩文件
tar -zxvf 打包文件.tar.gz
# 解压缩到指定路径
tar -zxvf 打包文件.tar.gz -C 目标路径
-C
解压缩到指定目录,要解压缩的目录必须存在!
bzip2
:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7xvG7jne-1596703539249)(D:\学习笔记\放在typora里的图片\1595694092182.png)]
软件安装
apt
Advanced Packaging Tool,是Linux下的一款安装包管理工具
# 安装
sudo apt install 软件名
# 卸载
sudo apt remove 软件名
# 更新已安装的包
sudo apt upgrade
【在Linux中,最常见的压缩文件格式就是xxx.tar.gz
;tar负责打包,gzip压缩tar包,其扩展名一般用xxx.tar.gz】
在tar
命令中有一个选项-z
可以调用gzip
,从而方便的实现压缩和解压缩的功能:
# 压缩文件
tar -zcvf 打包文件.tar.gz 被压缩的文件/目录
# 解压缩文件
tar -zxvf 打包文件.tar.gz
# 解压缩到指定路径
tar -zxvf 打包文件.tar.gz -C 目标路径
-C
解压缩到指定目录,要解压缩的目录必须存在!
bzip2
:
[外链图片转存中…(img-7xvG7jne-1596703539249)]
软件安装
apt
Advanced Packaging Tool,是Linux下的一款安装包管理工具
# 安装
sudo apt install 软件名
# 卸载
sudo apt remove 软件名
# 更新已安装的包
sudo apt upgrade