欢迎光临
我们一直在努力

Linux 基础指令速查:从 ls 到 tar 的常用命令全解析

Linux 基础指令速查:从 ls 到 tar 的常用命令全解析

前言

本篇文章将带你了解Linux中基础的指令,话不多说,直接开始吧。

一、命令总览

分类命令
目录与文件 ls、pwd、cd、touch、mkdir、rmdir、rm、cp、mv、cat、more、less、head、tail
查找与帮助 man、find、which、whereis、grep
时间与日历 date、cal
压缩与打包 zip/unzip、tar、rzsz
系统信息与工具 alias、top、bc、uname、file、shutdown
权限管理 su、chmod、chown、chgrp、umask、sudo

二、目录与文件操作类

1. ls 指令

语法

ls [选项] [目录或文件]

功能:对于目录,该命令列出该目录下的所有子目录与文件;对于文件,将列出文件名以及其他信息。

常用选项

选项说明
-a 列出目录下的所有文件,包括以 . 开头的隐含文件
-d 将目录像文件一样显示,而不是显示其下的文件,如 ls -d 指定目录
-i 输出文件的 i 节点的索引信息,如 ls -ai 指定文件
-k 以 k 字节的形式表示文件的大小,如 ls -alk 指定文件
-l 列出文件的详细信息
-n 用数字的 UID、GID 代替名称
-F 在每个文件名后附上一个字符以说明该文件的类型:* 表示可执行的普通文件,/ 表示目录,@ 表示符号链接,`
-r 对目录反向排序
-t 以时间排序
-s 在文件名后输出该文件的大小(可用于大小排序,如找出目录下最大的文件)
-R 列出所有子目录下的文件(递归)
-1 一行只输出一个文件

举例

[whb@bite-alicloud test]$ ls
dir file.txt

[whb@bite-alicloud test]$ ls -a
. .. dir file.txt

[whb@bite-alicloud test]$ ls -a -l
total 12
drwxrwxr-x 3 whb whb 4096 Jan 11 15:01 .
drwx—— 22 whb whb 4096 Jan 11 14:21 ..
drwxrwxr-x 2 whb whb 4096 Jan 11 14:22 dir
-rw-rw-r– 1 whb whb 0 Jan 11 14:22 file.txt

[whb@bite-alicloud test]$ ls -a -l -F
total 12
drwxrwxr-x 3 whb whb 4096 Jan 11 15:01 ./
drwx—— 22 whb whb 4096 Jan 11 14:21 ../
drwxrwxr-x 2 whb whb 4096 Jan 11 14:22 dir/
-rw-rw-r– 1 whb whb 0 Jan 11 14:22 file.txt

[whb@bite-alicloud test]$ ls -alFn
total 12
drwxrwxr-x 3 1003 1003 4096 Jan 11 15:01 ./
drwx—— 22 1003 1003 4096 Jan 11 14:21 ../
drwxrwxr-x 2 1003 1003 4096 Jan 11 14:22 dir/
-rw-rw-r– 1 1003 1003 0 Jan 11 14:22 file.txt

可以看到,-F 会在文件名后追加类型字符,-n 会把用户名和组名换成数字 ID。


2. pwd 命令

语法

pwd

功能:显示用户当前所在的目录。

常用选项:无

举例

[whb@bite-alicloud test]$ pwd
/home/whb/test


3. cd 指令

补充知识:路径的认识

  • Linux 系统中,磁盘上的文件和目录被组成一棵目录树,每个节点都是目录或文件。
  • 其中普通文件一定是目录树的叶子节点;目录可能是叶子(空目录),也可能是路上节点。
  • 路径存在的意义:树状组织方式都是为了保证快速定位查找到指定的文件,而定位文件就需要具有唯一性的方案。其中任何一个节点都只有一个父节点,所以从根目录开始定位指定文件,路径具有唯一性。
  • 绝对路径:一般从 / 开始,不依赖其他目录来定位文件的方式。
  • 相对路径:相对于当前用户所处目录,定位文件的路径方式。
  • 绝对路径一般不会随着用户的路径变化而丧失唯一性,通常在特定服务的配置文件中被使用;相对路径因为便捷,一般在命令行中使用较多。

语法

cd 目录名

功能:改变工作目录,将当前工作目录改变到指定的目录下。

举例

# 返回上级目录
[whb@bite-alicloud ~]$ pwd
/home/whb
[whb@bite-alicloud ~]$ cd ..
[whb@bite-alicloud home]$ pwd
/home

# 绝对路径定位目录或者文件
[whb@bite-alicloud home]$ pwd
/home
[whb@bite-alicloud home]$ cd /home/whb/test
[whb@bite-alicloud test]$ pwd
/home/whb/test

# 相对路径定位目录或者文件
[whb@bite-alicloud test]$ pwd
/home/whb/test
[whb@bite-alicloud test]$ cd ../temp/
[whb@bite-alicloud temp]$ pwd
/home/whb/temp

# 每一次新建一个用户都会在 /home 目录下为新用户创建新的工作目录,目录以新用户名称命名
# root 用户在安装操作系统的时候,就已经内置了工作目录: /root
[whb@bite-alicloud temp]$ ls /home
bss gaobo luojie whb wudu

# 快速进入自己的家目录
[whb@bite-alicloud test]$ whoami
whb
[whb@bite-alicloud test]$ pwd
/home/whb/test
[whb@bite-alicloud test]$ cd ~
[whb@bite-alicloud ~]$ pwd
/home/whb

# 返回到最近访问目录
[whb@bite-alicloud ~]$ pwd # 当前在 /home/whb 目录下
/home/whb
[whb@bite-alicloud ~]$ cd / # 进入 / 目录
[whb@bite-alicloud /]$ pwd
/
[whb@bite-alicloud /]$ cd – # 直接可以回退到最近一次所处的目录: /home/whb
/home/whb
[whb@bite-alicloud ~]$ pwd
/home/whb
[whb@bite-alicloud ~]$ cd – # 直接可以回退到最近一次所处的目录: /
/
[whb@bite-alicloud /]$ pwd
/
[whb@bite-alicloud /]$ cd – # 同上
/home/whb
[whb@bite-alicloud ~]$ pwd
/home/whb


4. touch 指令

补充知识:文件类型的认识

语法

touch [选项]... 文件...

功能:touch 命令参数可更改文档或目录的日期时间,包括存取时间和更改时间,或者新建一个不存在的文件。

常用选项

  • -a:change only the access time
  • -c:change only the modification time

举例

# 创建普通文件
[whb@bite-alicloud test]$ ls
dir file.txt
[whb@bite-alicloud test]$ touch newFile.txt
[whb@bite-alicloud test]$ ls
dir file.txt newFile.txt

# 查看文件时间
[whb@bite-alicloud test]$ stat newFile.txt
File: 'newFile.txt'
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: fd01h/64769d Inode: 1844719 Links: 1
Access: (0664/-rw-rw-r–) Uid: ( 1003/ whb) Gid: ( 1003/ whb)
Access: 2023-01-11 15:06:45.832787572 +0800
Modify: 2023-01-11 15:06:45.832787572 +0800
Change: 2023-01-11 15:06:45.832787572 +0800
Birth: –

# 修改文件 access 时间
[whb@bite-alicloud test]$ touch -a newFile.txt
[whb@bite-alicloud test]$ stat newFile.txt
File: 'newFile.txt'
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: fd01h/64769d Inode: 1844719 Links: 1
Access: (0664/-rw-rw-r–) Uid: ( 1003/ whb) Gid: ( 1003/ whb)
Access: 2023-01-11 15:07:00.062846804 +0800
Modify: 2023-01-11 15:06:45.832787572 +0800
Change: 2023-01-11 15:07:00.062846804 +0800 # 该时间为何会变化?
Birth: –

# 修改文件 Modify 时间
[whb@bite-alicloud test]$ touch -m newFile.txt
[whb@bite-alicloud test]$ stat newFile.txt
File: 'newFile.txt'
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: fd01h/64769d Inode: 1844719 Links: 1
Access: (0664/-rw-rw-r–) Uid: ( 1003/ whb) Gid: ( 1003/ whb)
Access: 2023-01-11 15:07:00.062846804 +0800
Modify: 2023-01-11 15:09:19.428426903 +0800
Change: 2023-01-11 15:09:19.428426903 +0800
Birth: –

更多细节(三个时间的区别、inode 与文件的对应关系)会在基础 IO 部分统一讲解。


5. mkdir 指令

语法

mkdir [选项] dirname...

功能:在当前目录下创建一个名为 dirname 的目录。

常用选项

  • -p / –parents:可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不存在的目录,即一次可以建立多个目录。

举例

# 创建普通空目录
[whb@bite-alicloud test]$ ls -l
total 4
drwxrwxr-x 2 whb whb 4096 Jan 11 14:22 dir
-rw-rw-r– 1 whb whb 0 Jan 11 14:22 file.txt
-rw-rw-r– 1 whb whb 0 Jan 11 15:09 newFile.txt
[whb@bite-alicloud test]$ mkdir mydir
[whb@bite-alicloud test]$ ls -l
total 8
drwxrwxr-x 2 whb whb 4096 Jan 11 14:22 dir
-rw-rw-r– 1 whb whb 0 Jan 11 14:22 file.txt
drwxrwxr-x 2 whb whb 4096 Jan 11 15:15 mydir
-rw-rw-r– 1 whb whb 0 Jan 11 15:09 newFile.txt

# 递归建立多个目录,创建指定路径
[whb@bite-alicloud test]$ mkdir -p path1/path2/path3/path4
[whb@bite-alicloud test]$ ls -l
total 12
drwxrwxr-x 2 whb whb 4096 Jan 11 14:22 dir
-rw-rw-r– 1 whb whb 0 Jan 11 14:22 file.txt
drwxrwxr-x 2 whb whb 4096 Jan 11 15:15 mydir
-rw-rw-r– 1 whb whb 0 Jan 11 15:09 newFile.txt
drwxrwxr-x 3 whb whb 4096 Jan 11 15:16 path1
[whb@bite-alicloud test]$ tree path1
path1
└── path2
└── path3
└── path4

tree 命令是一个递归以树状结构显示指定目录的命令,如果没有安装:

  • 如果当前用户是 root:yum install -y tree
  • 如果当前用户是普通用户:sudo yum install -y tree

6. rmdir 指令 && rm 指令

rmdir 是一个与 mkdir 相对应的命令,mkdir 是建立目录,而 rmdir 是删除命令。

语法

rmdir [-p] [dirName]

适用对象:具有当前目录操作权限的所有使用者

功能:删除空目录

常用选项

  • -p:当子目录被删除后如果父目录也变成空目录的话,就连带父目录一起删除。

举例

# 删除空目录
[whb@bite-alicloud test]$ ll
total 12
drwxrwxr-x 2 whb whb 4096 Jan 11 14:22 dir
-rw-rw-r– 1 whb whb 0 Jan 11 14:22 file.txt
drwxrwxr-x 2 whb whb 4096 Jan 11 15:15 mydir
-rw-rw-r– 1 whb whb 0 Jan 11 15:09 newFile.txt
drwxrwxr-x 3 whb whb 4096 Jan 11 15:16 path1
[whb@bite-alicloud test]$ tree mydir/
mydir/

0 directories, 0 files
[whb@bite-alicloud test]$ rmdir mydir
[whb@bite-alicloud test]$ ll
total 8
drwxrwxr-x 2 whb whb 4096 Jan 11 14:22 dir
-rw-rw-r– 1 whb whb 0 Jan 11 14:22 file.txt
-rw-rw-r– 1 whb whb 0 Jan 11 15:09 newFile.txt
drwxrwxr-x 3 whb whb 4096 Jan 11 15:16 path1

# 删除路径
[whb@bite-alicloud test]$ tree path1
path1
└── path2
└── path3
└── path4

3 directories, 0 files
[whb@bite-alicloud test]$ rmdir -p path1/path2/path3/path4
[whb@bite-alicloud test]$ ll
total 4
drwxrwxr-x 2 whb whb 4096 Jan 11 14:22 dir
-rw-rw-r– 1 whb whb 0 Jan 11 14:22 file.txt
-rw-rw-r– 1 whb whb 0 Jan 11 15:09 newFile.txt

# 指定路径中有不为空的路径,便无法删除
[whb@bite-alicloud test]$ rmdir -p path1/path2/path3
rmdir: failed to remove 'path1/path2/path3': Directory not empty

rm 命令可以同时删除文件或目录。

语法

rm [-f-i-r-v] [dirName/dir]

适用对象:所有使用者

功能:删除文件或目录

常用选项

  • -f:即使文件属性为只读(即写保护),亦直接删除
  • -i:删除前逐一询问确认
  • -r:删除目录及其下所有文件

举例

# 删除普通文件
[whb@bite-alicloud test]$ ll
total 8
drwxrwxr-x 2 whb whb 4096 Jan 11 14:22 dir
-rw-rw-r– 1 whb whb 0 Jan 11 14:22 file.txt
-rw-rw-r– 1 whb whb 0 Jan 11 15:09 newFile.txt
drwxrwxr-x 3 whb whb 4096 Jan 11 15:26 path1
[whb@bite-alicloud test]$ rm file.txt
[whb@bite-alicloud test]$ ll
total 8
drwxrwxr-x 2 whb whb 4096 Jan 11 14:22 dir
-rw-rw-r– 1 whb whb 0 Jan 11 15:09 newFile.txt
drwxrwxr-x 3 whb whb 4096 Jan 11 15:26 path1

# 删除目录文件
[whb@bite-alicloud test]$ rm dir
rm: cannot remove 'dir': Is a directory
[whb@bite-alicloud test]$ rm -r dir
[whb@bite-alicloud test]$ ll
total 4
-rw-rw-r– 1 whb whb 0 Jan 11 15:09 newFile.txt
drwxrwxr-x 3 whb whb 4096 Jan 11 15:26 path1

# 删除普通文件前询问
[whb@bite-alicloud test]$ rm -i newFile.txt
rm: remove regular empty file 'newFile.txt'? y

# 删除目录前询问
[whb@bite-alicloud test]$ mkdir -p d/d/d/d
[whb@bite-alicloud test]$ rm -ri d
rm: descend into directory 'd'? y
rm: descend into directory 'd/d'? y
rm: descend into directory 'd/d/d'? y
rm: remove directory 'd/d/d/d'? y
rm: remove directory 'd/d/d'? y
rm: remove directory 'd/d'? y
rm: remove directory 'd'? y

# 递归强制删除非空目录
[whb@bite-alicloud test]$ rm -f path1
rm: cannot remove 'path1': Is a directory
[whb@bite-alicloud test]$ rm -rf path1
[whb@bite-alicloud test]$ ll
total 0


7. man 指令

Linux 的命令有很多参数,我们不可能全记住,可以通过查看联机手册获取帮助。

语法

man [选项] 命令

常用选项

  • -k:根据关键字搜索联机帮助
  • num:只在第 num 章节查找
  • -a:将所有章节的都显示出来。比如 man printf 它缺省从第一章开始搜索,找到就停止;用 a 选项,当按下 q 退出,它会继续往后面搜索,直到所有章节都搜索完毕

man 手册分为 9 章(不同系统可能会有差别):

  • 是普通的命令
  • 是系统调用,如 open、write 之类的(通过这个至少可以很方便地查到调用这个函数需要加什么头文件)
  • 是库函数,如 printf、fread
  • 是特殊文件,也就是 /dev 下的各种设备文件
  • 是指文件的格式,比如 passwd,就会说明这个文件中各个字段的含义
  • 是给游戏留的,由各个游戏自己定义
  • 是附件还有一些变量,比如像 environ 这种全局变量在这里就有说明
  • 是系统管理用的命令,这些命令只能由 root 使用,如 ifconfig
  • 略
  • 举例

    [whb@bite-alicloud test]$ man printf # 查看 printf 指令(没错,printf 也是一个指令)
    [whb@bite-alicloud test]$ man fork # 查看系统调用,默认没有这个指令,man 就自动去 2 号手册查找
    [whb@bite-alicloud test]$ man 2 frok # 查看系统调用
    [whb@bite-alicloud test]$ man 3 printf # 查看 C 库函数
    [whb@bite-alicloud test]$ man 7 signal # 查看变量
    [whb@bite-alicloud test]$ man 7 environ
    [whb@bite-alicloud test]$ man man # 查看 man 手册自己


    8. cp 指令

    语法

    cp [选项] 源文件或目录 目标文件或目录

    功能:复制文件或目录

    说明

    • cp 指令用于复制文件或目录
    • 如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到此目录中

    常用选项

    • -f 或 –force:强行复制文件或目录,不论目的文件或目录是否已经存在
    • -i 或 –interactive:覆盖文件之前先询问用户
    • -r:递归处理,将指定目录下的文件与子目录一并处理。若源文件或目录的形态不属于目录或符号链接,则一律视为普通文件处理

    举例

    # cp 普通文件
    [whb@bite-alicloud test]$ echo "你好比特就业课" > myfile.txt
    [whb@bite-alicloud test]$ cat myfile.txt
    你好比特就业课
    [whb@bite-alicloud test]$ cp myfile.txt myfile-backup.txt
    [whb@bite-alicloud test]$ cat myfile-backup.txt
    你好比特就业课

    # 将多个文件拷贝到指定路径下
    [whb@bite-alicloud test]$ mkdir dir
    [whb@bite-alicloud test]$ cp *.txt dir # * 表示通配符,匹配所有 .txt 结尾的文件名
    [whb@bite-alicloud test]$ tree dir
    dir
    ├── myfile-backup.txt
    └── myfile.txt

    # cp 如果目标文件存在,就覆盖
    [whb@bite-alicloud test]$ echo "hello bite tech" > myfile.txt
    [whb@bite-alicloud test]$ cp myfile.txt myfile-backup.txt
    [whb@bite-alicloud test]$ cat myfile-backup.txt
    hello bite tech

    # 拷贝前询问
    [whb@bite-alicloud test]$ cp -i myfile.txt myfile-backup.txt
    cp: overwrite 'myfile-backup.txt'? y

    # 递归强制拷贝整个目录
    [whb@bite-alicloud ~]$ tree test
    test
    ├── dir
    │ ├── myfile-backup.txt
    │ └── myfile.txt
    ├── myfile-backup.txt
    └── myfile.txt

    1 directory, 4 files
    [whb@bite-alicloud ~]$ cp -rf test test-backup
    [whb@bite-alicloud ~]$ tree test-backup
    test-backup
    ├── dir
    │ ├── myfile-backup.txt
    │ └── myfile.txt
    ├── myfile-backup.txt
    └── myfile.txt

    1 directory, 4 files


    9. mv 指令

    mv 命令是 move 的缩写,可以用来移动文件或者将文件改名(move (rename) files),经常用来备份文件或者目录。

    语法

    mv [选项] 源文件或目录 目标文件或目录

    功能

  • 视 mv 命令中第二个参数类型的不同(是目标文件还是目标目录),mv 命令将文件重命名或将其移至一个新的目录中。
  • 当第二个参数类型是文件时,mv 命令完成文件重命名,此时源文件只能有一个(也可以是源目录名),它将所给的源文件或目录重命名为给定的目标文件名。
  • 当第二个参数是已存在的目录名称时,源文件或目录参数可以有多个,mv 命令将各参数指定的源文件均移至目标目录中。
  • 常用选项

    • -f:force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖
    • -i:若目标文件(destination)已经存在时,就会询问是否覆盖!

    举例

    # 更改名称
    [whb@bite-alicloud test]$ touch myfile.txt
    [whb@bite-alicloud test]$ mv myfile.txt yourfile.txt

    # 如果当前路径存在同名文件,改名即覆盖
    [whb@bite-alicloud test]$ touch myfile.txt
    [whb@bite-alicloud test]$ mv yourfile.txt myfile.txt

    # 如果当前路径存在同名文件,改名前可以添加 i 选项,让系统提出警告供用户做选择
    [whb@bite-alicloud test]$ mv -i yourfile.txt myfile.txt
    mv: overwrite 'myfile.txt'? y

    # mv 整个目录
    [whb@bite-alicloud test]$ touch myfile.txt
    [whb@bite-alicloud test]$ mkdir temp
    [whb@bite-alicloud test]$ mv myfile.txt temp
    [whb@bite-alicloud test]$ ls
    temp
    [whb@bite-alicloud test]$ mv temp ../
    [whb@bite-alicloud test]$ ls
    [whb@bite-alicloud test]$ ls -d ../temp
    ../temp


    10. cat 指令

    语法

    cat [选项] [文件]

    功能:查看目标文件的内容。

    常用选项

    • -b:对非空输出行编号,空行不做编号
    • -n:对输出的所有行编号
    • -s:不输出多行空行

    举例

    # 命令行构建多行文本
    [whb@bite-alicloud test]$ cnt=0; while [ $cnt -le 20 ]; do echo "hello bite"; let cnt++; done > temp.txt

    # 测试 cat 基本命令
    [whb@bite-alicloud test]$ cat temp.txt
    hello bite
    (共 21 行 hello bite,此处省略)

    # cat 输出携带行号
    [whb@bite-alicloud test]$ cat -b temp.txt
    1 hello bite
    2 hello bite
    3 hello bite
    ...

    # 修改 temp.txt,使其携带多行空行后,测试 -b 对非空输出行编号
    [whb@bite-alicloud test]$ vim temp.txt
    [whb@bite-alicloud test]$ cat -b temp.txt
    1 hello bite
    2 hello bite
    3 hello bite

    4 hello bite
    5 hello bite

    6 hello bite
    7 hello bite
    ...

    # 测试 -n 对输出的所有行编号
    [whb@bite-alicloud test]$ cat -n temp.txt
    1 hello bite
    2 hello bite
    3 hello bite
    4
    5
    6
    7 hello bite
    8 hello bite
    9
    10 hello bite
    11 hello bite
    ...

    # 测试 -s 不输出多行空行,多行空行压缩成为一行
    [whb@bite-alicloud test]$ cat -s temp.txt
    hello bite
    hello bite
    hello bite

    hello bite
    hello bite

    hello bite
    hello bite
    hello bite
    ...


    11. more 指令

    语法

    more [选项]

    功能:more 命令,功能类似 cat。

    常用选项

    • -n:指定输出行数
    • q:退出 more

    举例

    # 命令行输出多行文本
    [whb@bite-alicloud test]$ cnt=0; while [ $cnt -le 2000 ]; do echo "hello bite"; let cnt++; done > temp.txt

    # -n 指定输出行数
    [whb@bite-alicloud test]$ more -10 temp.txt
    hello bite
    hello bite
    hello bite
    hello bite
    hello bite
    hello bite
    hello bite
    hello bite
    hello bite
    hello bite
    –More–(0%)


    12. less 指令

    • less 工具也是对文件或其它输出进行分页显示的工具,应该说是 Linux 正统查看文件内容的工具,功能极其强大。
    • less 的用法比起 more 更加的有弹性,在 more 的时候,我们并没有办法向前面翻,只能往后面看。
    • 但若使用了 less 时,就可以使用 [pageup] [pagedown] 等按键的功能来往前往后翻看文件,更容易用来查看一个文件的内容。
    • 除此之外,在 less 里头可以拥有更多的搜索功能,不止可以向下搜,也可以向上搜。

    语法

    less [参数] 文件

    功能:less 与 more 类似,但使用 less 可以随意浏览文件,而 more 仅能向前移动,却不能向后移动,而且 less 在查看之前不会加载整个文件。

    选项

    • -i:忽略搜索时的大小写
    • -N:显示每行的行号
    • /字符串:向下搜索"字符串"的功能
    • ?字符串:向上搜索"字符串"的功能
    • n:重复前一个搜索(与 / 或 ? 有关)
    • N:反向重复前一个搜索(与 / 或 ? 有关)
    • q:quit

    举例

    # 命令行输出多行文本
    [whb@bite-alicloud test]$ cnt=0; while [ $cnt -le 2000 ]; do echo "hello $cnt"; let cnt++; done > temp.txt

    # 测试搜索和 -N 等功能
    [whb@bite-alicloud test]$ less -N temp.txt
    1 hello 0
    2 hello 1
    3 hello 2
    4 hello 3
    5 hello 4
    6 hello 5
    7 hello 6
    8 hello 7
    9 hello 8
    10 hello 9
    11 hello 10
    12 hello 11
    13 hello 12
    14 hello 13
    ...
    # 其他选项也可以直接测试


    13. head 指令

    head 与 tail 就像它的名字一样的浅显易懂,它是用来显示开头或结尾某个数量的文字区块,head 用来显示档案的开头至标准输出中,而 tail 想当然尔就是看档案的结尾。

    语法

    head [参数]... [文件]...

    功能:head 用来显示档案的开头至标准输出中,默认 head 命令打印其相应文件的开头 10 行。

    选项

    • -n<行数>:显示的行数

    举例

    [whb@bite-alicloud test]$ head temp.txt
    hello 0
    hello 1
    hello 2
    hello 3
    hello 4
    hello 5
    hello 6
    hello 7
    hello 8
    hello 9
    [whb@bite-alicloud test]$ head -5 temp.txt
    hello 0
    hello 1
    hello 2
    hello 3
    hello 4


    14. tail 指令

    tail 命令从指定点开始将文件写到标准输出。使用 tail 命令的 -f 选项可以方便的查阅正在改变的日志文件,tail -f filename 会把 filename 里最尾部的内容显示在屏幕上,并且不断刷新,使你看到最新的文件内容。

    语法

    tail [必要参数] [文件]

    功能:用于显示指定文件末尾内容,不指定文件时,作为输入信息进行处理。常用查看日志文件。

    选项

    • -f:循环读取
    • -n<行数>:显示行数

    举例(顺便讲解重定向和管道)

    # 基本功能演示
    [whb@bite-alicloud test]$ tail temp.txt
    hello 1991
    hello 1992
    hello 1993
    hello 1994
    hello 1995
    hello 1996
    hello 1997
    hello 1998
    hello 1999
    hello 2000
    [whb@bite-alicloud test]$ tail -3 temp.txt
    hello 1998
    hello 1999
    hello 2000

    综合问题:如何显示文件的 [180,200] 行内容?

    [whb@bite-alicloud test]$ head -200 temp.txt | tail -20
    hello 180
    hello 181
    hello 182
    ...
    hello 199


    三、查找与帮助类

    15. find 指令

    • Linux 下 find 命令在目录结构中搜索文件,并执行指定的操作。
    • Linux 下 find 命令提供了相当多的查找条件,功能很强大。由于 find 具有强大的功能,所以它的选项也很多,其中大部分选项都值得我们花时间来了解一下。
    • 即使系统中含有网络文件系统(NFS),find 命令在该文件系统中同样有效,只要你具有相应的权限。
    • 在运行一个非常消耗资源的 find 命令时,很多人都倾向于把它放在后台执行,因为遍历一个大的文件系统可能会花费很长的时间(这里是指 30G 字节以上的文件系统)。

    语法

    find pathname -options

    功能:用于在文件树中查找文件,并作出相应的处理(可能访问磁盘)。

    常用选项

    • -name:按照文件名查找文件
    • 其他选项需要再查,这个命令其实比较复杂

    举例

    # 在指定路径下搜索指定名称的文件
    [whb@bite-alicloud test]$ find ~ -name test.c
    /home/whb/test_code/old_code/test.c
    /home/whb/test_code/test.c
    ...


    16. which 指令

    功能:搜索系统指定的命令。

    举例

    [whb@bite-alicloud test]$ which ls
    alias ls='ls –color=auto'
    /usr/bin/ls
    [whb@bite-alicloud test]$ which pwd
    /usr/bin/pwd


    17. whereis 指令

    功能:用于找到程序的源、二进制文件或手册。

    举例

    [whb@bite-alicloud test]$ whereis ls
    ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz /usr/share/man/man1p/ls.1p.gz
    [whb@bite-alicloud test]$ whereis libc.so
    libc: /usr/lib64/libc.so /usr/lib64/libc.a /usr/share/man/man7/libc.7.gz


    18. grep 指令

    语法

    grep [选项] 搜寻字符串 文件

    功能:在文件中搜索字符串,将找到的行打印出来。

    常用选项

    • -i:忽略大小写的不同,所以大小写视为相同
    • -n:顺便输出行号
    • -v:反向选择,亦即显示出没有 ‘搜寻字符串’ 内容的那一行

    举例

    # 文件内容
    [whb@bite-alicloud test]$ cat temp.txt
    abcd
    ABCD
    hello
    bite
    1234

    # 基本查找
    [whb@bite-alicloud test]$ grep "abcd" temp.txt
    abcd

    # 忽略大小写的不同,所以大小写视为相同
    [whb@bite-alicloud test]$ grep -i "abcd" temp.txt
    abcd
    ABCD

    # 顺便输出行号
    [whb@bite-alicloud test]$ grep -n "abcd" temp.txt
    1:abcd
    [whb@bite-alicloud test]$ grep -ni "abcd" temp.txt
    1:abcd
    2:ABCD

    # 反向选择,亦即显示出没有 '搜寻字符串' 内容的那一行
    [whb@bite-alicloud test]$ grep -v "abcd" temp.txt
    ABCD
    hello
    bite
    1234
    [whb@bite-alicloud test]$ grep -vn "abcd" temp.txt
    2:ABCD
    3:hello
    4:bite
    5:1234
    [whb@bite-alicloud test]$ grep -vni "abcd" temp.txt
    3:hello
    4:bite
    5:1234


    四、时间与日历类

    19. date 指令

    指定格式显示时间:

    date +%Y:%m:%d

    用法

    date [OPTION]... [+FORMAT]

    1. 在显示方面,使用者可以设定欲显示的格式,格式设定为一个加号后接数个标记,其中常用的标记列表如下:

    • %H:小时 (00…23)
    • %M:分钟 (00…59)
    • %S:秒 (00…61)
    • %X:相当于 %H:%M:%S
    • %d:日 (01…31)
    • %m:月份 (01…12)
    • %Y:完整年份 (0000…9999)
    • %F:相当于 %Y-%m-%d

    2. 在设定时间方面

    date -s # 设置当前时间,只有 root 权限才能设置,其他只能查看
    date -s 20080523 # 设置成 20080523,这样会把具体时间设置成空 00:00:00
    date -s 01:01:01 # 设置具体时间,不会对日期做更改
    date -s "01:01:01 2008-05-23" # 这样可以设置全部时间
    date -s "01:01:01 20080523" # 这样可以设置全部时间
    date -s "2008-05-23 01:01:01" # 这样可以设置全部时间
    date -s "20080523 01:01:01" # 这样可以设置全部时间

    3. 时间戳

    • 时间 -> 时间戳:date +%s
    • 时间戳 -> 时间:date -d@1508749502
    • Unix 时间戳(英文为 Unix epoch, Unix time, POSIX time 或 Unix timestamp)是从 1970 年 1 月 1 日(UTC/GMT 的午夜)开始所经过的秒数,不考虑闰秒。

    4. 举例

    # 显示常规时间
    [whb@bite-alicloud test]$ date
    Wed Jan 11 18:22:50 CST 2023
    [whb@bite-alicloud test]$ date +%Y/%m/%d
    2023/01/11
    [whb@bite-alicloud test]$ date +%Y/%m/%d-%H:%M:%S
    2023/01/11-18:23:20

    # 显示时间戳
    [whb@bite-alicloud test]$ date +%s
    1673432636

    # 时间戳转成可视时间
    [whb@bite-alicloud test]$ date +%Y/%m/%d-%H:%M:%S -d @0
    1970/01/01-08:00:00
    [whb@bite-alicloud test]$ date +%Y/%m/%d-%H:%M:%S -d @100000
    1970/01/02-11:46:40
    [whb@bite-alicloud test]$ date +%Y/%m/%d-%H:%M:%S -d @1000000000
    2001/09/09-09:46:40


    20. cal 指令

    cal 命令可以用来显示公历(阳历)日历。公历是现在国际通用的历法,又称格列历,通称阳历。“阳历"又名"太阳历”,系以地球绕行太阳一周为一年,为西方各国所通用,故又名"西历"。

    命令格式

    cal [参数] [年份]

    功能:用于查看日历等时间信息,如只有一个参数,则表示年份 (1-9999),如有两个参数,则表示月份和年份。

    常用选项

    • -3:显示系统前一个月,当前月,下一个月的月历
    • -j:显示在当年中的第几天(一年日期按天算,从 1 月 1 号算起,默认显示当前月在一年中的天数)
    • -y:显示当前年份的日历

    举例

    # 常规样例
    [whb@bite-alicloud test]$ cal
    January 2023
    Su Mo Tu We Th Fr Sa
    1 2 3 4 5 6 7
    8 9 10 11 12 13 14
    15 16 17 18 19 20 21
    22 23 24 25 26 27 28
    29 30 31

    [whb@bite-alicloud test]$ cal 1949
    1949

    January February March
    Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa
    1 1 2 3 4 5 1 2 3 4 5
    2 3 4 5 6 7 8 6 7 8 9 10 11 12 6 7 8 9 10 11 12
    9 10 11 12 13 14 15 13 14 15 16 17 18 19 13 14 15 16 17 18 19
    16 17 18 19 20 21 22 20 21 22 23 24 25 26 20 21 22 23 24 25 26
    23 24 25 26 27 28 29 27 28 27 28 29 30 31
    ...

    [whb@bite-alicloud test]$ cal -3
    December 2022 January 2023 February 2023
    Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa
    1 2 3 1 2 3 4 5 6 7 1 2 3 4
    4 5 6 7 8 9 10 8 9 10 11 12 13 14 5 6 7 8 9 10 11
    11 12 13 14 15 16 17 15 16 17 18 19 20 21 12 13 14 15 16 17 18
    18 19 20 21 22 23 24 22 23 24 25 26 27 28 19 20 21 22 23 24 25
    25 26 27 28 29 30 31 29 30 31 26 27 28


    五、压缩与打包类

    21. zip / unzip 指令

    语法

    zip 压缩文件.zip 目录或文件

    功能:将目录或文件压缩成 zip 格式。

    常用选项

    • -r:递归处理,将指定目录下的所有文件和子目录一并处理

    举例

    # 将 test2 目录压缩
    zip test2.zip test2/*

    # 解压到 /tmp 目录
    unzip test2.zip -d /tmp


    22. 关于 rzsz

    这个工具用于 Windows 机器和远端的 Linux 机器通过 XShell 传输文件。安装完毕之后可以通过拖拽的方式将文件上传过去。

    sudo yum/apt install -y lrzsz

    演示场景:Windows 和 Linux 如何互传文件。


    23. tar 指令(重要)

    打包 / 解包,不打开它,直接看内容。

    语法

    tar [-cxtzjvf] 文件与目录 ....

    参数

    参数说明
    -c 建立一个压缩文件的参数指令(create 的意思)
    -x 解开一个压缩文件的参数指令
    -t 查看 tarfile 里面的文件
    -z 是否同时具有 gzip 的属性,亦即是否需要用 gzip 压缩
    -j 是否同时具有 bzip2 的属性,亦即是否需要用 bzip2 压缩
    -v 压缩的过程中显示文件。这个常用,但不建议用在背景执行过程
    -f 使用档名,请留意,在 f 之后要立即接档名,不要再加参数
    -C 解压到指定目录
    案例

    范例一:将整个 /etc 目录下的文件全部打包成为 /tmp/etc.tar

    [root@linux ~]$ tar -cvf /tmp/etc.tar /etc # <==仅打包,不压缩!
    [root@linux ~]$ tar -zcvf /tmp/etc.tar.gz /etc # <==打包后,以 gzip 压缩
    [root@linux ~]$ tar -jcvf /tmp/etc.tar.bz2 /etc # <==打包后,以 bzip2 压缩

    特别注意,在参数 f 之后的文件档名是自己取的,我们习惯上都用 .tar 来作为辨识:

    • 如果加 z 参数,则以 .tar.gz 或 .tgz 来代表 gzip 压缩过的 tar file
    • 如果加 j 参数,则以 .tar.bz2 来作为附档名

    上述指令在执行的时候,会显示一个警告讯息:

    tar: Removing leading `/' from member names

    那是关于绝对路径的特殊设定。

    范例二:查阅上述 /tmp/etc.tar.gz 文件内有哪些文件?

    [root@linux ~]$ tar -ztvf /tmp/etc.tar.gz

    由于我们使用 gzip 压缩,所以要查阅该 tar file 内的文件时,就得要加上 z 这个参数了!这很重要的!

    范例三:将 /tmp/etc.tar.gz 文件解压缩在 /usr/local/src 底下

    [root@linux ~]$ cd /usr/local/src
    [root@linux src]$ tar -zxvf /tmp/etc.tar.gz

    在预设的情况下,我们可以将压缩档在任何地方解开的。以这个范例来说,我先将工作目录变换到 /usr/local/src 底下,并且解开 /tmp/etc.tar.gz,则解开的目录会在 /usr/local/src/etc。另外,如果您进入 /usr/local/src/etc,则会发现该目录下的文件属性与 /etc/ 可能会有所不同。

    范例四:在 /tmp 底下,我只想要将 /tmp/etc.tar.gz 内的 etc/passwd 解开而已

    [root@linux ~]$ cd /tmp
    [root@linux tmp]$ tar -zxvf /tmp/etc.tar.gz etc/passwd

    我可以透过 tar -ztvf 来查阅 tarfile 内的文件名称,如果只要一个文件,就可以透过这个方式来下达!注意到,etc.tar.gz 内的根目录 / 是被拿掉了。

    范例五:将 /etc/ 内的所有文件备份下来,并且保存其权限

    [root@linux ~]$ tar -zxvpf /tmp/etc.tar.gz /etc
    # 这个 -p 的属性是很重要的,尤其是当您要保留原本文件的属性时!

    范例六:在 /home 当中,比 2005/06/01 新的文件才备份

    [root@linux ~]$ tar -N "2005/06/01" -zcvf home.tar.gz /home

    范例七:我要备份 /home、/etc,但不要 /home/dmtsai

    [root@linux ~]$ tar –exclude /home/dmtsai -zcvf myfile.tar.gz /home/* /etc

    范例八:将 /etc/ 打包后直接解开在 /tmp 底下,而不产生文件

    [root@linux ~]$ cd /tmp
    [root@linux tmp]$ tar -cvf – /etc | tar -xvf –

    这个动作有点像是 cp -r /etc /tmp,但依旧是有其用途的。要注意的地方在于输出档变成 -,而输入档也变成 -,又有一个 | 存在,这分别代表 standard output、standard input 与管线命令。


    六、系统信息与常用工具

    24. alias 指令

    功能:设置命令的别名。

    举例

    [whb@bite-alicloud test]$ alias hello='ls -a -l -n'
    [whb@bite-alicloud test]$ which hello
    alias hello='ls -a -l -n'
    /usr/bin/ls
    [whb@bite-alicloud test]$ hello
    total 36
    drwxrwxr-x 2 1003 1003 4096 Jan 11 17:59 .
    drwx—— 22 1003 1003 4096 Jan 11 17:57 ..
    -rw-rw-r– 1 1003 1003 28667 Jan 11 18:29 temp.txt


    25. top

    top -d 1 -n 5

    • -d:刷新的时间间隔
    • -n:刷新的次数
    • q:退出

    26. bc 指令

    bc 命令可以很方便的进行浮点运算。


    27. uname 指令

    语法

    uname [选项]

    功能:uname 用来获取电脑和操作系统的相关信息。

    补充说明:uname 可显示 Linux 主机所用的操作系统的版本、硬件的名称等基本信息。

    常用选项

    • -a 或 –all:详细输出所有信息,依次为内核名称、主机名、内核版本号、内核版本、硬件名、处理器类型、硬件平台类型、操作系统名称
    • lsb_release -a:查看操作系统版本

    28. file 指令

    功能说明:辨识文件类型。

    语法

    file [选项] 文件或目录...

    常用选项

    • -c:详细显示指令执行过程,便于排错或分析程序执行的情形
    • -z:尝试去解读压缩文件的内容

    29. 关机 shutdown

    语法

    shutdown [选项]

    常见选项

    • -h:将系统的服务停掉后,立即关机
    • -r:在将系统的服务停掉之后就重新启动
    • -t sec:-t 后面加秒数,亦即"过几秒后关机"的意思

    30. 重要的几个热键 [Tab]、[Ctrl]-c、[Ctrl]-d

    • [Tab] 按键:具有『命令补全』和『档案补齐』的功能
    • [Ctrl]-c 按键:让当前的程序『停掉』
    • [Ctrl]-d 按键:通常代表着『键盘输入结束(End Of File, EOF 或 End Of Input)』的意思;另外,它也可以用来取代 exit

    七、shell 命令以及运行原理

    Linux 严格意义上说的是一个操作系统,我们称之为"核心(kernel)",但我们一般用户不能直接使用 kernel,而是通过 kernel 的"外壳"程序,也就是所谓的 shell,来与 kernel 沟通。如何理解?为什么不能直接使用 kernel?

    从技术角度,Shell 的最简单定义:命令行解释器(command Interpreter),主要包含:

    • 将使用者的命令翻译给核心(kernel)处理。
    • 同时,将核心的处理结果翻译给使用者。

    对比 Windows GUI,我们操作 Windows 不是直接操作 Windows 内核,而是通过图形接口点击,从而完成我们的操作(比如进入 D 盘的操作,我们通常是双击 D 盘盘符,或者运行起来一个应用程序)。

    shell 对于 Linux 有相同的作用,主要是对我们的指令进行解析,解析指令给 Linux 内核。反馈结果再通过内核运行出结果,通过 shell 解析给用户。


    八、Linux 权限管理

    1. 权限的概念

    Linux 下有两种用户:超级用户(root)、普通用户。

    • 超级用户:可以在 Linux 系统下做任何事情,不受限制
    • 普通用户:在 Linux 下做有限的事情
    • 超级用户的命令提示符是 #,普通用户的命令提示符是 $

    命令:su [用户名]

    功能:切换用户。

    例如,要从 root 用户切换到普通用户 user,则使用 su user。要从普通用户 user 切换到 root 用户则使用 su root(root 可以省略),此时系统会提示输入 root 用户的口令。

    2. 文件访问者的分类(人)

    • 文件和文件目录的所有者:u — User
    • 文件和文件目录的所有者所在的组的用户:g — Group
    • 其它用户:o — Others

    3. 文件类型和访问权限(事物属性)

    文件类型

    • d:文件夹
    • -:普通文件
    • l:软链接(类似 Windows 的快捷方式)
    • b:块设备文件(例如硬盘、光驱等)
    • p:管道文件
    • c:字符设备文件(例如屏幕等串口设备)
    • s:接口文件

    基本权限

    • 读(r/4):Read 对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限
    • 写(w/2):Write 对文件而言,具有修改文件内容的权限;对目录来说具有删除移动目录内文件的权限
    • 执行(x/1):execute 对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限
    • – 表示不具有该项权限

    4. 文件访问权限的相关设置方法

    chmod

    功能:设置文件的访问权限

    格式:chmod [参数] 权限 文件名

    常用选项:

    • -R -> 递归修改目录文件的权限
    • 说明:只有文件的拥有者和 root 才可以改变文件的权限

    chmod 命令权限值的格式

    (1)用户表示符 +/-/= 权限字符

    • +:向权限范围增加权限代号所表示的权限
    • -:向权限范围取消权限代号所表示的权限
    • =:向权限范围赋予权限代号所表示的权限
    • 用户符号:
      • u:拥有者
      • g:拥有者同组用户
      • o:其它用户
      • a:所有用户

    实例:

    chmod u+w /home/abc.txt
    chmod o-x /home/abc.txt
    chmod a=x /home/abc.txt

    (2)三位 8 进制数字

    实例:

    chmod 664 /home/abc.txt
    chmod 640 /home/abc.txt

    chown

    功能:修改文件的拥有者

    格式:chown [参数] 用户名 文件名

    实例:

    chown user1 f1
    chown -R user1 filegroup1

    chgrp

    功能:修改文件或目录的所属组

    格式:chgrp [参数] 用户组名 文件名

    常用选项:-R 递归修改文件或目录的所属组

    实例:

    chgrp users /abc/f2

    umask

    功能

    • 查看或修改文件掩码
    • 新建文件夹默认权限 = 0666
    • 新建目录默认权限 = 0777
    • 但实际上你所创建的文件和目录,看到的权限往往不是上面这个值。原因就是创建文件或目录的时候还要受到 umask 的影响。假设默认权限是 mask,则实际创建的出来的文件权限是:mask & ~umask

    格式:umask 权限值

    说明:将现有的存取权限减去权限掩码后,即可产生建立文件时预设权限。超级用户默认掩码值为 0022,普通用户默认为 0002。

    实例

    umask 755 # 设置
    umask # 查看
    umask 044 # 设置

    5. 使用 sudo 分配权限

    (1)修改 /etc/sudoers 文件分配权限

    # chmod 740 /etc/sudoers
    # vi /etc/sudoers

    格式:接受权限的用户登陆的主机 =(执行命令的用户) 命令

    (2)使用 sudo 调用授权的命令

    $ sudo -u 用户名 命令

    实例:

    $ sudo -u root /usr/sbin/useradd u2

    6. 目录的权限

    • 可执行权限:如果目录没有可执行权限,则无法 cd 到目录中。
    • 可读权限:如果目录没有可读权限,则无法用 ls 等命令查看目录中的文件内容。
    • 可写权限:如果目录没有可写权限,则无法在目录中创建文件,也无法在目录中删除文件。

    于是,问题来了。换句话来讲,就是只要用户具有目录的写权限,用户就可以删除目录中的文件,而不论这个用户是否有这个文件的写权限。

    这好像不太科学啊,我张三创建的一个文件,凭什么被你李四可以删掉?我们用下面的过程印证一下。

    [root@localhost ~]$ chmod 0777 /home/
    [root@localhost ~]$ ls /home/ -ld
    drwxrwxrwx. 3 root root 4096 9月 19 15:58 /home/
    [root@localhost ~]$ touch /home/root.c
    [root@localhost ~]$ ls -l /home/
    总用量 4
    -rw-r–r–. 1 root root 0 9月 19 15:58 abc.c
    drwxr-xr-x. 27 litao litao 4096 9月 19 15:53 litao
    -rw-r–r–. 1 root root 0 9月 19 15:59 root.c

    [root@localhost ~]$ su – litao
    [litao@localhost ~]$ rm /home/root.c # litao 可以删除 root 创建的文件
    rm:是否删除有写保护的普通空文件 "/home/root.c"?y
    [litao@localhost ~]$ exit
    logout

    为了解决这个不科学的问题,Linux 引入了粘滞位的概念。

    7. 关于权限的总结

    • 目录的可执行权限是表示你可否在目录下执行命令。
    • 如果目录没有 -x 权限,则无法对目录执行任何命令,甚至无法 cd 进入目录,即使目录仍然有 -r 读权限(这个地方很容易犯错,认为有读权限就可以进入目录读取目录下的文件)。
    • 而如果目录具有 -x 权限,但没有 -r 权限,则用户可以执行命令,可以 cd 进入目录。但由于没有目录的读权限,所以在目录下,即使可以执行 ls 命令,但仍然没有权限读出目录下的文档。

    8. 粘滞位[选学]

    [root@localhost ~]$ chmod +t /home/ # 加上粘滞位
    [root@localhost ~]$ ls -ld /home/
    drwxrwxrwt. 3 root root 4096 9月 19 16:00 /home/
    [root@localhost ~]$ su – litao
    [litao@localhost ~]$ rm /home/abc.c # litao 不能删除别人的文件
    rm:是否删除有写保护的普通空文件 "/home/abc.c"?y
    rm: 无法删除"/home/abc.c": 不允许的操作

    当一个目录被设置为"粘滞位"(用 chmod +t),则该目录下的文件只能由:

  • 超级管理员删除
  • 该目录的所有者删除
  • 该文件的所有者删除

  • 九、扩展命令清单

    以下命令作为扩展了解:

    分类命令
    安装和登录命令 login、shutdown、halt、reboot、install、mount、umount、chsh、exit、last
    文件处理命令 file、mkdir、grep、dd、find、mv、ls、diff、cat、ln
    系统管理相关命令 df、top、free、quota、at、lp、adduser、groupadd、kill、crontab
    网络操作命令 ifconfig、ip、ping、netstat、telnet、ftp、route、rlogin、rcp、finger、mail、nslookup
    系统安全相关命令 passwd、su、umask、chgrp、chmod、chown、chattr、sudo、ps、who
    其它命令 tar、unzip、gunzip、unarj、mtools、man、uudecode

    十、小结

    这份速查表覆盖了 Linux 入门阶段最常用的 30 个左右命令,核心记忆线索是:

    • 看:ls、pwd、cat、more、less、head、tail
    • 走:cd
    • 建:touch、mkdir、cp
    • 改:mv、chmod、chown、chgrp、umask
    • 删:rm、rmdir
    • 查:find、grep、which、whereis、man
    • 装:zip/unzip、tar

    熟练之后,再配合 man 手册和 [Tab] 补全,命令行效率会提升得非常快。

    赞(0)
    未经允许不得转载:171主机测评 » Linux 基础指令速查:从 ls 到 tar 的常用命令全解析
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址