• 初始Linux操作系统

• 初识shell命令,了解若干背景知识。

• 初步使用常用Linux命令

• 初步了解Linux目录结构含义

下载安装 XShell

购买轻量应用服务器:

建议选择Ubuntu,CentOS 7 已终止支持停止维护。
主机为公网 IP,即IPv4
  • Ubuntu 轻量服务器默认用户名:ubuntu
  • 密码:你在腾讯云重置的服务器登录密码

Linux的一些操作技巧

🖱️ 复制粘贴(终端专用)

场景 操作
从终端复制文本 选中要复制的内容,然后按 Ctrl+Shift+C(或右键点击“复制”)
粘贴到终端 按 Ctrl+Shift+V(或右键点击“粘贴”)
用鼠标中键粘贴 选中文本后,在目标位置按鼠标滚轮(中键)直接粘贴(X11 传统方式)
从外部复制到终端 与上面相同,Ctrl+Shift+V 或中键均可
注意 终端里不要只用 Ctrl+C,那是中断命令,不是复制;Ctrl+V 通常也不生效,必须加 Shift

⌨️ 终端控制与补全

技巧 说明
Tab 自动补全 输入命令/路径前缀,按 Tab 自动补全;按两次 Tab 列出所有匹配项
Ctrl+L 清屏(等同于 clear 命令)
Ctrl+D 退出当前终端或 shell(相当于输入 exit
Ctrl+C 强制中断当前正在运行的命令(不是复制!)
Ctrl+Z 暂停当前任务(放到后台,可用 fg 恢复)
Ctrl+R 反向搜索历史命令(输入关键字,按 Ctrl+R 循环匹配)
上下方向键 浏览之前执行过的命令,方便快速重用

Linux下基本指令

ls 指令

语法: ls [选项] [目录或文件]

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

pwd 命令

语法: pwd
功能:显示用户当前所在的目录

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

touch 指令

语法: touch [选项]... 文件...
功能:touch命令参数可更改文档或目录的日期时间,包括存取时间和更改时间,或者新建⼀个不存在的文件。
# 创建普通⽂件
[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: -

mkdir 指令

语法: mkdir [选项] dirname...

功能:在当前目录下创建⼀个名为 “dirname”的目录
# 创建普通空⽬录
[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 (因为现在开始⽤的都是root,所以推荐这个⽤
法)
# 如果当前⽤⼾是普通⽤⼾: sudo yum install -y tree (后⾯讲讲完vim,⼤家才能将⾃⼰添
加到系统信任列表中,暂时普通⽤⼾⽆法使⽤sudo)

rm 指令

语法: rm [-f-i-r-v] [dirName/dir]
适用对象:所有使用者
功能:删除文件或目录
# 删除普通⽂件
[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]$ 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]$ 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]$ ll
total 4
drwxrwxr-x 3 whb whb 4096 Jan 11 15:26 path1
[whb@bite-alicloud test]$ ll
total 4
drwxrwxr-x 3 whb whb 4096 Jan 11 15:26 path1
# 删除⽬录前询问
[whb@bite-alicloud test]$ mkdir -p d/d/d/d
[whb@bite-alicloud test]$ tree d
d
└── d
    └── d
        └── d
3 directories, 0 files
[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]$ ll
total 0

