Linux基础命令
cmd或者powershell直接输入命令wsl就可以进入
Linux的目录结构
-
/
,根目录是最顶级的目录了 -
Linux只有一个顶级目录:
/
-
路径描述的层次关系同样适用
/
来表示 -
/home/itheima/a.txt,表示根目录下的home文件夹内有itheima文件夹,内有a.txt
windows访问Linux目录
wsl
window+R弹出运行窗口,直接输入wsl进入终端
ubuntu Linux子系统的目录是在这个目录下
C:\Users\用户名\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\rootfs
隐藏文件、文件夹
在Linux中以.
开头的,均是隐藏的。
默认不显示出来,需要-a
选项才可查看到。
ls命令——列出目录下的内容
功能:列出目录下的内容
语法:ls [-l -h -a] [参数]
-
参数:被查看的文件夹,不提供参数,表示查看当前工作目录
-
-l,以列表形式查看
-
-h,配合-l,以更加人性化的方式显示文件大小【以易于阅读的形式,列出文件大小,如K、M、G】
-h选项必须要搭配 -l 一起使用
ls -lh
-
-a,显示隐藏文件(以.开头的,表示是Linux系统的隐藏文件/文件夹,只有通过-a选项,才能看到这些隐藏的文件/文件夹)
ls / 列出根目录的内容
zy@zhouyuan:~$ ls /
bin etc lib libx32 opt run srv usr
boot home lib32 media proc sbin sys var
dev init lib64 mnt root snap tmp
•ls -l -a
•ls -la
•ls -al
上述三种写法,都是一样的,表示同时应用-l和-a的功能
- ls -la / 以列表的形式展示根目录下的所有文件(包括隐藏文件)
pwd命令——展示当前工作目录
pwd命令来自:Print Work Directory
功能:展示当前工作目录
语法:pwd
cd命令——切换工作目录
cd命令来自英文:Change Directory
功能:切换工作目录
语法:cd [目标目录]
参数:目标目录,要切换去的地方,不提供默认切换到当前登录用户HOME目录
HOME目录
每一个用户在Linux系统中都有自己的专属工作目录,称之为HOME目录。
-
普通用户的HOME目录,默认在:
/home/用户名
-
root用户的HOME目录,在:
/root
FinalShell登陆终端后,默认的工作目录就是用户的HOME目录
相对路径、绝对路径
-
相对路径,非
/
开头的称之为相对路径相对路径表示以
当前目录
作为起点,去描述路径,如test/a.txt
,表示当前工作目录内的test文件夹内的a.txt文件 -
绝对路径,以
/
开头的称之为绝对路径绝对路径从
根
开始描述路径
特殊路径符
.
,表示当前,比如./a.txt,表示当前文件夹内的a.txt
文件..
,表示上级目录,比如../
表示上级目录,../../
表示上级的上级目录~
,表示用户的HOME目录,比如cd ~
,即可切回用户HOME目录
mkdir命令——创建文件夹
mkdir来自英文:Make Directory
功能:创建文件夹
语法:mkdir [-p] 参数
-
参数:被创建文件夹的路径
参数必填,表示Linux路径,即要创建的文件夹的路径,相对路径或绝对路径均可
-
选项:-p,可选,表示自动创建不存在的父目录,适用于创建连续多层级的目录
zy@zhouyuan:~$ cd /
zy@zhouyuan:/$ pwd
/
zy@zhouyuan:/$ cd ~
zy@zhouyuan:~$ pwd
/home/zy
zy@zhouyuan:~$ mkdir test
//--- 在home/zy目录内创建ok,但是如果在其他目录内创建是有权限问题的
zy@zhouyuan:~$ cd test
zy@zhouyuan:~/test$ pwd
/home/zy/test
zy@zhouyuan:~/test$ cd ..
zy@zhouyuan:~$ pwd
/home/zy
zy@zhouyuan:~$ cd /
zy@zhouyuan:/$ mkdir 123
// 拒绝访问了
mkdir: cannot create directory ‘123’: Permission denied
// 以root权限访问,需要输入密码,然后就有权限创建文件夹了
zy@zhouyuan:/$ su root
Password:
root@zhouyuan:/# mkdir 123
root@zhouyuan:/# pwd
/
root@zhouyuan:/# ls
123 boot etc init lib32 libx32 mnt proc run snap sys usr bin dev home lib lib64 media opt root sbin srv tmp var
root@zhouyuan:/# su zy
zy@zhouyuan:/$
touch命令——创建文件
功能:创建文件
语法:touch 参数
- 参数:参数必填,表示要创建的文件路径,相对、绝对、特殊路径符均可以使用
zy@zhouyuan:~/123$ touch 123.txt
cat命令——查看文件内容
功能:查看文件内容
语法:cat 参数
- 参数:被查看的文件路径
zy@zhouyuan:~/test$ cd ~
zy@zhouyuan:~$ pwd
/home/zy
zy@zhouyuan:~$ mkdir 123
zy@zhouyuan:~$ cd 123
zy@zhouyuan:~/123$ touch 123.txt
zy@zhouyuan:~/123$ cat 123.txt
啦啦啦 哈哈哈zy@zhouyuan:~/123$
more命令——查看文件,支持翻页查看
功能:查看文件,可以支持翻页查看
语法:more 参数
- 参数:被查看的文件路径
- 在查看过程中:
空格
键翻页q
退出查看
cp命令——复制文件、文件夹
cp命令来自英文单词:copy
功能:复制文件、文件夹
语法:cp [-r] 参数1 参数2
- 选项:-r,可选,复制文件夹使用
- 参数1,Linux路径,表示被复制的文件或文件夹
- 参数2,Linux路径,表示要复制去的地方
示例:
- cp a.txt b.txt,复制当前目录下a.txt为b.txt
- cp a.txt test/,复制当前目录a.txt到test文件夹内
- cp -r test test2,复制文件夹test到当前文件夹内为test2存在
mv命令——移动文件、文件夹
功能:移动文件、文件夹
语法:mv 参数1 参数2
- 参数1:Linux路径,表示被移动的文件或文件夹
- 参数2:Linux路径,表示要移动去的地方,如果目标不存在,则进行改名,确保目标存在
// 当前目录在/home/zy
zy@zhouyuan:~$ pwd
/home/zy
// 创建目录123
zy@zhouyuan:~$ mkdir 123
zy@zhouyuan:~$ ls
123
// 把文件夹123改名为456
zy@zhouyuan:~$ mv 123 456
// 查看目录下的内容
zy@zhouyuan:~$ ls
456
rm命令——删除文件、文件夹
rm命令来自英文单词:remove
功能:删除文件、文件夹
语法:rm [-r -f] 参数...参数
- 参数:支持多个,每一个表示被删除的,空格进行分隔
- 选项:-r,删除文件夹使用
- 选项:-f,表示force,强制删除(不会弹出提示确认信息)一般root用户会用到
强制删除,-f选项
可以通过 su - root,并输入密码123456(和普通用户默认一样)临时切换到root用户体验
通过输入exit命令,退回普通用户。(临时用root,用完记得退出,不要一直用,关于root我们后面会讲解)
rm删除文件、文件夹 - 通配符
rm命令支持通配符 *
,用来做模糊匹配
符号* 表示通配符,即匹配任意内容(包含空),示例:
- test*,表示匹配任何以test开头的内容
- *test,表示匹配任何以test结尾的内容
- test,表示匹配任何包含test的内容
rm命令很危险,一定要注意,特别是切换到root用户的时候。
如下命令,请千万千万不要在root管理员用户下执行:
rm -rf /
rm -rf /*
效果等同于在Windows上执行C盘格式化。
which命令——查看命令的程序本体文件路径
我们在前面学习的Linux命令,其实它们的本体就是一个个的二进制可执行程序。
和Windows系统中的.exe文件,是一个意思。
我们可以通过which命令,查看所使用的一系列命令的程序文件存放在哪里
功能:查看命令的程序本体文件路径
语法:which 参数
- 参数:被查看的命令
find命令——搜索文件
功能:搜索文件
语法1——按文件名搜索
find 路径 -name 参数
-
路径,搜索的起始路径
-
参数,搜索的关键字,支持通配符
*
,比如:
test*,表示匹配任何以test开头的内容 *test,表示匹配任何以test结尾的内容 *test*,表示匹配任何包含test的内容
为了确保后续演示,拥有最大的权限,可以在整个系统完成搜索
我们可以切换到root用户以获得管理员权限
执行命令:su - root
输入密码:123456(和你普通用户的密码一样)
基于通配符的含义,可以结合find命令做文件的模糊查询。
查找所有以test开头的文件:find / -name “test*”
查找所有以test结尾的文件:find / -name “*test”
查找所有包含test的文件:find / -name “*test*”
find命令——按文件大小查找文件
语法:find 起始路径 -size +|-n[kMG]
- +、- 表示大于和小于
- n表示大小数字
- kMG表示大小单位,k(小写字母)表示kb,M表示MB,G表示GB
查找小于10KB的文件: find / -size -10k
查找大于100MB的文件:find / -size +100M
查找大于1GB的文件:find / -size +1G
ctrl+c 中断查找
grep命令——通过关键字过滤文件行
功能:从文件中通过关键字过滤文件行。
语法:grep [-n] 关键字 文件路径
- 选项-n,可选,表示在结果中显示匹配的行的行号。
- 参数,关键字,必填,表示过滤的关键字,带有空格或其它特殊符号,建议使用””将关键字包围起来
- 参数,文件路径,必填,表示要过滤内容的文件路径,可作为内容输入端口
// 创建test文件
touch test.txt
// 在该文件中输入4行文本:
// 你好啊
// 我很好
// 今天天气真好
// hello,world!
// 查看文件内容
zy@zhouyuan:~$ cat test.txt 你好啊 我很好 今天天气真好 hello,world!
// 过滤你好关键字 返回的你好标红
zy@zhouyuan:~$ grep "你好" test.txt 你好啊
// 过滤你好关键字,并显示行号
zy@zhouyuan:~$ grep "你好" test.txt -n 1:你好啊
wc命令——统计文件的行数、单词数量等
功能:统计文件的行数、单词数量等
语法:wc [-c -m -l -w] 文件路径
- 选项,-c,统计bytes字节数量
- 选项,-m,统计字符数量
- 选项,-l,统计行数
- 选项,-w,统计单词数量
- 参数,文件路径,被统计的文件,可作为内容输入端口
zy@zhouyuan:~$ cat test.txt
你好啊
我很好
今天天气真好
hello,world!
zy@zhouyuan:~$ wc test.txt
3 4 58 test.txt
//行数 单词数 字节数
// 统计字节数
zy@zhouyuan:~$ wc test.txt -c
58 test.txt
// 统计字符数
zy@zhouyuan:~$ wc test.txt -m
30 test.txt
// 统计行数
zy@zhouyuan:~$ wc test.txt -l
3 test.txt
统计单词数
zy@zhouyuan:~$ wc test.txt -w
4 test.txt
grep管道符| —— 过滤
写法:|
功能:将符号左边的结果,作为符号右边的输入
// 将cat a.txt的结果,作为grep命令的输入,用来过滤itheima关键字
cat a.txt | grep itheima
// 可以支持嵌套:
cat a.txt | grep itheima | grep itcast
// 过滤test关键字的文件
ls | grep test
// 以列表的形式显示/user/bin文件夹中的文件,并过滤统计行数,以查看该文件夹中有多少个文件
ls -l /user/bin | wc -l
echo命令——在命令行内输出指定内容
功能:在命令行内输出指定内容
语法:echo 参数
- 参数:被输出的内容
zy@zhouyuan:~$ echo "hi"
hi
`反引号
功能:被两个反引号包围的内容,会作为命令执行
示例:
- echo `pwd`,会输出当前工作目录
zy@zhouyuan:~$ pwd
/home/zy
zy@zhouyuan:~$ echo `pwd`
/home/zy
tail命令——查看文件尾部内容,跟踪文件的最新更改
功能:查看文件尾部内容,跟踪文件的最新更改
语法:tail [-f -num] 参数
-
参数:Linux路径,表示被跟踪的文件路径
-
选项:-f,持续跟踪文件修改
【另一个终端对该文件做的修改会被跟踪,更新该命令的结果,ctrl+c停止跟踪】
-
选项:-num,表示,查看尾部多少行,不填默认10行
// 查看根目录
zy@zhouyuan:~$ ls /
bin etc lib libx32 opt run srv usr
boot home lib32 media proc sbin sys var
dev init lib64 mnt root snap tmp
// 把根目录追加到test.txt内容中
zy@zhouyuan:~$ ls / >> test.txt
// 查看test.txt内容
zy@zhouyuan:~$ cat test.txt
hello linux
你好
今天星期一
test.txt
bin
boot
dev
etc
home
init
lib
lib32
lib64
libx32
media
mnt
opt
proc
root
run
sbin
snap
srv
sys
tmp
usr
var
// 查看t