Linux 命令


0 前言

0.1 为什么要学Linux命令

目前,大多数企业或者其他机构的后台服务器都是部署的Linux操作系统,而Linux是CLI操作界面(Command Line Interface),需要用命令去控制操作系统,这是程序员需要学习Linux命令的根本原因。

与Windows的GUI(Graphics User Interface)的易用性不同,CLI需要通过一定的学习记忆掌握。

0.2 关于命令

本文对命令的介绍按以下两部分展开:
(一)常用Linux命令
(二)Linux命令分类

  • 文件管理
  • 文档编辑
  • 文件传输
  • 磁盘管理
  • 磁盘维护
  • 网络通信
  • 系统管理
  • 系统设置
  • 备份压缩
  • 设备管理

0.3 学习参考

参考:https://www.runoob.com/linux/linux-tutorial.html

0.4 在线练习

如果实在没有Linux服务器,也不想安装虚拟机的。试试如下几个网站,可以直接在线练习Linux命令(命令不太完整,基础性的练习没问题)。

  • https://www.masswerk.at/jsuix/index.html

  • http://cb.vu/
  • https://copy.sh/v86/?profile=linux26
  • https://bellard.org/jslinux/

1 远程连接Linux

1.1 云服务器

可以试用或购买云服务器进行学习。
https://www.runoob.com/linux/linux-cloud-server.html

Linux部署在服务器上,而服务器一般放在机房,你一般不会在机房操作你的 Linux 服务器。
这时我们就需要远程登录到Linux服务器来管理维护系统。

Linux 系统是通过 ssh(Secure Shell)服务实现的远程登录功能,默认 ssh 服务端口号为 22。
Window 系统上 Linux 远程登录客户端有 X shell、SecureCRT、 Putty、 SSH Secure Shell 等。

1.2 X shell连接阿里云服务器

  • 1)阿里云进入购买的云服务器实例页面,获取获取主机号(公网IP)和密码

a. 实例:云服务器实例其实就是一个虚拟的计算环境,包含 CPU、内存、操作系统、带宽、磁盘等最基础的计算组件。用户可以将云服务器实例简单理解为一个独立的虚拟机。ECS实例是云服务器最为核心的概念
b. 实例密码:云服务器密码。需要重置实例密码,密码要记住,连接服务器要使用。

  • 2)运行 X Shell,新建会话

Name:自己命名
Protocol:默认SSH
Host: 阿里云服务的公网IP(ECS 实例详情可以看到)
Port:默认22

  • 3)设置用户名和密码

用户名:默认root
密码:你的云服务器实例的密码

  • 4)服务器远程连接成功

2 常用Linux命令

2.1 参考

21天,搞定软件测试从业者必备的Linux命令(完整篇)
https://mp.weixin.qq.com/s?__biz=MzA3OTQzMjc3NA%3D%3D&mid=2650567960&idx=1&sn=b0e41dbbe85a95e12404e6476f0d5cec&scene=45#wechat_redirect

2.2 技巧

  • clear
    清空当前终端屏幕
  • ifconfig
    查看当前服务器IP

2.3 命令

软件测试

注意!!!以下注释是简述,具体的使用方法需要阅读详细的使用手册和实际操作。

分类 命令 English 注释
目录管理 ------------ ------------ ------------
1 ls list 显示文件/目录
2 mkdir make directory 创建目录
3 cd change directory 切换目录
4 rmdir remove a empty directory 删除空目录
5 rm remove 删除目录/文件
6 mv move 移动目录/文件,或重命名
7 pwd print working directory 显示目前目录
8 cp copy 拷贝
文件查看 ------------ ------------ ------------
9 cat concatenate files and print on the standard output 显示文件内容
10 find find 搜索文件
11 grep (Global Regular Expression)print lines matching a pattern 在文件中查找符合条件的字符串

(1)ls

ls(list)列出当前目录中所有的子目录和文件

  • ls /
    列出根目录/下的所有目录。

      [root@iZwz9fhqn5vfnx7l59pw48Z ~]# ls /
      bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
    
  • ls -a
    列出目录下的所有文件(包含隐文件)

  • ls -l
    列出文件的详细信息(包括权限、所有者、文件大小等)

      [root@iZwz9fhqn5vfnx7l59pw48Z ~]# ls -al Practice //列出 Practice 目录下的所有目录/文件及其详细信息
      total 0 // 没有文件
      drwxr-xr-x   6 root root  57 Jun 22 08:09 .
      dr-xr-x---. 11 root root 264 Jun 22 08:03 ..
      drwxr-xr-x   2 root root   6 Jun 22 02:42 20220622
      drwxr-xr-x   2 root root   6 Jun 22 08:09 One
      drwxr-xr-x   2 root root   6 Jun 22 08:09 Three
      drwxr-xr-x   2 root root   6 Jun 22 08:09 Two
    

(2)mkdir

mkdir(make directory)创建目录

  • mkdir < name >
    mkdir HelloWorld表示创建一个 HelloWorld 目录。

  • mkdir < name1 >[/name2][/name3]
    mkdir HelloWorld/Practice表示创建一个多层级文件夹,母文件夹为 HelloWorld,子文件夹为 Practice。

  • mkdir < name > < name > < name >
    mkdir File1 File2 File3表示创建3个文件夹,分别是File1、File2、File3。