# 递归强制删除⾮空⽬录
[whb@bite-alicloud test]$ tree path1/
path1/
├── myfile.txt
└── path2
└── myfile.txt
1 directory, 2 files
[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

man 指令

Linux的命令有很多参数,我们不可能全记住,可以通过查看联机⼿册获取帮助
语法: man [选项] 命令
常用选项

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

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

1. 普通的命令。  
2. 系统调用,如 open、write 等(通过此可方便查到调用该函数需要包含的头文件)。  
3. 库函数,如 printf、fread。  
4. 特殊文件,即 /dev 下的各种设备文件。  
5. 文件的格式,如 passwd 会说明该文件中各个字段的含义。  
6. 留给游戏的,由各个游戏自己定义。  
7. 附件及一些变量,如 environ 这类全局变量在此有说明。  
8. 系统管理用的命令,这些命令只能由 root 使用,如 ifconfig。  
9. (略)

[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⼿册⾃⼰

cp 指令

语法: cp [选项] 源文件或目录 目标文件或目录
功能: 复制文件或目录
说明:
cp指令用于复制文件或目录
如同时指定两个以上的文件或目录,且最后的目的地是⼀个已经存在的目录,则它会把前面指定
的所有文件或目录复制到此目录中
常⽤选项
-f 或 --force 强行复制文件或目录, 不论目的⽂件或目录是否已经存在
-i 或 --interactive 覆盖文件之前先询问用户
-r 递归处理,将指定目录下的文件与子目录⼀并处理。若源文件或目录的形态,不属于目录或符
号链接,则⼀律视为普通文件处理
# cp普通文件
[wbh@bite-alicloud test]$ echo "hello world" > myfile.txt
[wbh@bite-alicloud test]$ cat myfile.txt
hello world
[wbh@bite-alicloud test]$ ll
total 4
-rw-rw-r-- 1 whb whb 22 Jan 11 15:47 myfile.txt
[wbh@bite-alicloud test]$ cp myfile.txt myfile-backup.txt
[wbh@bite-alicloud test]$ ll
total 8
-rw-rw-r-- 1 whb whb 22 Jan 11 15:47 myfile-backup.txt
-rw-rw-r-- 1 whb whb 22 Jan 11 16:47 myfile.txt
[wbh@bite-alicloud test]$ cat myfile-backup.txt
hello world
[wbh@bite-alicloud test]$ ll
total 8

# 将多个文件拷贝到指定路径下
[wbh@bite-alicloud test]$ ll
total 8
-rw-rw-r-- 1 whb whb 22 Jan 11 15:47 myfile-backup.txt
-rw-rw-r-- 1 whb whb 22 Jan 11 15:47 myfile.txt
[wbh@bite-alicloud test]$ mkdir dir
[wbh@bite-alicloud test]$ ll
total 12
drwxrwxr-x 2 whb whb 4096 Jan 11 15:48 dir
-rw-rw-r-- 1 whb whb 22 Jan 11 15:47 myfile-backup.txt
-rw-rw-r-- 1 whb whb 22 Jan 11 16:47 myfile.txt
[wbh@bite-alicloud test]$ cp *.txt dir  # * 表示通配符,匹配所有.txt结尾的文件名
[wbh@bite-alicloud test]$ ll
total 12
drwxrwxr-x 2 whb whb 4096 Jan 11 15:48 dir
-rw-rw-r-- 1 whb whb 22 Jan 11 15:47 myfile-backup.txt
-rw-rw-r-- 1 whb whb 22 Jan 11 16:47 myfile.txt
[wbh@bite-alicloud test]$ tree dir
dir
  └── myfile-backup.txt
  └── myfile.txt

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

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

# 递归删除拷贝整个目录
[wbh@bite-alicloud -]$ tree test
test
|--- dir
|--- myfile-backup.txt
|--- myfile.txt
|--- myfile-backup.txt
|--- myfile.txt

# 1 directory, 4 files
[wbh@bite-alicloud -]$ cp -rf test test-backup
[wbh@bite-alicloud -]$ tree test-backup
test-backup
|--- dir
|--- myfile-backup.txt
|--- myfile.txt
|--- myfile-backup.txt
|--- myfile.txt
# 1 directory, 4 files

mv 指令

mv命令是move的缩写,可以用来移动文件或者将文件改名(move (rename) files,经常用来备份文件或者目录
语法: mv [ 选项 ] 源文件或目录 目标文件或目录
功能:
• 视 mv 命令中第二个参数类型的不同(是目标文件还是目标目录),mv 命令将文件重命名或将其移至一个新的目录中。  
• 当第二个参数类型是文件时,mv 命令完成文件重命名,此时,源文件只能有一个(也可以是源目录名),它将所给的源文件或目录重命名为给定的目标文件名。  
• 当第二个参数是已存在的目录名称时,源文件或目录参数可以有多个,mv 命令将各参数指定的源文件均移至目标目录中。
# 更改名称
[whb@bite-alicloud test]$ touch myfile.txt
[whb@bite-alicloud test]$ ll
total 0
-rw-rw-r-- 1 whb whb 0 Jan 11 15:56 myfile.txt
[whb@bite-alicloud test]$ mv myfile.txt yourfile.txt
[whb@bite-alicloud test]$ ll
total 0
-rw-rw-r-- 1 whb whb 0 Jan 11 15:56 yourfile.txt
# 如果当前路径存在同名⽂件,改名即覆盖
[whb@bite-alicloud test]$ touch myfile.txt
[whb@bite-alicloud test]$ ll
total 0
-rw-rw-r-- 1 whb whb 0 Jan 11 15:58 myfile.txt
-rw-rw-r-- 1 whb whb 0 Jan 11 15:57 yourfile.txt
[whb@bite-alicloud test]$ mv yourfile.txt myfile.txt
[whb@bite-alicloud test]$ ll

total 0
-rw-rw-r-- 1 whb whb 0 Jan 11 15:57 myfile.txt
# 如果当前路径存在同名⽂件,改名前可以添加i选项,让系统提出警告供⽤⼾做选择
[whb@bite-alicloud test]$ touch yourfile.txt
[whb@bite-alicloud test]$ ll
total 0
-rw-rw-r-- 1 whb whb 0 Jan 11 15:57 myfile.txt
-rw-rw-r-- 1 whb whb 0 Jan 11 15:59 yourfile.txt
[whb@bite-alicloud test]$ mv -i yourfile.txt myfile.txt
mv: overwrite ‘myfile.txt’? y
[whb@bite-alicloud test]$ ll
total 0
-rw-rw-r-- 1 whb whb 0 Jan 11 15:59 myfile.txt
# mv整个⽬录
[whb@bite-alicloud test]$ touch myfile.txt
[whb@bite-alicloud test]$ mkdir temp
[whb@bite-alicloud test]$ ll
total 4
-rw-rw-r-- 1 whb whb 0 Jan 11 17:56 myfile.txt
drwxrwxr-x 2 whb whb 4096 Jan 11 17:56 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

cat 指令

语法: cat [选项] [文件]
功能: 查看目标文件的内容
# 命令⾏构建多⾏⽂本
[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
hello bite
hello bite
hello bite
hello bite
hello bite
hello bite
hello bite
hello bite
hello bite
hello bite
hello bite
hello bite
hello bite
hello bite
hello bite
hello bite
hello bite
hello bite
hello bite
hello bite

# cat 输出携带⾏号
[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
...
# 修改temp.txt,使其携带多⾏空⾏
[whb@bite-alicloud test]$ vim temp.txt
# 测试 -b 对⾮空输出⾏编号
[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
..

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%)

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
...
# 其他选项也可以直接测试

head 指令

head 与 tail 就像它的名字⼀样的浅显易懂,它是⽤来显示开头或结尾某个数量的⽂字区块,head ⽤来显示档案的开头⾄标准输出中,而 tail 想当然就是看档案的结尾。
语法:
head [参数]... [⽂件]...
功能:
head ⽤来显示档案的开头⾄标准输出中,默认head命令打印其相应⽂件的开头10行。
[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

tail 指令

tail 命令从指定点开始将文件写到标准输出.使⽤tail命令的-f选项可以方便的查阅正在改变的日志⽂
件,tail -f filename会把filename里最尾部的内容显示在屏幕上,并且不断刷新,使你看到最新的⽂件内容.
语法: tail 必要参数 [ ⽂件 ]
功能:⽤于显示指定⽂件末尾内容,不指定⽂件时,作为输⼊信息进行处理。常⽤查看日志⽂件。
选项:
-f 循环读取
-n<行数> 显示行数
举例:(简单讲解重定向和管道)
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 183
hello 184
hello 185
hello 186
hello 187
hello 188
hello 189
hello 190
hello 191
hello 192
hello 193
hello 194
hello 195
hello 196
hello 197
hello 198
hello 199

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
...

which 指令

功能:搜索系统指定的命令
[whb@bite-alicloud test]$ which ls
alias ls='ls --color=auto'
/usr/bin/ls
[whb@bite-alicloud test]$ which pwd
/usr/bin/pwd

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

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

zip/unzip 指令

语法: zip 压缩文件.zip 目录或文件
功能:将目录或文件压缩成zip格式
常用选项
-r:递归处理,将指定目录下的所有文件和子目录⼀并处理
举例
将test2目录压缩: zip test2.zip test2/*
解压到tmp目录: unzip test2.zip -d /tmp
Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