5 基础指令
介绍必学的基础指令的章节。
一些简单的操作,一些高级的控制,都是可以使用指令实现的。下面将从各个功能的角度,讲解一些基础指令,这些指令必须熟悉,之后会经常用到。
* 许多指令在不同的路径下执行会有不一样的效果,请留意文中加粗或者单独成行的文字。
* 一些指令的执行是有权限要求的,必须加sudo的和不能加sudo的会在文中提示。
一、文件、目录操作
1、切换当前目录 - cd
想要将终端的执行环境切换到其他路径,就需要使用cd指令。
cd /usr/bin
如果文件夹被限制了权限,则应该加上sudo: sudo cd /etc/sudoers.d/
。
cd指令不能进入到文件,只能进入文件夹。
2、查看目录下的文件列表 - ls
ls
ls -l
ls -la
ls /dev/ttyS*
ls
是list的缩写,列出文件。ls
既可以单独使用,表示列出当前文件夹的文件列表,也可以加上具体的文件夹、文件名。比如上面的/dev/ttyS*
表示列出/dev目录下所有与ttyS*匹配的文件。当然,ls /dev/
就会直接列出/dev目录下的文件。
ls指令只会列出文件名的列表,并没有提供更多信息,可以加上-l
参数让ls的结果以列表形式输出,并额外提供修改时间、所有者、权限、大小等更多的信息。-la
参数是在-l的基础上,列出隐藏文件,也就是以.
开头的文件夹和文件名。
上面的参数可以组合使用,比如:
ls -la /dev/ttyS*
# 以下为返回的结果,分别是
# 权限 硬链接(快捷方式)数量 所有者 所属组 大小 修改时间 文件名
crw--w---- 1 root dialout 4 Apr 12 2021 /dev/ttyS0
crw-rw---- 1 root dialout 4 Apr 12 2021 /dev/ttyS1
crw-rw---- 1 root dialout 4 Apr 12 2021 /dev/ttyS2
crw-rw---- 1 root dialout 4 Apr 12 2021 /dev/ttyS3
对于一些系统,可以使用ll
指令代替 ls -l
指令。
3、查看当前的完整路径 - pwd
pwd
指令将会打印当前路径的完整的绝对路径。如果某些脚本需要绝对路径,可以打印后手动复制结果。
4、复制文件/文件夹 - cp
复制粘贴文件是一个很常用的操作,在Linux中只需要一句指令就可以完成。
# 复制文件
cp 源文件 新文件
# 复制文件夹
cp -r 源文件夹 新文件夹
在使用cp复制文件夹的时候一定要注意,必须加上 -r 参数,否则是复制不了的。
对于需要管理员权限操作的情况,使用sudo cp
指令的时候可能导致新文件的权限发生改变,应该添加 -a
参数,对文件权限也进行复制。比如sudo cp -a 源文件 新文件
和 sudo cp -ra 源文件夹 新文件夹
。对于权限敏感的文件,可以不加该参数。
5、移动文件/重命名 - mv
mv是move的缩写,类似于剪切–粘贴操作。
如果源文件和目标文件的所在路径相同(包括相对路径),那么就是对文件进行重命名。
# 重命名当前目录下的文件
mv name_1 name_2
# 重命名其他目录的文件
mv /opt/name_1 /opt/name_2
# 移动文件/文件夹到其他文件夹
mv file_1 /opt/
# 移动并进行重命名
mv file_1 /opt/file_2
可以看到,mv指令相当灵活。对于文件夹的操作不需要额外参数。
6、删除文件 - rm
rm是remove的缩写,移除文件。注意,移除文件后无法恢复,即没有回收站机制。删除文件请三思,慎用通配符。
# 删除文件
rm file_name
# 删除文件夹
rm -r folder_name
7、新建文件或文件夹
# 新建文件
touch file_name
# 新建文件夹
mkdir folder_name
# 连续创建多层文件夹
mkdir -p folder1/folder2/folder_name
touch指令使用的不多,它创建的文件不指定文件格式,既可以是二进制文件,也可以是文本文件,具体看放入了什么内容。
mkdir指令使用的更多,它可以一次创建多个层级的文件夹。文件夹的权限与执行指令时的权限一致,注意sudo mkdir
后应该修正权限。
8、创建快捷方式
Linux的快捷方式与Win不同,这里讨论的是“软链接”。
软链接可以连接任何文件或文件夹,对软链接后的文件操作,将会同步到源文件夹。
ln -s 源文件 新文件(链接)
与软链接相对的还有硬链接,它们的区别如下:
操作 | 软链接 | 硬链接 | 复制文件 |
---|---|---|---|
修改源文件内容 | 软链接内容同步修改 | 硬链接内容同步修改 | 新文件不修改 |
修改链接内容 | 源文件同步修改 | 源文件同步修改 | 源文件不修改 |
删除链接 | 源文件不影响 | 源文件不影响 | 源文件不影响 |
删除源文件 | 软链接不可因 | 硬链接文件不影响 | 新文件不影响 |
占用空间 | 一份 | 一份 | 复制几份就占用几份 |
二、用户和文件权限管理
1、文件赋权
文件赋权采用chmod指令,该指令必须加sudo执行。
# 赋予指定的权限给文件
sudo chmod 777 文件名
# 赋予指定的权限给文件夹及其所有内容
sudo chmod -R 777 文件夹名
# 为文件添加单个权限
sudo chmod +x 文件名
# 为文件减去单个权限
sudo chmod -x 文件名
如果是对文件夹进行赋权操作,不添加-R
参数只会对文件夹本身赋权,添加该参数后才能对其所有内容赋权。该参数必须放在chmod和文件夹名之间。
数字表示的具体权限请参考[4 权限管理与root管理员]的【权限】章节。加减号(+-)表示添加或删除某个权限,可以组合使用。rwx字母的含义同样参考【权限】章节。
注意,系统关键文件的权限被修改,会导致异常。
使用sudo chmod
的时候必须注意当前的路径,谨慎使用通配符*。
由于对根目录赋777权限,或者/etc目录赋777权限导致系统工作异常的案例太多了,这种情况下只有重装系统才是最经济的操作。
2、修改文件的所有者 - chown
一些文件就算有了777权限也会引起问题,需要更改文件的所有者、所属组才行。
# 修改文件的所有者为 abc
sudo chown abc 文件名
# 修改文件的所属组为 abc, 这个不常用
sudo chgrp abc 文件名
# 修改文件的所有者是abc,所属组为abc
sudo chown abc:abc 文件名
一般用户名和组名是一致的,可以使用用户名:用户名
一次性修改文件。
与chmod同样的,修改文件夹需要考虑加上-R
参数。
3、修改用户密码 - passwd
修改密码分为以下几种情况,相同的指令会有不同的步骤。
修改自己的密码:passwd
指令即可。执行后会要求先输入当前的密码,然后输入两次新密码即可。
通过sudo修改自己的密码:sudo passwd 用户名
。在验证sudo密码后,直接输入两次新密码即可。
修改root的密码:sudo passwd
。如果root没有密码,则输入两次新密码进行设置。如果root用户有密码,则与“修改自己的密码”过程一致。
修改用户名是比较复杂的操作,Linux不提供一次性修改的指令。请参考Linux通用问题/修改用户名
如果当前用户不能使用sudo权限,则到系统设置中,将该用户设置为"管理员账户"即可。
三、文件内容操作
1、vim编辑器
vim是Linux最常用的文本编辑器,但算不上好用。使用vim编辑器需要遵循下面的流程:
当编辑文件的时候提示“正在修改一个只读文件”的时候,就需要退出编辑,并使用sudo vi
进行编辑。
2、vim的替代品
由于vim操作繁琐,还可能因操作不当锁定文件,因此建议使用其他的编辑器。下面介绍的编辑器都是由GUI界面的,可使用键盘鼠标操作。
UOS:系统自带编辑器 deepin-editor 文件名
麒麟: 系统自带编辑器 pluma 文件名
, 或者gedit
Ubuntu:使用gedit gedit 文件名
以上三种编辑器,在需要sudo打开的时候都非常方便,比如 sudo deepin-editor /etc/apt/source.list
即可快捷的使用sudo权限打开和编辑文件。
扩展:关于使用管理员权限编辑
很多系统配置文件是受到权限保护的,编辑它们的时候,如果先降低权限,编辑后再恢复权限,容易引起系统问题。因此需要直接使用管理员权限编辑。方法有以下几种:
-
在文件管理器中空白处右键,选择“以管理员打开”,然后在新的窗口中可以直接双击编辑文件。
-
对于没有上面选项的情况,需要用指令来打开编辑器。在文件管理器空白处右键,选“在此处打开终端”。
在打开的终端中,执行指令打开前面提到的几种编辑器:
# VIM编辑器 sudo vi xxx.txt # 可视化编辑器 sudo deepin-editor xxx.txt sudo pluma xxx.txt sudo gedit xxx.txt
3、查看文件内容 -cat
不打开编辑器,也可以直接展示文件的内容。使用cat指令,文件会逐行显示在终端内。
cat 文件名
4、压缩、解压文件 - tar
.tar.gz文件是Linux中通行的压缩文件,可以达到较高的压缩率、保持文件完整性
# 压缩一个文件夹到tar.gz 文件
tar -cvzf xxx.tar.gz ./xxx
# 解压一个tar.gz文件到当前目录
tar -xvzf xxx.tar.gz
tar后附带的参数中,c表示新建一个压缩文件,x表示解压该压缩文件。v是显示压缩的详细过程。z是进行压缩,不加z的话文件就是以非压缩的方式打包的。最后参数一定要以f结尾,表示tar指令要操作的文件名。
5、压缩、解压文件 - zip/unzip
tar文件不适合跨平台使用,zip是一个更加通用的压缩包格式。
# 压缩一个文件夹
zip xxx.zip 目录名/文件名
# 解压一个zip文件到当前目录
unzip xxx.zip
# 解压一个zip文件到指定目录
unzip xxx.zip -d 目标目录
在UOS和麒麟中,tar和zip都可以使用图形化界面操作,不一定需要指令。
四、系统状态查看和操作
1、系统关机重启 - shutdown
指定系统的关机或重启使用shutdown指令。
# 立即关机
shutdown now
# 立即重启
shutdown -r now
# 5分钟后关机
shutdown -h 5
# 17:30关机
shutdown -h 17:30
# 取消设定的延时关机
shutdown -c
所有延迟关机的指令亦可以将-h 改成-r变成延迟重启。
2、查看显示信息
xrandr
指令可以展示当前显示器的信息。下面通过一个具体的例子说明它输出的内容。
usr@PC:~$ xrandr
HDMI-0 connected primary 1280x800+0+0 (normal left inverted right x axis y axis) 340mm x 270mm
1280x800 59.27*+
1024x768 59.21
800x600 59.08
HDMI是显示器的接口名称;connected表示这个接口有显示链接,否则为disconneced;primary表示该显示器为主屏,否则没有这个单词;1280x800是显示器的分辨率。
下面的列表是显示器支持的所有分辨率和刷新率,其中 * 表示当前显示器的分辨率和刷新率, + 表示系统推荐的分辨率和刷新率。
xrandr指令还支持修改当前的分辨率与刷新率。
xrandr --output HDMI-0 --mode 1024x768 --rate 59.21
# output后面是显示器名称,mode后面是分辨率,这个不能随便写,必须是之前xrandr指令中查询到的支持的分辨率才行
# rate后面是屏幕刷新率,也是xrandr查询到的支持的刷新率。如果支持的刷新率只有一个,那么指令中可以不指定。
# 分辨率中间是小写字母 "x" ,不是乘号,也不能是 * 号
此外,xrandr还能修改显示器的位置等,具体参考Linux常见问题中的有关内容。
3、查看网卡信息 - ifconfig
查看网卡ip,在系统的设备管理器中要很多步才能看到,使用指令可以快速确定网卡ip、MAC地址等更多参数。
ifconfig
# 以下是结果
enp1s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.155.1.163 netmask 255.255.255.0 broadcast 10.155.1.255
inet6 fe80::16f5:343c:80e8:6948 prefixlen 64 scopeid 0x20<link>
ether ec:d6:8a:44:f9:27 txqueuelen 1000 (以太网)
RX packets 5900099 bytes 2176322198 (2.1 GB)
RX errors 0 dropped 221 overruns 0 frame 0
TX packets 5577541 bytes 1118396836 (1.1 GB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (本地环回)
RX packets 1176601 bytes 905512967 (905.5 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 1176601 bytes 905512967 (905.5 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
enp1s0是网卡的名称,每台设备可能都不一样;lo是本地回环,即常说的localhost。
网卡信息中提供了ip地址:inet 10.155.1.163,MAC地址:ether ec:d6:8a:44:f9:27,MTU值:mtu 1500,以及其他不常用的信息。
4、网络延迟检查 - ping
与Windows CMD的ping功能类似,ping可以测试到某个ip地址的延迟。不过Linux的ping是不会主动结束的,需要ctrl + c 组合键来停止。
ping 192.168.0.1
# ping 100次
ping -c 100 192.168.0.1
五、软件管理
1、软件安装器 - dpkg
UOS和麒麟的软件都是deb格式的,使用dpkg软件进行管理。
# 列出已经安装的软件
dpkg -l
# 安装一个deb文件
sudo dpkg -i xxx.deb
# 卸载一个软件
sudo dpkg -r xxx
# 清除卸载残留
sudo dpkg -P xxx
安装和卸载软件必须要使用sudo权限。卸载软件的时候,只需要写**软件名** ,不要写deb文件名!
dpkg能安装软件,但是不能自动处理软件的依赖。当依赖缺少,dpkg会报安装失败,并提供缺少的软件包的信息。
2、自动安装软件 - apt
上面出现的依赖问题是很令人头痛的,因为软件包可能会一层层依赖下去。这时候就需要使用apt指令。
apt是一个联网的包管理器,能够安装软件的同时自动处理好依赖关系。
# 搜索一个软件,
apt search key-words
# 更新apt文件列表
sudo apt update
# 安装软件
sudo apt install xxx
# 卸载软件
sudo apt remove xxx
apt大多数操作都需要sudo权限。apt必须连接互联网。关于apt的其他问题,请查看扩展-软件包管理。