(3)cd

  • cd [ 相对或绝对路径] (change directory) 切换目录

      [root@iZwz9fhqn5vfnx7l59pw48Z ~]# mkdir Good   //root目录(家目录)下创建一个 Good 目录
      [root@iZwz9fhqn5vfnx7l59pw48Z ~]# cd /root/Good   //绝对路径切换到 Good 目录
      [root@iZwz9fhqn5vfnx7l59pw48Z Good]# cd ~   //切换到 root 目录
      [root@iZwz9fhqn5vfnx7l59pw48Z ~]# cd ./Good   //相对路径切换到 Good 目录
      [root@iZwz9fhqn5vfnx7l59pw48Z Good]# cd ..   //返回上一级目录
      [root@iZwz9fhqn5vfnx7l59pw48Z ~]# cd ..
      [root@iZwz9fhqn5vfnx7l59pw48Z /]# cd ..  //此处返回到根目录
    

(4)rmdir

rmdir (remove a empty directory)删除空目录

  • rmdir [-p] < name/ >

(5)rm

rm(remove)删除目录/文件

  • rm < /name1 >[/name2][/name3]
    rm Practice/20220622表示删除 Practice 目录下的 20220622 文件。

(6)mv

mv [-fiu] source destination移动目录/文件,或修改名称

-f :force 强制,如果目标文件已经存在,不会询问而直接覆盖;
-i :若目标文件 (destination) 已经存在时,就会询问是否覆盖;
-u :若目标文件已经存在,且 source 比较新,才会升级 (update);

(7)pwd

pwd(print working directory)显示目前目录

  • pwd单纯显示目前的工作目录

      [root@host ~]# cd /root/HelloWorld
      [root@host HelloWord]# pwd
      /root/HelloWorld
    
  • pwd [-P]显示出完整的绝对路径的工作目录

(8)cp

cp(copy)拷贝

(9)cat

cat [-AbEnTv] [-p] 由第一行开始显示文件内容

cat记忆法:
< concatenate > v. to put two or more computer files or pieces of computer information together in order to form a single unit; n.used for describing two or more computer files or pieces of computer information that have been put together to form a single unit
选项与参数:
-A :相当於 -vET 的整合选项,可列出一些特殊字符而不是空白而已;
-b :列出行号,仅针对非空白行做行号显示,空白行不标行号;
-E :将结尾的断行字节 $ 显示出来;
-n :列印出行号,连同空白行也会有行号,与 -b 的选项不同;
-T :将 [tab] 按键以 ^I 显示出来;
-v :列出一些看不出来的特殊字符

举例:查看 /etc/issue 这个文件的内容:

[root@host ~]# cat /etc/issue   //查看当前目录下的 issue 文件
CentOS release 6.4 (Final)
Kernel \r on an \m

(10)find

find path -option [-print ] expression 指定目录下查找文件
任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则 find 命令将在当前目录下查找子目录与文件,并且将查找到的子目录和文件全部进行显示。

关于可选性,请用man find命令查看或参考:https://www.runoob.com/linux/linux-comm-find.html

find 根据下列规则判断 path 和 expression:在命令列上第一个 - 之前的部份为 path,之后的是 expression。如果 path 是空字串则使用目前路径,如果 expression 是空字串则使用 -print 为预设expression。

举例1:找出当前目录(/Practice)及其子目录下所有的文件:

[root@host ~]# ls -a
C-disk  D-disk  E-disk  F-disk  Good  HelloWorld  Practice
[root@iZwz9fhqn5vfnx7l59pw48Z ~]# ls /root/Practice
One  Three  Two
[root@iZwz9fhqn5vfnx7l59pw48Z ~]# find ./Practice -type f  //找出当前目录(`/Practice`)及其子目录下所有的文件
./Practice
./Practice/One
./Practice/Two
./Practice/Three

举例2:找出/var/log日志目录下过去 1 日内修改过的文件:

[root@host ~]# cd /var
[root@host var]# ls /var
account  adm  cache  crash  db  empty  ftp  games  gopher  kerberos  lib  local  lock  log  mail  nis  opt  preserve  run  spool  tmp  yp
[root@host var]# ls ./log
boot.log  ...  
[root@host var]# find ./log -type f -mtime 1   //找出`/var/log`目录下过去 1 日内修改过的文件
./log/sssd/sssd.log
./...
./log/boot.log

(11)grep

grep 用于查找内容包含指定的范本样式的文件。如果发现某文件的内容符合所指定的范本样式,grep 指令会把含有范本样式的内容显示出来。若不指定任何文件名称,或是所给予的文件名为-,则 grep 指令会从标准输入设备读取数据。
grep [-options][-A<显示行数>][-B<显示列数>][-C<显示列数>][-d<进行动作>][-e<范本样式>][-f<范本文件>][--help][范本样式][文件或目录...]

关于可选性,请用man find命令查看或参考:https://www.runoob.com/linux/linux-comm-find.html

3 Linux命令分类

3.1 文件管理

3.1.1 目录管理

常见的处理目录的命令:

你可以使用man <命令>来查看各个命令的使用方法,如:man cp

  • ls(list files): 列出目录及文件名
  • cd(change directory):切换目录
  • cp(copy file): 复制文件或目录
  • rm(remove): 删除文件或目录
  • mv(move file): 移动文件与目录,或修改文件与目录的名称
  • pwd(print work directory):显示当前目录
  • mkdir(make directory):创建一个新的目录
  • rmdir(remove directory):删除一个空的目录

3.1.2 文件查看

常见的文件查看的命令:

你可以使用man <命令>来查看各个命令的使用方法,如:man cat

  • cat: 由第一行开始显示文件内容
  • tac: 从最后一行开始显示,可以看出 tac 是 cat 的倒着写!
  • nl : 显示的时候,顺道输出行号!
  • more: 一页一页的显示文件内容
  • less: 与 more 类似,但是比 more 更好的是,他可以往前翻页!
  • head: 只看头几行
  • tail: 只看尾巴几行