参考链接:https://www.bilibili.com/video/BV1W4411A7yf?p=85
-
常见命令
- Ctrl ++放大终端窗口,Ctrl +-缩小终端窗口
# 查看当前文件夹下的内容,-a 显示指定目录下所以子目录和文件,包括隐藏文件。-l 显示文件的详细信息。-h显示文件大小. $ ls $ ls -lha # 查看当前所在文件夹 $ pwd # 新建文件 $ touch a.py # 创建目录 $ mkdir demo # 切换文件夹 $ cd demo # 切换到上一个目录 $ cd - # 清屏 $ clear # 查询命令的帮助信息--help $ mkdir --help
-
通配符的使用
*
代表任意个字符,?
必须代表一个任意字符# 查找当前目录下所以第一个字符是1的文件 $ ls 1*
-
vim的使用
常用命令vim a.py
打开文件。进入后用i
键进入编辑模式,保存退出先Esc
退出编辑,再输入:wq
完全退出vim页面。
vim打开多个文件,例如vim a.py b.c -p
切换下一个文件::bn
切换上一个文件::bp
-
删除命令
# 删除指定的文件名 $ rm a.py # 删除目录 $ rm -r demo # 删除当前位置所有文件 $ rm -r * # 删除文件夹的内容包括文件夹 $ rm -rf demo
-
tree树状图
# 树状图列出文件目录结构 $ tree # 只显示目录 $ tree -d # 家目录下结构 $ tree ~
-
cp复制文件
# 将文件或目录复制到 另一个文件或目录中 $ cp 源文件 目标文件 $ cp ~/document/13.txt . #~表示家目录,. 表示当前目录
-
mv移动命令
# 移动文件或目录 $ mv demo /home/lidan/document
-
cat查看命令
# 查看文件内容 $ cat a.py
-
grep 允许对文本文件进行模式查找
# 文件中查找abc
$ grep abc 123.txt
# 显示行号
$ grep -n abc 123.txt
# 显示不包含abc的文本
$ grep -v abc 123.txt
# 忽略abc的大小
$ grep -I abc 123.txt
# 行首查找
$ grep ^abc 123.txt
# 每一行结尾查找
$ grep abc$ 123.txt
echo
会在终端中显示参数指定的文字,通常回合重定向和追加联合使用,例如在终端中输入:
$ echo hello world
会将hello world
输出到终端中。
-
重定向
>
和追加>>
Linux允许将命令执行结果重定向到一个文件,也就是将本应显示在终端上的内容输出、追加到指定文件
>
表示输出,会覆盖文件原有的内容。>>
表示追加,会将当前内容追加到已有文件的末尾。例如:
$ echo hello world > file_a $ echo tree >>file_a
首先将
hello world
写入到file_a
文件中,然后将当前目录下的tree
分支写在file_a
文件中的hello world
下面。 -
管道 |
Linux允许将一个命令的输出可以通过管道作为另一个命令的输入
常用的管道命令有:
more:分屏显示内容
grep:在命令执行结果的基础上查询指定的文本
例如:
$ ls -al | more $ ls -al | grep ros
(1) 先获取文件列表,然后通过管道 | 将输出执行
more
命令,可以得到文件列表分屏显示。(2) 先获取文件列表,然后通过管道 | 将输出执行
grep
命令,可以查找带ros
文件名的文件。 -
关机
shutdown命令可以关闭或者重新启动系统
- 直接运行
shutdown
默认表示1分钟之后关闭电脑 - 远程维护服务器时,最好不要关闭系统,而应该重新启动系统
# 重新启动,其中now表示现在 $ shutdown -r now # 立刻关机,其中now表示现在 $ shutdown now # 系统在今天的20:25会关机 $ shutdown 20:25 # 取消之前的关机计划 $ shutdown -c #立即重启 sudo reboot #立即关机 sudo poweroff
- 直接运行
-
IP地址
-
IP地址
是设置在网卡上的地址信息 -
每台联网的电脑上都有
IP地址
,是保证电脑直接正常通讯的重要设置
注意:每台电脑的
IP地址
不能相同,否则会出现IP地址
冲突,并且没有办法正常通讯 -
-
ifconfig
ifconfig可以查看计算机当前的网卡配置信息
# 查看网卡配置信息 $ ifconfig # 查看网卡对应的IP地址 $ ifconfig | grep inet
提示:一台计算机中有可能会有一个物理网卡和多个虚拟网卡,在Linux中物理网卡的名字通讯以ensXX表示。
127.0.0.1
被称为本地回环/环回地址,一般用来测试本机网卡是否正常
-
ping
- ping一般用于检测当前计算机到目标计算机之间的网络是否通畅,数据越大,速度越慢
# 检测目标主机是否连接正常 $ ping 其他主机IP地址 # 检测本地网卡工作是否正常 $ ping 127.0.0.1
- 网络管理员之间也常将ping用作动词–ping一下计算机x,看他是否开着
- 要想终止终端程序的执行,绝大多数可以使用ctrl+C
原理:网络上的机器都有唯一确定的IP地址,我们给目标IP地址发送一个数据包,对方就要返回一个数据包,根据返回的数据包以及时间,我们可以确定目标主机的存在
-
远程登录和复制文件
16.1 ssh介绍
在Linux中
ssh
是常用的工具,通过ssh客户端我们可以连接到正在运行的ssh服务器的远程机器上-
ssh客户端是一种使用Secure Shell (SSH)协议连接到远程计算机的软件程序
-
ssh
是目前比较可靠,专为远程登录会话和其他网络服务提供安全性的协议- 利用
ssh协议
可以有效防止远程管理过程中的信息泄露 - 通过
ssh协议
可以对所有传输的数据进行加密,也能够防止DNS欺骗和IP欺骗
- 利用
-
ssh
的另一项优点是传输的数据可以经过压缩的,所以可以加快传输的速度
16.2 域名和端口号
域名:是由一串用点分隔的名字组成,例如:www.baidu.com,是IP地址的别名,方便用户记忆
端口号:
-
IP地址:通过IP地址找到网络上的计算机
-
端口号:通过端口号可以找到计算机上运行的应用程序
- ssh服务器的默认端口号是22,如果是默认端口号,在连接时可以省略
-
常见服务端口号列表:
序号 服务 端口号 01 SSH服务器 22 02 Web服务器 80 03 HTTPS 443 04 FTP服务器 21
16.3 ssh客户端的简单使用
$ ssh [-p port] user@remote
-
user是在远程机器上的用户名,如果不指定的话默认为当前用户
-
remote是远程机器的地址,可以是IP/域名,或者是后面提到的别名
-
port是ssh server监听的端口,如果不指定,就为默认值
22
提示:
- 使用
exit
退出当前用户的登录 - 在工作中,
ssh
服务器的端口号可能不是22,遇到这种情况需要使用-p
选项,指定正确的端口号,否则无法正常连接到服务器
注意:
ssh
第一次若没有运行成功,应该是没有安装 - 使用
-
-
scp
-
scp
就是secure copy,是一个在Linux下用来进行远程拷贝文件的命令 -
它的地址格式与ssh基本相同,需要注意的是,在指定端口时用的是大写的-P而不是小写的
# 把本地当前目录下的01.py文件复制到远程家目录下的Desktop/01.py # 注意:':'后面的路径如果不是绝对路径,则以用户的家目录作为参照路径,port正常是22 $ scp -P (port) 01.py user@remote:Desktop/01.py $ scp -P 22 b.py lidan@192.168.1.102:demo/b.py (例如) # 把远程家目录下的Desktop/01.py文件复制到本地目录下的01.py $ scp -P (port) user@remote:Desktop/01.py 01.py $ scp -P 22 lidan@192.168.1.102:demo/a.py . (例如) # 加上-r选项可以传送文件夹 # 把当前目录下的demo文件夹复制到远程家目录下的Desktop $ scp -r demo user@remote:Desktop # 把远程家目录下的Desktop复制到当前目录下的demo文件夹 $ scp -r user@remote:Desktop demo $ scp -r lidan@192.168.1.102:demo
-
-
ssh公钥 id_rsa.pub和私钥 id_rsa
- 使用公钥加密的数据,需要使用私钥解密
- 使用私钥加密的数据,需要使用公钥解密
将公钥使用
ssh-copy-id
传给服务器后,本地将带有私钥加密的文件传给服务器,由于服务器已有了公钥就可以将私钥加密文件解密。相同,服务器使用上传的公钥加密文件进行传输,本地可以使用私钥解密。
windows上传密钥到linux中,使用windows的git bash终端进行操作,进入.ssh文件夹中,输入以下命令就将密钥上传到远端。ssh-copy-id -i id_rsa.pub lidan@192.168.1.102 ssh-copy-id lidan@192.168.1.102 #linux上传密钥到远端
-
配置别名
配置别名可以使用
ssh car
代替ssh ucar@192.168.1.102
,可以方便我们记忆,主要是在~/.ssh/config
文件里面进行配置:Host car Hostname 192.168.1.102 User ucar Port 22
-
用户和权限的基本概念
-
用户管理包括用户和组管理
-
在Linux中,可以指定每一个用户针对不同的文件或者目录的不同权限
-
对文件/目录的权限包括:
序号 权限 英文 缩写 数字代号 01 读 read r 4 02 写 write w 2 03 执行 excute x 1 组:为了方便用户管理,提出了组的概念,一个组中的所有成员的权限是一致的。
-
-
通过 ls -l 看权限
ls -l
可以查看文件夹下文件的详细信息,从左到右依次是:-
权限,第一个字符如果是
d
表示目录,-
表示文件 -
硬链接数,通俗地讲,就是有多少种方式,可以访问到当前目录/文件
-
拥有者,家目录下文件/目录的拥有者通常都是当前用户
-
组,
-
大小
-
时间
-
名称
-
-
chmod简单使用
-
chmod
可以修改用户/组对文件/目录的权限 -
命令格式如下
$ chmod +/-rwx 文件名|目录名 # 添加执行权限 $ chmod +x a.py $ chmod +x test # 减少可读权限 $ chmod -r b.py $ chomd -r test
-
-
超级用户sudo
-
在Linux安装过程中,系统会自动创建一个用户账号,为标准用户,不具有所有访问权限
-
su
是substitute user的缩写,表示使用另一个用户的身份 -
sudo
命令用来以其他身份来执行命令,预设的身份为root
-
用户使用
sudo
时,必须先输入密码,之后有5分钟的有效期限,超过期限必须重新输入密码
-
-
组管理终端命令
提示:创建组/删除组的终端命令都需要通过
sudo
执行- 组信息保存在
/etc/group
文件中 - /
etc
目录是用来保存系统配置信息的目录
# 添加组groupadd $ sudo groupadd dev # 删除组groupdel $ sudo groupdel dev # 确认组信息 $ cat /etc/group # 修改文件/目录的所属组 $ sudo chgrp -R 组名 文件/目录名 $ sudo chgrp -R dev python学习 #如图python学习的组已改成dev
- 组信息保存在
-
创建用户
# 添加新用户,-m自动建立用户家目录,-g指定用户所在的组,否则会建立一个和同名的组 $ sudo useradd -m -g 组 新建用户名 $ sudo useradd -m -g dev zhangsan # 设置用户密码,如果是普通用户,直接用passwd 修改自己的密码 $ sudo passwd 用户名 $ sudo passwd zhangsan
-
删除用户
# 删除用户,-r选项会自动删除用户家目录 $ sudo userdel -r 用户名 $ sudo userdel -r lisi
创建用户时,如果忘记添加
-m
选项指定新用户的家目录–最简单的方法就是删除用户,重新创建 -
查看用户信息
# 查看用户UID和GID信息 $ id [用户名] $ id lisi $ cat -n /etc/passwd | grep lisi # 查看当前所有登录的用户列表 $ who # 查看当前登录用户的账户名 $ whoami
passwd文件
/etc/passwd
文件存放的是用户的信息,有6个分号组成的7个信息,分别是- 用户名
- 密码(x,表示加密的密码)
- UID(用户标识)
- GID(组标识)
- 用户全名或本地账号
- 家目录
-
usermode
-
usermode
可以用来设置用户的主组/附加组和登录shell
,命令格式如下: -
主组:通常在新建用户时指定,在
etc/passwd
的第4列GID对应的组 -
附加组:在
etc/group
中最后一列表示该组的用户列表,用于指定用户的附加权限提示:设置了用户的附加组之后,需要重新登录(重启终端)才能生效
# 修改用户的主组(passwd中的GID) $ usermod -g 组 用户名 # 修改用户的附加组(group) $ usermod -G 组 用户名 # 给张三增加sudo权限 $ cat -n /etc/group | grep lidan #查看当前用户有哪些权限 $ sudo usermod -G sudo zhangsan # 修改用户登录 Shell(新建用户终端shell中只有$,没有用户名) $ usermod -s /bin/bash $ sudo usermod -s /bin/bash zhangsan
-
-
which
提示
/etc/passwd
是用于保存用户信息的文件/usr/bin/passwd
是用于修改用户密码的程序
which
命令可以查看执行命令所在位置
# 查看ls和useradd命令所在位置 $ which ls $ which useradd
bin
和sbin
- 在Linux中,绝大多数可执行文件都是保存在
/bin
、/sbin
、/usr/bin
、/usr/sbin
/bin
(binary)是二进制执行文件目录,主要用于具体应用/sbin
(system binary)是系统管理员专用的二进制代码存放目录,主要用于系统管理/usr/bin
(user commands for applications)超级用户的一些管理程序
-
切换用户
# 切换用户,并且切换目录,- 可以切换带用户家目录,否则保持位置不变 $ su - 用户名 $ su - zhangsan # 退出当前登录账户 $ exit
-
su
不接用户名,可以切换到root
,但是不推荐使用,因为不安全 -
exit
示意图如下
-
-
修改文件权限
-
chown
:修改拥有者 -
chgrp
:修改组 -
chmod
:修改权限
# 修改文件|目录的拥有者 $ chown 用户名 文件名|目录名 $ sudo chown zhangsan python学习 # 递归修改文件|目录的组 $ chgrp -R 组名 文件名|目录名 $ sudo chgrp -R dev python学习 # 递归修改文件权限 $ chmod -R 755 文件名|目录名 $ chmod 751 a.py $ chmod -R 777 demo
- 常见数字组合有(
u
表示用户 /g
表示组 /o
表示其他)- 777 ===>
u=rwx, g=rwx, o=rwx
- 755 ===>
u=rwx, g=rx, o=rx
- 644 ===>
u=rw, g=r, o=r
- 777 ===>
y
-
-
系统信息–时间和日期
# 查看系统时间 $ date # calendar查看日历,-y选项可以查看一年的日历 $ cal $ cal-y
-
磁盘信息
# disk free显示磁盘剩余空间,-h是可以将内存转化为kb,M,G $ df -h # disk usage显示目录下的文件大小 $ du -h
-
进程信息
-
所谓进程,通俗地说就是当前正在执行的一个程序
# process status查看进程的详细状况 $ ps #显示用户终端启动的应用程序 $ ps aux # 动态显示运行中的进程并且排序,输入q退出 $ top # 终止指定代号的进程,-9表示强行终止 $ kill -9 进程代号
-
a :显示终端上的所有进程,包括其他用户的进程
-
u :显示进程的详细状态
-
x :显示没有控制终端的进程
提示:使用kill命令,最好只终止有当前用户开启的进程,不要终止系统进程
-
-
-
查找文件
find
命令用来在特定的目录下搜索符合条件的文件
# 查找指定路径下扩展名是.py的文件 $ find 路径 -name "*.py" $ find 桌面 -name "*.py" # 查找当前目录下文件包含1的文件 $ find -name "*1*" # 查找当前目录下,所有以.txt为扩展名的文件 $ find -name "*.txt"
-
软链接
# 建立文件的软链接,类似于win10的快捷方式 $ ln -s 源文件路径 链接文件 $ ln -s /home/lidan/桌面/demo a.py #绝对路径
- 没有
-s
选项建立的是一个硬链接文件,硬链接占用相同大小的硬盘空间,工作中几乎不会使用硬链接 - 源文件要使用绝对路径,不能使用相对路径,这样可以方便移动链接文件后,仍然能正常使用
- 没有
-
硬链接
- 使用
ln
创建链接时,如果没有-s
选项,会创建一个硬链接,很像将文件复制,即使将源文件删除,硬链接依然可以访问文件
- 使用
-
打包解包
-
tar
可以把一系列文件打包到一个大文件中,也可以把打包的大文件恢复成一系列文件 -
tar
操作并没有压缩文件
# 打包文件 $ tar -cvf 打包文件.tar 被打包文件 被打包文件 ... $ tar -cvf py.tar 01.py 02.py 03.py #解包文件 $ tar -xvf 打包文件.tar $ tar -xvf py.tar
-
-
压缩/解压缩
-
gz压缩
-
在Linux中,常见的压缩文件是
xxx.tar.gz
-
在tar命令中有一个选项
-z
可以调用gzip
,从而可以方便的实现压缩和解压缩的功能
# 压缩文件 $ tar -zcvf 打包文件.tar.gz 被压缩文件 $ tar -zcvf py.tar.gz *.py # 解压缩文件 $ tar -zxvf 打包文件.tar.gz $ tar -zxvf py.tar.gz $ tar -zxvf py.tar.gz -C 目标路径 #-C解压到目标路径
-
bzip2压缩
-
在
tar
命令中有一个选项-j
可以调用bzip2
,实现压缩解压缩功能
# 压缩文件 $ tar -jcvf 打包文件.tar.gz 被压缩文件 $ tar -jcvf py.tar.gz *.py # 解压缩文件 $ tar -jxvf 打包文件.tar.gz $ tar -jxvf py.tar.gz $ tar -jxvf py.tar.gz -C 目标路径 #-C解压到目标路径
-
-
软件安装
apt
是advanced packaging tool
,是Linux下的一款安装包管理工具
# 安装软件 $ sudo apt install 软件包 # 写在软件 $ sudo apt remove 软件名 # 更新已安装的包 $ sudo apt upgrade
-
配置软件源
镜像源就是所有服务器的内容是相同的,但是根据位置不同,国内服务器速度更快一点。
-
.deb文件安装
$ sudo dpkg -I package.deb