目录
[1. ls 指令](#1. ls 指令)
[2. pwd 命令](#2. pwd 命令)
[4. touch 指令](#4. touch 指令)
[5. mkdir 指令](#5. mkdir 指令)
[6. rmdir 指令 && rm 指令](#6. rmdir 指令 && rm 指令)
[7. man 指令](#7. man 指令)
[8. cp 指令](#8. cp 指令)
[9. mv 指令](#9. mv 指令)
[10. echo指令](#10. echo指令)
[11. cat 指令](#11. cat 指令)
[11.1 cat 和 tac 命令的区别](#11.1 cat 和 tac 命令的区别)
[12. 知识重点提纲](#12. 知识重点提纲)
[12.1 备忘录](#12.1 备忘录)
正文开始:
1. 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 在l⽂件名后输出该⽂件的⼤⼩。(⼤⼩排序,如何找到⽬录下最⼤的⽂件)
- -R 列出所有⼦⽬录下的⽂件。(递归)
- -1 ⼀⾏只输出⼀个⽂件。
cpp
# 显示当前目录下的可见文件和目录
ls
# 显示所有文件(包括隐藏文件)
ls -a
# 长格式显示所有文件
ls -a -l
如:
[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
# 长格式显示所有文件
# 选项组合:-a -l = -al
ls -al = ls -a -l
# 显示指定目录
ls /root/path1/path2 -a -d
权限解释: 以 drwxrwxr-x 为例:
cpp
d rwx rwx r-x
↑ ↑ ↑ ↑
│ │ │ └─ 其他用户权限:读、执行
│ │ └─ 组权限:读、写、执行
│ └─ 所有者权限:读、写、执行
└─ 文件类型:d=目录
文件类型:
-:普通文件d:目录l:符号链接c:字符设备文件b:块设备文件s:套接字文件p:管道文件
权限位:
r:读权限(4)w:写权限(2)x:执行权限(1)-:无对应权限
2. pwd 命令
语法: pwd
**功能:**显示用户当前所在的⽬录
常⽤选项:无
3.cd 指令
语法: cd ⽬录名
**功能:**改变⼯作⽬录。将当前⼯作⽬录改变到指定的⽬录下
Linux理论知识:路径的认识
- Linux系统中,磁盘上的⽂件和⽬录被组成⼀棵⽬录树,每个节点都是⽬录或⽂件
- 其中普通⽂件⼀定是⽬录树的叶⼦节点
- ⽬录可能是叶⼦(空⽬录), 也可能是路上节点
- 理解路径存在的意义: 树状组织⽅式,都是为了保证快速定位查找到指定的⽂件,⽽定位⽂件就需要具有唯⼀性的⽅案来进⾏定位⽂件。其中任何⼀个节点,都只有⼀个⽗节点,所以,从根⽬录开始,定位指定⽂件,路径具有唯⼀性
- 绝对路径:⼀般从/开始,不依赖其他⽬录的定位⽂件的⽅式
- 相对路径:相对于当前⽤⼾所处⽬录,定位⽂件的路径⽅式
- 绝对路径⼀般不会随着⽤⼾的路径变化⽽丧失唯⼀性,⼀般在特定服务的配置⽂件中经常被使⽤
- 相对路径因为它的便捷性,⼀般在命令⾏中使⽤较多
Linux的文件结构是一颗从根目录 / 开始的一个多叉树,如下图所示:

cpp
# 返回上级⽬录
cd ..
# 绝对路径定位⽬录或者⽂件
cd /home/whb/test
# 相对路径定位⽬录或者⽂件
cd ../temp/
# 每⼀次新建⼀个⽤⼾都会在/home⽬录下为新⽤⼾创建新的⼯作⽬录,⽬录以新⽤⼾名称命名
# root⽤⼾在安装操作系统的时候,就已经内置了⼯作⽬录: /root
ls /home
# 快速进⼊⾃⼰的家⽬录
cd ~
# 直接可以回退到最近⼀次所处的⽬录
cd -

绝对路径示例:
cpp
/home/whb/Documents/report.pdf # 完整的路径
/usr/bin/ls # 系统命令的完整路径
/etc/passwd # 系统配置文件的完整路径
相对路径示例:
cpp
# 假设当前在 /home/whb
Documents/report.pdf # 相对于当前目录
./test.txt # 当前目录下的文件
../other_user/ # 上级目录中的其他用户目录
../../var/log/ # 向上两级再进入var/log
4. touch 指令
语法: touch [选项]... ⽂件...
功能: 新建⼀个不存在的文件或者touch命令参数可更改⽂档或⽬录的⽇期时间,包括存取时间和更改时间。
常⽤选项:
- -a : change only the access time
- -c : change only the modification time
5. mkdir 指令
语法: mkdir [选项] dirname...
功能: 在当前⽬录下创建⼀个名为 "dirname"的目录
常用选项:
- -p/--parents: 可以是⼀个路径名称。此时若路径中的某些⽬录尚不存在,加上此选项后,系统将⾃动建⽴好那些尚不存在的⽬录,即⼀次可以建⽴多个⽬录
cpp
# 创建普通空⽬录
mkdir mydir
# 递归建⽴多个⽬录,创建指定路径
mkdir -p path1/path2/path3/path4
# tree命令是⼀个递归以树状结构显⽰指定⽬录的命令,如果没有安装
# 如果当前⽤⼾是root: yum install -y tree (因为现在开始⽤的都是root,所以推荐这个⽤
法)
# 如果当前⽤⼾是普通⽤⼾: sudo yum install -y tree (后⾯讲讲完vim,⼤家才能将⾃⼰添
加到系统信任列表中,暂时普通⽤⼾⽆法使⽤sudo)
6. rmdir 指令 && rm 指令
1. rmdir是⼀个与mkdir相对应的命令,mkdir是建⽴⽬录,⽽rmdir是删除命令
语法: rmdir [-p] [dirName]
适用对象 :具有当前目录操作权限的所有使⽤者
功能:删除空目录
常用选项:
- -p 当⼦⽬录被删除后如果⽗⽬录也变成空⽬录的话,就连带⽗⽬录⼀起删除。
2. rm 命令可以同时删除文件 或目录
语法: rm [-f-i-r-v] [dirName/dir]
适用对象:所有使⽤者
**功能:**删除⽂件或⽬录
常用选项:
- -f 即使⽂件属性为只读(即写保护),亦直接删除
- -i 删除前逐⼀询问确认
- -r 删除⽬录及其下所有⽂件
若目录结构为:
cpp
test/
├── dir/ (目录)
├── file.txt (文件)
├── mydir/ (空目录)
├── newFile.txt (文件)
└── path1/ (目录)
└── path2/
└── path3/
└── path4/
cpp
# 检查并删除空目录_注意rmdir只能删除空目录
rmdir mydir
# 使用 -p 选项删除路径
rmdir -p path1/path2/path3/path4
说明:删除顺序:path4 → path3 → path2 → path1,只要每个目录在删除后变为空,就会继续向上删除
# 指定路径中有不为空的路径,便⽆法删除
rmdir -p path1/path2/path3/path4
说明:若现在 path1 和 path2 中都有文件,则删除到path2会失败
7. man 指令
Linux的命令有很多参数,我们不可能全记住,可以通过查看联机⼿册获取帮助
语法: man [选项] 命令
常用选项:
- -k 根据关键字搜索联机帮助 num 只在第num章节查找
- -a 将所有章节的都显⽰出来,⽐如 man printf 它缺省从第⼀章开始搜索,知道就停⽌,⽤a选 项,当按下q退出,他会继续往后⾯搜索,直到所有章节都搜索完毕
man手册分为9章(不同系统可能会有差别): - 1 是普通的命令
- 2 是系统调⽤,如open,write之类的(通过这个,⾄少可以很⽅便的查到调⽤这个函数,需要加什么头⽂件)
- 3 是库函数,如printf,fread4是特殊⽂件,也就是/dev下的各种设备⽂件
- 4 略
- 5 是指⽂件的格式,⽐如passwd, 就会说明这个⽂件中各个字段的含义
- 6 是给游戏留的,由各个游戏⾃⼰定义
- 7 是附件还有⼀些变量,⽐如像environ这种全局变量在这⾥就有说明
- 8 是系统管理⽤的命令,这些命令只能由root使⽤,如ifconfig
- 9 略
cpp
# 查看printf指令(没错,printf也是⼀个指令)
man printf
# 查看系统调⽤,默认没有这个指令,man就⾃动去2号⼿册查找
man fork
# 查看系统调⽤
man 2 frok
# 查看C库函数
man 3 printf
# 查看man⼿册⾃⼰
man man
8. cp 指令
语法: cp [选项] 源⽂件或⽬录⽬标⽂件或⽬录
**功能:**复制⽂件或⽬录
说明:
- cp指令⽤于复制⽂件或⽬录
- 如同时指定两个以上的⽂件或⽬录,且最后的⽬的地是⼀个已经存在的⽬录,则它会把前⾯指定的所有⽂件或⽬录复制到此⽬录中
常⽤选项:
- -f 或 --force 强⾏复制⽂件或⽬录, 不论⽬的⽂件或⽬录是否已经存在
- -i 或 --interactive 覆盖⽂件之前先询问⽤⼾
- -r 递归处理,将指定⽬录下的⽂件与⼦⽬录⼀并处理。若源⽂件或⽬录的形态,不属于⽬录或符号链接,则⼀律视为普通⽂件处理
cpp
# 复制单个文件
cp file1.txt file2.txt # 将file1复制为file2
cp file1.txt /home/user/ # 复制file1到指定目录
# 复制多个文件到目录
cp file1.txt file2.txt dir/ # 复制多个文件到dir目录
cp *.txt backup/ # 复制所有txt文件到backup目录
# 复制目录需要 -r 或 -a 选项
cp -r dir1 dir2 # 递归复制目录
cp -r /home/user/docs backup/ # 复制整个docs目录
# cp普通⽂件
cp myfile.txt myfile-backup.txt
# 将多个⽂件拷⻉到指定路径下
# 将匹配的所有文件复制到 dir 目录
cp *.txt dir # *表⽰通配符,匹配所有.txt结尾的⽂件名
# cp如果⽬标⽂件存在,就覆盖
# 默认情况下cp直接覆盖,无提示
cp myfile.txt myfile-backup.txt
# 拷⻉前询问
cp -i myfile.txt myfile-backup.txt
# 递归强制拷⻉整个⽬录
cp -rf test test-backup
注意:cp指令在复制到已存在的目标文件时,会清空并覆盖目标文件的原始内容。
cpp
# 默认行为
# 假设 target.txt 已有内容 "旧内容"
echo "旧内容" > target.txt
# source.txt 有内容 "新内容"
echo "新内容" > source.txt
# 执行 cp 后
cp source.txt target.txt
# 现在 target.txt 的内容变成 "新内容"
# 原始内容 "旧内容" 被完全清空替换
当目标文件已存在时,cp 的执行流程:
- 打开目标文件(如果存在,直接打开,不删除)
- 清空目标文件内容(将文件截断为0字节)
- 将源文件内容写入目标文件
- 设置相应的文件属性
9. mv 指令
mv命令是move的缩写,是用于移动或重命名文件和目录的命令,经常用来备份文件或者目录
语法: mv [选项] 源⽂件或⽬录 ⽬标⽂件或⽬录
功能:
- 视mv命令中第⼆个参数类型的不同(是⽬标⽂件还是⽬标⽬录),mv命令将⽂件重命名或将其移⾄⼀个新的⽬录中。
- 当第⼆个参数类型是⽂件时,mv命令完成⽂件重命名,此时,源⽂件只能有⼀个(也可以是源⽬录名),它将所给的源⽂件或⽬录重命名为给定的⽬标⽂件名。
- 当第⼆个参数是已存在的⽬录名称时,源⽂件或⽬录参数可以有多个,mv命令将各参数指定的源⽂件均移⾄⽬标⽬录中。
常用选项:
- -f :force 强制的意思,如果⽬标⽂件已经存在,不会询问⽽直接覆盖
- -i :若⽬标⽂件 (destination) 已经存在时,就会询问是否覆盖!
cpp
# 更改名称
# yourfile.txt为不存在的文件
mv myfile.txt yourfile.txt # 重命名文件:myfile.txt -> yourfile.txt
# 如果当前路径存在同名⽂件,改名即覆盖
# 移动并覆盖:yourfile.txt -> myfile.txt(覆盖已有的myfile.txt)
# 结果,yourfile.txt消失,myfile.txt保留(被覆盖)
mv yourfile.txt myfile.txt
# 如果当前路径存在同名⽂件,改名前可以添加i选项,让系统提出警告供⽤⼾做选择
mv -i yourfile.txt myfile.txt
# 将 myfile.txt 移动到 temp 目录内
mv myfile.txt temp
# 将 temp 目录 移动到父目录(上级目录)
mv temp ../
cpp
对目录进行mv指令时,带/和不带/的区别
# 情况1:目录名不带斜杠
mv dir1 dir2
# 含义:
# - 如果 dir2 不存在:重命名 dir1 为 dir2
# - 如果 dir2 存在且是目录:将 dir1 移动到 dir2 目录内
# - 如果 dir2 存在且是文件:报错
# 情况2:目录名带斜杠
mv dir1/ dir2
# 含义同上,dir1/ 明确表示这是一个目录
注意:mv 命令移动目录时,可以直接输入目录名称而不加 /,而且这是一个很好的习惯

注意事项:
-
覆盖不可逆:被覆盖的文件无法恢复
-
跨文件系统:移动目录时,需要目标位置有足够权限
-
通配符使用 :小心使用**
mv ***,可能移动隐藏文件
与cp的关键区别:

10. echo指令
cpp
# 将双引号中的内容看成字符串直接打印出来,类似与 printf。
# echo 显示输出时会默认加上换行符,即默认输出后会换行
echo "hello world"
# 将双引号中的内容,写入一个普通文件 (重定向操作,输出重定向)
# 若后续文件不存在,新建之;若存在,则清空再写入
echo "hello world" > hello.txt
# 追加重定向操作, 向普通文件中继续写入hello world而不会事先清空文件
echo "hello world" >> hello.txt
将双引号中的内容看成字符串直接打印出来,类似与 printf。
11. cat 指令
语法: cat [选项] [⽂件]
功能: 显示⽬标⽂件里面的内容
常用选项:
- -b 对⾮空输出⾏编号,空⾏不做编号
- -n 对输出的所有⾏编号
- -s 不输出多⾏空⾏
cpp
# 先使用 while 循环生成文件
cnt=0; while [ $cnt -le 20 ]; do echo "hello bite"; let cnt++; done > temp.txt
# 基本查看文件内容
cat temp.txt
# 使用 -b 选项(对非空行编号),只对非空行进行编号,空行不会被编号
cat -b temp.txt
示例:
# 给非空行编号
# 1 Line1
#
# 2 Line2
#
#
# 3 Line3
# 使用-n 选项(对所有行编号)
cat -n temp.txt
假设文件中存在空行,则示例输出为:
1 hello bite
2 hello bite
3 hello bite
4 (空行,但有编号4)
5 (空行,但有编号5)
6 (空行,但有编号6)
7 hello bite
8 hello bite
9 (空行,但有编号9)
...
# 将多个连续空行压缩为单个空行
cat -s temp.txt
示例:
hello bite
hello bite
hello bite
(这里原本多个空行被压缩为一行)
hello bite
hello bite
(这里原本多个空行被压缩为一行)
hello bite
...
其他使用技巧:
cpp
# 查看多个文件
cat file1.txt file2.txt
# 创建新文件
cat > newfile.txt
# 输入内容...
# 按 Ctrl+D 结束
# 追加内容到文件
cat >> existing.txt
# 输入追加内容...
# 按 Ctrl+D 结束
# 组合文件
cat file1.txt file2.txt > combined.txt
# 组合使用选项
cat -ns temp.txt # 压缩空行并给所有行编号
11.1 cat 和 tac 命令的区别
- cat: 将目标文件里的内容,从头到尾顺着显示。
- **tac:**将目标文件里的内容,从尾到头逆着显示。
12. 知识重点提纲
- 目录==文件夹
- 如果建立一个空文件,改文件也要占用磁盘空间,文件=内容+属性
- linux的文件结构是一棵从根目录/ 开始的一棵多叉树。a.叶子节点:一定是普通文件或者空目录 b. 非叶子节点:一定是一个非空目录
- 绝对路径
- 相对路径
- 命令其实就是文件。:命令的本质==可 执行的文件==我们写的C/C++程序
- 上下键,可以寻找历史命令
- 在 linux 系统中,一切皆文件!:如我们自己新建文件操作、键盘操作、显示器操作,**本质都是文件操作。**注意文件必须先被打开才能进行操作
12.1 备忘录
-
一台linux机器可以被多个用户使用
添加使用用户
adduser user1
password注意输密码时,密码不回显
重置目标用户密码,假设用户名为user1
1.先切换到root用户
2. passwd user1
按提示输入两次新密码用户删除
userdel -r user1 -
xshell界面:全屏、退出全屏(Alt + Enter)
3.若出现以下情况:

可输入: yum install -y tree (centos版本安装tree命令)。apt install -y tree (Ubuntu版本)
-
如果在命令行中,出现了异常情况,统一尝试 ctrl + c 来终止异常
-
若卡在nano 指令里了 直接ctrl + x之后回车就可解决
-
进入vim 后如何退出:输入方式改成大写模式 + zz; shift+ zz
-
几个热键:
- ctrl + c :终止异常任务
- 键盘上下键 :查看历史命令
- ctrl + r : 搜索历史命令
- ctrl + d :退出当前用户
- Tab键: 若某个命令文件拼写时,拼出一半按Tab键会给出提示

- 云服务器永不关机,除非维护或者不用了。