一些简单的操作,一些高级的控制,都是可以使用指令实现的。下面将从各个功能的角度,讲解一些基础指令,这些指令必须熟悉,之后会经常用到。

一、文件、目录操作

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字母的含义同样参考【权限】章节

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编辑器需要遵循下面的流程:

vim流程

当编辑文件的时候提示“正在修改一个只读文件”的时候,就需要退出编辑,并使用sudo vi 进行编辑。

2、vim的替代品

由于vim操作繁琐,还可能因操作不当锁定文件,因此建议使用其他的编辑器。下面介绍的编辑器都是由GUI界面的,可使用键盘鼠标操作。

UOS:系统自带编辑器 deepin-editor 文件名

麒麟: 系统自带编辑器 pluma 文件名 , 或者gedit

Ubuntu:使用gedit gedit 文件名

以上三种编辑器,在需要sudo打开的时候都非常方便,比如 sudo deepin-editor /etc/apt/source.list即可快捷的使用sudo权限打开和编辑文件。

扩展:关于使用管理员权限编辑

很多系统配置文件是受到权限保护的,编辑它们的时候,如果先降低权限,编辑后再恢复权限,容易引起系统问题。因此需要直接使用管理员权限编辑。方法有以下几种:

  1. 在文件管理器中空白处右键,选择“以管理员打开”,然后在新的窗口中可以直接双击编辑文件。

  2. 对于没有上面选项的情况,需要用指令来打开编辑器。在文件管理器空白处右键,选“在此处打开终端”。

    在打开的终端中,执行指令打开前面提到的几种编辑器:

      # 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的其他问题,请查看扩展-软件包管理