文章目录
前言
我说过我要学习Linux,也已经写了两篇博客了,是看书写的,但是我发现有些不足,不是我想要的
我看的Linux学习笔记,感觉内容不是很深,快速入门的,一共就335多页。我感觉Linux学习的东西还是很多的
看鸟哥的那本书,内容太多了,1100多页,我感觉我跟不上进度。然后我还想看另一本数据分析的书。更何况学期过半,我还要应付考试。
然后目光转向了B站,一开始准备踏踏实实看韩顺平老师的Linux,也做了部分笔记,但是谁知道黑马程序员雪中送炭在B站上架了Linux的教程,这让我很犹豫究竟选哪个,其实内容大概都差不多。我想我的Java就是在B站上学的,于是就看的黑马程序员的Linux,做笔记
Linux的基本操作。
Linux目录
Linux操作系统的目录结构
- Linux的目录结构是一个树形结构
- Windows系统可以拥有多个盘符,如C盘、D盘、E盘
- Linux没有盘符这个概念,只有一个根目录
/,所有文件都在下面
Windows可以有多个顶级目录(C盘、D盘),而Linux只有一个顶级目录,根目录/
这里对应了上一篇我的读书笔记的内容,Windows和Linux的文件系统最大的区别就是Windows是由盘符区分,而Linux没有。
文件夹里面是文件夹,是文件这个还是没有变的
Linux路径的描述方式
- 在Linux系统中,路径之间的层级关系,使用:
/来表示- 在Windows系统中,路径之间的层级关系,使用:
\来表示
实不相瞒,我还真没有注意这个问题,只知道在课上敲目录的都是用的/
D:\data\work\hello.txt
D:表示D盘
\表示层级关系
这是Windows的路径描述,D盘下有一个data文件夹,文件夹中还有一个文件夹work,work文件夹里面有个hello.txt文件
/usr/llocal/hello.txt
开头的
/表示根目录后面的
/表示层级关系
第一个/表示根目录,其他的/表示层级关系/,那就是根目录下有一个usr文件夹,这个文件夹里面有一个local文件夹,里面是hello.txt文件
这是老师举了个例子,说明Windows和Linux路径描述的区别,我以前还真没有注意过
练习
在根目录下有一个文件夹test,文件夹内有一个文件hello.txt,请描述文件的路径
/test/hello.txt
在根目录下有一个文件itheima.txt,请描述文件的路径
/itheima.txt
在根目录下有一个文件夹itcast,在itcast文件夹内有文件夹itheima,在itheima文件夹内有文件
hello.txt,请描述文件的路径
/itcast/itheima/hello.txt
我的感觉是和Windows的路径描述基本一样,只不过开头部分,Windows可能是C盘、D盘,而Linux只有一个根目录/,然后是层级关系表示不一样,其他的都是一个思想
Linux命令入门
Linux命令基础
什么是命令
- 命令行:即Linux终端(Terminal),是一种命令提示符页面。以纯“字符”的形式操作系统,可以使用各种字符化命
令对系统发出操作指令。- 命令:即Liux程序。一个命令就是一个Liux的程序。命令没有图形化页面,可以在命令行(终端中)提供字符化的反馈。
我想到了一个直观的解释,python解释器和python代码是什么关系,就是python代码是运行在解释器上的,同理,命令是运行在命令行上的
掌握Linux命令的基础格式
首先要明白,无论是什么命令,用这个做什么,他们的格式都是相同的
command [-aptions] [parameter]
command:命令本身-aptions:[可选,非必填]命令的一些选项,可以通过选项控制命令的行为细节parameter:[可选,非必填]命令的参数,多数用于命令的指向目标等语法中的
[],表示可选的意思
然后下面有个例子
ls -l/home/itheima,ls是命令本身,-l是选项,/home/itheima是参数
意思是以列表的形式,显示/home/itheima目录内的内容cp -r test1 test2,cp是命令本身,-r是选项,test1和test2是参数
意思是复制文件夹test1成为test2
command 就是要执行的命令,这个肯定不能少。因为这个步骤少了,计算机知道你要干什么吗,靠意念玩转Linux?
-aptions我的理解是命令的模式,一个命令有好多模式。不同的模式是不同的效果。如果不填就是默认的。
parameter:这个是要交代一下文件在哪里,你要对这个文件执行命令,那你就要说明白你的文件在哪里。
ls命令入门
ls命令介绍
ls [-a -l -h] [Linux路径]
-a -l -h:是可选的选项- Linux路径是此命令的可选的参数
当不使用选项和参数,直接使用ls命令本体,表示:以平铺形式,列出当前工作目录下的内容
[huan@localhost ~]$ ls
公共 模板 视频 图片 文档 下载 音乐 桌面
这个命令就类似查看文件夹里面有什么内容,在Windows里面双击这个文件夹就可以看见里面有什么文件,Linux的图形界面也是可以哒。但是在命令行下面,只能通过这种方式查看文件夹内容了。
HOME目录和工作目录
直接输入
ls命令,表示列出当前工作目录下的内容,当前工作目录是?Linux系统的命令行终端,在启动的时侯。默认会加载:
- 当前登录用户的HOME目录作为当前工作目录,所以
ls命令列出的是HOME目录的内容- HOMW目录:每个Linux操作用户在Linux系统的个人账户目录,路径在:
/home/用户名
- 如吗,图中的Linux用户是itheima,其HOME目录是:
/home/itheima- Windows系统和Linux系统均设有用户的HOME目录,如图
在我启动终端时,那么我的工作目录就是我的家目录。
[huan@localhost ~]$ ls
公共 模板 视频 图片 文档 下载 音乐 桌面
我现在在我的家目录里面进行工作,
HOME目录,我的理解就是用来存放用户家目录的目录,我们可以看一下,
[huan@localhost home]$ ls /home/
huan
现在可以看到在/home/目录下只有一个目录,也就是huan,我的家目录,
我可以添加一个用户,然后再看看这个目录会发生什么
[root@localhost ~]# adduser u1
[root@localhost ~]# ls /home/
huan u1
adduser命令是添加用户的命令,我添加了一个用户u1,这时再看/home/目录,那么就有两个用户了,这里面存放了两个用户的家目录。
Linux是多用户操作系统,所以每个用户的家目录都给放在/home目录里面
Windows也有这种操作,Mac也有
ls命令的参数和选项
ls [-a -l -h] [Linux路径]
在这里吧ls命令的完整形式展示一下
ls命令的参数
- 当
ls不使用参数,表示列出:当前工作的内容,即用户的HOME目录- 当使用参数,
ls命令的参数表示:指定一个Linux路径,列出指定理解的内容
我们重温一下ls命令,查看当前工作的内容,文件夹里面有什么。
不给参数,那就是当前工作的文件夹
[huan@localhost ~]$ ls
公共 模板 视频 图片 文档 下载 音乐 桌面
现在我的工作环境是我的家目录
如果给定参数
[huan@localhost root]$ ls /
bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
给定一个/参数,那就是看一下根目录文件夹里面有什么东西
/:根目录
还有我上面的一个ls命令
[root@localhost ~]# ls /home/
huan u1
给定的参数是/home/那就是查看根目录下home文件夹里面都有哪些文件
ls命令的选项
-a:表示:all的意思,即列出全部文件(包含隐藏的文件/文件夹)
[huan@localhost ~]$ ls -a
. .bash_history .bash_profile .cache .dbus .ICEauthority .mozilla 模板 图片 下载 桌面
.. .bash_logout .bashrc .config .esd_auth .local 公共 视频 文档 音乐
对比ls
[huan@localhost ~]$ ls
公共 模板 视频 图片 文档 下载 音乐 桌面
展示的文件一下子就多了。
.开头的文件或者文件夹都是Linux系统隐藏的文件,自动隐藏,只能通过-a选择查看
-l:表示:以列表(竖向排列)的形式展示内容,并展示更多信息
[huan@localhost ~]$ ls -l
总用量 0
drwxr-xr-x. 2 huan huan 6 11月 4 02:41 公共
drwxr-xr-x. 2 huan huan 6 11月 4 02:41 模板
drwxr-xr-x. 2 huan huan 6 11月 4 02:41 视频
drwxr-xr-x. 2 huan huan 6 11月 4 02:41 图片
drwxr-xr-x. 2 huan huan 6 11月 4 02:41 文档
drwxr-xr-x. 2 huan huan 6 11月 4 02:41 下载
drwxr-xr-x. 2 huan huan 6 11月 4 02:41 音乐
drwxr-xr-x. 2 huan huan 6 11月 4 02:41 桌面
我学习过Linux,但是不深,这个展示的信息更多,有drwxr-xr-x权限、huan huan用户组和用户、6大小、11月 4 02:41创建日期等等。
以列标的形式展示
语法中的选项是可以组合使用的,比如学习的
-a和-l可以组合应用
ls -l -als -lals -al
[huan@localhost ~]$ ls -al
总用量 36
drwx------. 15 huan huan 4096 11月 4 21:20 .
drwxr-xr-x. 4 root root 28 11月 4 20:02 ..
-rw-------. 1 huan huan 149 11月 4 21:21 .bash_history
-rw-r--r--. 1 huan huan 18 4月 1 2020 .bash_logout
-rw-r--r--. 1 huan huan 193 4月 1 2020 .bash_profile
-rw-r--r--. 1 huan huan 231 4月 1 2020 .bashrc
drwx------. 16 huan huan 4096 11月 5 2022 .cache
drwxr-xr-x. 14 huan huan 4096 11月 5 2022 .config
drwx------. 3 huan huan 25 11月 4 02:41 .dbus
-rw-------. 1 huan huan 16 11月 4 02:41 .esd_auth
-rw-------. 1 huan huan 1240 11月 4 21:20 .ICEauthority
drwx------. 3 huan huan 19 11月 4 02:41 .local
drwxr-xr-x. 4 huan huan 39 11月 4 02:28 .mozilla
drwxr-xr-x. 2 huan huan 6 11月 4 02:41 公共
drwxr-xr-x. 2 huan huan 6 11月 4 02:41 模板
drwxr-xr-x. 2 huan huan 6 11月 4 02:41 视频
drwxr-xr-x. 2 huan huan 6 11月 4 02:41 图片
drwxr-xr-x. 2 huan huan 6 11月 4 02:41 文档
drwxr-xr-x. 2 huan huan 6 11月 4 02:41 下载
drwxr-xr-x. 2 huan huan 6 11月 4 02:41 音乐
drwxr-xr-x. 2 huan huan 6 11月 4 02:41 桌面
展示其中一种用法,就是把他的选项功能全部加起来使用,展示所有文件包括隐藏文件,以列表形式展示
除了选项本身可以组合以外,选项和参数也可以一起使用
[huan@localhost ~]$ ls -al /
总用量 20
dr-xr-xr-x. 17 root root 224 11月 4 02:36 .
dr-xr-xr-x. 17 root root 224 11月 4 02:36 ..
lrwxrwxrwx. 1 root root 7 11月 4 02:28 bin -> usr/bin
dr-xr-xr-x. 5 root root 4096 11月 4 02:37 boot
drwxr-xr-x. 20 root root 3320 11月 4 21:10 dev
drwxr-xr-x. 139 root root 8192 11月 4 21:22 etc
drwxr-xr-x. 4 root root 28 11月 4 20:02 home
lrwxrwxrwx. 1 root root 7 11月 4 02:28 lib -> usr/lib
lrwxrwxrwx. 1 root root 9 11月 4 02:28 lib64 -> usr/lib64
drwxr-xr-x. 2 root root 6 4月 11 2018 media
drwxr-xr-x. 2 root root 6 4月 11 2018 mnt
drwxr-xr-x. 3 root root 16 11月 4 02:33 opt
dr-xr-xr-x. 220 root root 0 11月 4 21:10 proc
dr-xr-x---. 5 root root 205 11月 4 21:03 root
drwxr-xr-x. 42 root root 1300 11月 4 21:22 run
lrwxrwxrwx. 1 root root 8 11月 4 02:28 sbin -> usr/sbin
drwxr-xr-x. 2 root root 6 4月 11 2018 srv
dr-xr-xr-x. 13 root root 0 11月 4 21:10 sys
drwxrwxrwt. 21 root root 4096 11月 4 21:21 tmp
drwxr-xr-x. 13 root root 155 11月 4 02:28 usr
drwxr-xr-x. 20 root root 282 11月 4 02:38 var
根目录隐藏文件好像不多,但是起到了演示的效果
-h:表示以易于阅读的形式,列出文件大小,如k、m、g-h选项必须要搭配-l一起使用
[huan@localhost ~]$ ls -l /
总用量 20
lrwxrwxrwx. 1 root root 7 11月 4 02:28 bin -> usr/bin
dr-xr-xr-x. 5 root root 4096 11月 4 02:37 boot
drwxr-xr-x. 20 root root 3320 11月 4 21:10 dev
drwxr-xr-x. 139 root root 8192 11月 4 21:22 etc
drwxr-xr-x. 4 root root 28 11月 4 20:02 home
lrwxrwxrwx. 1 root root 7 11月 4 02:28 lib -> usr/lib
lrwxrwxrwx. 1 root root 9 11月 4 02:28 lib64 -> usr/lib64
drwxr-xr-x. 2 root root 6 4月 11 2018 media
drwxr-xr-x. 2 root root 6 4月 11 2018 mnt
drwxr-xr-x. 3 root root 16 11月 4 02:33 opt
dr-xr-xr-x. 221 root root 0 11月 4 21:10 proc
dr-xr-x---. 5 root root 205 11月 4 21:03 root
drwxr-xr-x. 42 root root 1300 11月 4 21:22 run
lrwxrwxrwx. 1 root root 8 11月 4 02:28 sbin -> usr/sbin
drwxr-xr-x. 2 root root 6 4月 11 2018 srv
dr-xr-xr-x. 13 root root 0 11月 4 21:10 sys
drwxrwxrwt. 21 root root 4096 11月 4 21:21 tmp
drwxr-xr-x. 13 root root 155 11月 4 02:28 usr
drwxr-xr-x. 20 root root 282 11月 4 02:38 var
7、4096、3320表示文件的大小,因为没有加h 默认是KB单位
如果加个h
[huan@localhost ~]$ ls -lh /
总用量 20K
lrwxrwxrwx. 1 root root 7 11月 4 02:28 bin -> usr/bin
dr-xr-xr-x. 5 root root 4.0K 11月 4 02:37 boot
drwxr-xr-x. 20 root root 3.3K 11月 4 21:10 dev
drwxr-xr-x. 139 root root 8.0K 11月 4 21:22 etc
drwxr-xr-x. 4 root root 28 11月 4 20:02 home
lrwxrwxrwx. 1 root root 7 11月 4 02:28 lib -> usr/lib
lrwxrwxrwx. 1 root root 9 11月 4 02:28 lib64 -> usr/lib64
drwxr-xr-x. 2 root root 6 4月 11 2018 media
drwxr-xr-x. 2 root root 6 4月 11 2018 mnt
drwxr-xr-x. 3 root root 16 11月 4 02:33 opt
dr-xr-xr-x. 221 root root 0 11月 4 21:10 proc
dr-xr-x---. 5 root root 205 11月 4 21:03 root
drwxr-xr-x. 42 root root 1.3K 11月 4 21:22 run
lrwxrwxrwx. 1 root root 8 11月 4 02:28 sbin -> usr/sbin
drwxr-xr-x. 2 root root 6 4月 11 2018 srv
dr-xr-xr-x. 13 root root 0 11月 4 21:10 sys
drwxrwxrwt. 21 root root 4.0K 11月 4 21:21 tmp
drwxr-xr-x. 13 root root 155 11月 4 02:28 usr
drwxr-xr-x. 20 root root 282 11月 4 02:38 var
会发现上面的7、4096、3320变成了7、4.0k、3.3k
现在因为是新系统,文件都不大,所以都是b和k。没有看见b,我想是因为默认显示了7b,b隐藏了。
-lh提供三个单位KB、MB、GB
目录切换相关命令(cd/pwd)
cd切换工作目录命令
我们可以通过
cd命令,更改当前所在的工作目录cd命令来自英文:Change Directory
语法:
cd [Linux路径]
- cd命令无需选项,只有参数,表示要切换到哪个目录下
- cd命令直接执行,不写参数,表示回到用户的HOME目录
这个就类似于我们在Windows系统双击文件夹进入文件夹是一个道理,
打开终端,我们会在自己的家目录
[huan@localhost ~]$ ls
公共 模板 视频 图片 文档 下载 音乐 桌面
ls看一下我们家目录都有哪些文件夹,比如说我们打开桌面 这个文件夹
[huan@localhost ~]$ cd 桌面
[huan@localhost 桌面]$ ls
test1
切换到桌面目录,然后我们看一下桌面文件夹都有哪些文件夹,有个test1
我们切换到根目录
[huan@localhost 桌面]$ cd /
[huan@localhost /]$ ls
bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
[huan@localhost /]$ ls /
bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
/根目录,所以cd / 切换到了根目录,我们查看了一下文件内容,又用ls查看了一下根目录,会发现是一个内容
[huan@localhost /]$ cd
[huan@localhost ~]$ ls
公共 模板 视频 图片 文档 下载 音乐 桌面
cd不写路径,直接回到根目录。
pwd展示当前工作目录命令
通过ls来验证当前的工作目录,其实是不恰当的。
我们可以通过pwd命令,来查看当前所在的工作目录。
pwd命令来自:Print Work Directory
语法:pwd
- pwd命令,无选项,无参数,直接输入pwd即可
如果一个文件夹里面的内容很多很多,那么用ls是很不方便的,
而pwd,就是类似于一个提示,告诉你你现在在哪里
[huan@localhost ~]$ pwd
/home/huan
我们在我的家目录
[huan@localhost ~]$ cd /bin
[huan@localhost bin]$ pwd
/bin
切换到根目录下的bin,再使用pwd命令
会发现我们在根目录下的bin文件夹下
练习
请使用cd命令并结合ls命令,任意在Liux文件系统内探索。
[huan@192 ~]$ cd /etc
[huan@192 etc]$ ls
abrt favicon.png ksmtuned.conf passwd- setuptool.d
adjtime fcoe ld.so.cache pbm2ppa.conf sgml
aliases festival ld.so.conf pinforc shadow
aliases.db filesystems ld.so.conf.d pkcs11 shadow-
alsa firefox libaudit.conf pki ...
查看根目录下etc文件夹里面有什么东西,要先进到里面,然后ls,文件太多了,省略
[huan@192 etc]$ cd /home/huan/下载
[huan@192 下载]$ ls
[huan@192 下载]$
这个里面空空如也
并尝试找出名字叫做games的文件夹在哪里。
相对路径、绝对路径和特殊路径
相对路径和绝对路径
[huan@localhost ~]$ ls
公共 模板 视频 图片 文档 下载 音乐 桌面
比如说,我想进入桌面这个文件夹,那我应该怎么做,有两种方法
第一种:cd /home/huan/桌面
第二种:cd 桌面
这两种方法都可以进入,但是一个长一个短,那如果我们为了省事都用短的,那还会有错误,这时就需要了解两个概念
- 绝对路径:以根目录为起点,描述路径的一种写法,路径描述以
/开头- 相对路径:以当前目录为起点,描述路径的一种写法,路径描述无需以
/开头
以根目录为起点的是绝对路径,很明显第一种方法采用的是绝对路径进入目录
第二种方法采用的是相对路径,以当前目录。
~表示我在家目录,其实我也用ls查看了我的家目录有哪些内容。我当前所在的目录是我的家目录,所以是以家目录为起点,然后找到的桌面文件夹。
[huan@localhost ~]$ cd 桌面
[huan@localhost 桌面]$ pwd
/home/huan/桌面
[huan@localhost ~]$ cd /home/huan/桌面
[huan@localhost 桌面]$ pwd
/home/huan/桌面
可以看到无论哪种方式进入目录都是可以的
但是要注意相对路径的使用,必须是当前目录下有你要进入的目录,如果没有,那就是进不去,
[huan@localhost 桌面]$ ls /
bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
[huan@localhost 桌面]$ cd bin
-bash: cd: bin: 没有那个文件或目录
Linux目录下有个bin文件,那我直接cd进入是不行的,因为我的前目录下没有bin文件
只能cd /bin
特殊路径符
.:表示当前目录,比如:cd ./DesKtop表示切换到当前目录下的DesKtop目录下,和cd DesKtop效果一致..:表示上一级目录,比如:cd ..即可切换到上一级目录,cd ../..切换到上二级的目录~:表示HOME目录,比如:cd ~即可切换到HOME目录或cd ~/DesKtop,切换到HOME内的DesKtop目录。
[huan@localhost bin]$ cd ~
[huan@localhost ~]$ pwd
/home/huan
在[huan@localhost bin]$ 中可以看出来我现在在bin目录下,如果我要回到家目录,一开始我们用的是这种方法cd /home/huan ,现在只需要一个cd ~ 即可。
这个cd ~也等同于cd
[huan@localhost /]$ cd
[huan@localhost ~]$ pwd
/home/huan
一样的。
知道了~这个是家目录,那么就可以借助~实现更多操作
[huan@localhost /]$ cd ~/桌面
[huan@localhost 桌面]$
进入家目录下的桌面目录。 一开始我们是cd /home/huan/桌面
[huan@localhost test1]$ pwd
/home/huan/桌面/test1
[huan@localhost test1]$ cd ..
[huan@localhost 桌面]$ pwd
/home/huan/桌面
cd ..回到上一级目录,我先用pwd看了一下我的位置,是在我的家目录下的桌面文件夹下的test1文件夹
那么test1上一级目录就是桌面
通过cd ..这个命令衍生除了几个命令:
cd ../..返回二级目录
[huan@localhost test1]$ cd ../..
[huan@localhost ~]$ pwd
/home/huan
cd ../../..返回三级命令
[huan@localhost test1]$ cd ../../..
[huan@localhost home]$ pwd
/home
以上条件目录路径都是以/home/huan/桌面/test1为基准,返回二级目录就是家目录/home/huan
返回三级目录就是/home
[huan@localhost ~]$ cd ./下载
[huan@localhost 下载]$ pwd
/home/huan/下载
[huan@localhost ~]$ cd 下载
[huan@localhost 下载]$ pwd
/home/huan/下载
.当前目录,可以看出来cd ./下载和cd 下载没有什么区别
练习
当前工作目录内有一个test文件夹,文件夹内有一个文件hello.txt,请描述文件的相对路径
test/hello.txt
在当前工作目录的上级目录有一个test文件夹,文件夹内有一个文件hello.txt,请描述文件的相对
路径
../test/hello.txt
在HOME目录内有一个test文件夹,文件夹内有一个文件hello.txt,请描述文件的路径,需要使用
符号~
~/test/hello
创建目录命令(mkdir)
mkdir命令
通过mkdir命令可以创建新的目录(文件夹)
mkdir来自英文:Make Directory
语法:
mkdir [-p] Linux路径
- 参数必填,表示Linux路径,即要创建的文件夹的路径,相对路径或绝对路径均可
- -p选项可选,表示自动创建不存在的父目录,适用于创建连续多层级的目录
[huan@localhost ~]$ mkdir 桌面/test1
[huan@localhost ~]$ ls 桌面
test1
在桌面创建一个test1文件夹,采用相对路径
[huan@localhost ~]$ mkdir /home/huan/桌面/test2
[huan@localhost ~]$ ls 桌面
test1 test2
还是在桌面创建文件夹,采用绝对路径
[huan@localhost /]$ mkdir ~/桌面/test3
[huan@localhost /]$ ls ~/桌面
test1 test2 test3
这里用到了特殊路径符。
mkdir -p 选项
在这里有个小技巧,CTRL+L清屏。
如果要一次性创建多个层级目录,就要使用到-p选项
我们先看个反例,不带p
[huan@localhost 桌面]$ mkdir test4/test4_1/test4_2
mkdir: 无法创建目录"test4/test4_1/test4_2": 没有那个文件或目录
我们的最终目的是要创建test4_2文件夹,但是出现了错误,原因是没有test4和test4_1文件夹
这时就要用-p,连续创建文件夹
[huan@localhost 桌面]$ mkdir -p test4/test4_1/test4_2
[huan@localhost 桌面]$ cd test4/test4_1/test4_2
[huan@localhost test4_2]$ pwd
/home/huan/桌面/test4/test4_1/test4_2
可以看到已经创建完成。pws后的路径/home/huan/桌面/test4/test4_1/test4_2
注意:创建文件夹需要修改权限,请确保操作均在HOME目录内,不要在HOME外操作
涉及到权限问题,HOME外无法成功
[huan@localhost /]$ mkdir test1
mkdir: 无法创建目录"test1": 权限不够
没有权限,失败了
练习
请通过命令在HOME目录内,创建如下路径(需使用特殊符号):itcast/itheima./nice/666
mkdir -p ~/桌面/itcast/itheima./nice/666
文件操作命令part1(touch、cat、more)
touch创建文件
可以通过touch命令创建文件
语法:
touch Linux路径
- touch命令无选项,参数必填,表示要创建的文件路径,相对、绝对、特殊路径符均可以使用
[huan@localhost 桌面]$ touch test.txt
[huan@localhost 桌面]$ ls
test1 test.txt
touch命令就是用来创建文件的,touch 文件名就可以创建了,可以用ls看一下这个文件有没有创建成功
怎么区分文件夹和文件,markdown好像没有Linux代码的高亮,可能在这个上看不清,深色代表文件夹,浅色就是文件
还可以通过ll这个命令查看
[huan@localhost 桌面]$ ll
总用量 0
drwxrwxr-x. 2 huan huan 6 11月 7 14:33 test1
-rw-rw-r--. 1 huan huan 0 11月 9 13:36 test.txt
先说一下ll这个命令,ll等价于ls - l
至于这个命令,上面已经解释过了。
我们重点关注前面的内容,有个d和-
drwxrwxr-x和-rw-rw-r--
前面的第一个字符,就可以看出来这个什么类型文件
- d:Directory、目录,文件夹
- -:文件
由于-rw-rw-r--有好几个-,不要惊慌,就看第一个字母,-,文件
创建好了这个文件,我们该如何编辑呢,可以通过vi进行编辑,这是在命令行下完成的,目前我不熟悉,我们可以使用Cent‘OS的图形化进行编辑。就和Windows下如何写word文档一样。找到文件,双击,最后记得保存
cat命令 查看文件内容
准备好文件内容后,可以通过cat查看内容
语法:
cat Linux路径
- cat同样没有选择,只有必参数,参数表示:被查看的文件路径,相对、绝对、特殊路径符都可以使用
[huan@localhost 桌面]$ cat test.txt
hello world
a like linux
这就是一个查看文件内容的命令,看看这个文件里面有啥
more命令查看文件内容
more命令同样可以查看文件内容,同cat不同的是:
- cat是直接将内容全部显示出来
- more支持翻页,如果文件内容过多,可以一页页的展示
语法:
more Linux路径
- 同样没有选择,只有必参数,参数表示:被查看的文件路径,相对、绝对、特殊路径符都可以使用
我们查看一个Linux系统内置文件,路径为 /etc/services
如果用cat查看
[huan@localhost 桌面]$ cat /etc/services
opennl-voice 1259/udp # Open Network Library Voice
ibm-ssd 1260/tcp # ibm-ssd
ibm-ssd 1260/udp # ibm-ssd
mpshrsv 1261/tcp # mpshrsv
...
内容会全部展示出来,因为内容太多,我用省略号代替了
用more查看
- 在查看过程中,通过空格翻页
- 通过q退出
[huan@localhost 桌面]$ more /etc/services
# /etc/services:
# $Id: services,v 1.55 2013/04/14 ovasik Exp $
#
# Network services, Internet style
# IANA services version: last updated 2013-04-10
#
# Note that it is presently the policy of IANA to assign a single well-known
# port number for both TCP and UDP; hence, most entries here have two entries
# even if the protocol doesn't support UDP operations.
# Updated from RFC 1700, ``Assigned Numbers'' (October 1994). Not all ports
# are included, only the more common ones.
#
# The latest IANA port assignments can be gotten from
# http://www.iana.org/assignments/port-numbers
# The Well Known Ports are those from 0 through 1023.
# The Registered Ports are those from 1024 through 49151
# The Dynamic and/or Private Ports are those from 49152 through 65535
#
# Each line describes one service, and is of the form:
#
# service-name port/protocol [aliases ...] [# comment]
tcpmux 1/tcp # TCP port service multiplexer
tcpmux 1/udp # TCP port service multiplexer
rje 5/tcp # Remote Job Entry
rje 5/udp # Remote Job Entry
echo 7/tcp
--More--(0%)
这个和阅读电子书一样,--More--(0%)显示阅读进度。按下q退出
文件操作命令part1(cp、mv、rm)
cp命令复制文件文件夹
cp命令可以用于复制文件\文件夹,cp命令来自英文单词copy
语法:
cp [-r] 参数1 参数2
- -r选项,可选,用于复制文件夹使用,表示递归
- 参数1,Linux路径,表示被复制的文件或文件夹
- 参数2,Linux,表示要复制去的地方
[huan@localhost 桌面]$ cp test.txt test1.txt
[huan@localhost 桌面]$ ls
test1 test1.txt test.txt
[huan@localhost 桌面]$ cat test1.txt
hello world
a like linux
[huan@localhost 桌面]$ cat test.txt
hello world
a like linux
我们写过一个文件,test.txt,我们就复制这个文件,上面就是代码
因为文件在桌面,我要复制到桌面,同时我也在桌面,所以就可以用相对路径。
我们复制一个文件夹
[huan@localhost 桌面]$ ls
test1 test1.txt test.txt
[huan@localhost 桌面]$ cp test1 test2
cp: 略过目录"test1"
[huan@localhost 桌面]$ cp -r test1 test2
如果复制文件夹,不带上-r选项,会出现提示,
-r,递归,应该是复制这个文件夹里面全部内容
[huan@localhost 桌面]$ cp -r test1/t1 /home/huan/
[huan@localhost 桌面]$ ls /home/huan/
t1 公共 模板 视频 图片 文档 下载 音乐 桌面
这是用来绝对路径和相对路径
吧test1下的文件夹复制到我的家目录。
mv移动文件或文件夹
mv命令可以用于移动文件\文件夹,mv命令来自英文单词:move
语法:
mv 参数1 参数2
- 参数1:Linux路径,表示被移到的文件或文件夹
- 参数2:Linux路径,表示要移动去的地方,如果目标不存在,则进行改名,确保目标存在
这个就是对文件或者文件夹的移动
[huan@localhost 桌面]$ mv test1.txt /home/huan/
[huan@localhost 桌面]$ ls /home/huan/
t1 test1.txt 公共 模板 视频 图片 文档 下载 音乐 桌面
移动文件到我的家目录下。因为我和我的文件都在桌面,所以就用了相对路径,
[huan@localhost 桌面]$ mv test1 /home/huan/
[huan@localhost 桌面]$ ls /home/huan/
t1 test1 test1.txt 公共 模板 视频 图片 文档 下载 音乐 桌面
移动文件夹。
[huan@localhost 桌面]$ mv test.txt t.txt
[huan@localhost 桌面]$ ls
test2 t.txt
对文件或者文件夹改名,因为t.txt不存在,所以改名。
[huan@localhost 桌面]$ mv t100.txt /home/huan/test200.txt
[huan@localhost 桌面]$ ls /home/huan/
t1 test1 test100 test1.txt test200.txt 公共 模板 视频 图片 文档 下载 音乐 桌面
移动t100.txt文件到家目录并改名为test200.txt
mv命令虽然没有选项,但是还是有几种用法。
rm删除文件、文件夹
rm命令可用于删除文件、文件夹
rm命令来自英文单词:remove
语法:
rm [-r -f] 参数1 参数2 … 参数N
- 同cp一样,-r选项用于删除文件夹
- -f表示force,强制删除(不会弹出提示确认信息)
- 普通用户删除内容不会弹出提示,只有root管理员用户删除内容会有提示
- 所以一般用户用不到-f选项
- 参数1、参数2、……、参数N表示要删除的文件或文件夹路径,安照空格隔开
一个删除文件或者文件夹的命令
[huan@localhost ~]$ ls
t1 test1 test100 test1.txt test2 test200.txt 公共 模板 视频 图片 文档 下载 音乐 桌面
我们展示一下家目录下面都有什么,然后删除这些内容
[huan@localhost ~]$ rm test1.txt
[huan@localhost ~]$ ls
t1 test1 test100 test2 test200.txt 公共 模板 视频 图片 文档 下载 音乐 桌面
这是一个最简单的文件删除命令,删除test1.txt文件。
[huan@localhost ~]$ rm t1
rm: 无法删除"t1": 是一个目录
[huan@localhost ~]$ rm -r t1
[huan@localhost ~]$ ls
test1 test100 test2 test200.txt 公共 模板 视频 图片 文档 下载 音乐 桌面
删除t1文件夹,因为这时文件夹,就要加上-r命令,否则会提示错误,和cp文件夹复制很相似
[huan@localhost ~]$ ls
t10.txt t20.txt t30.txt test1 公共 模板 视频 图片 文档 下载 音乐 桌面
[huan@localhost ~]$ rm t10.txt t20.txt t30.txt
[huan@localhost ~]$ ls
test1 公共 模板 视频 图片 文档 下载 音乐 桌面
删除多个文件,如果是多个文件夹需要前面带上-r
rm删除文件、文件夹 - 通配符
rm命令支持通配符
*,用来做模糊匹配符号*表示通配符,即匹配任意内容(包含空),示例:
test*:表示匹配任何以test开头的内容*test:表示匹配任何以test结尾的内容*test*:表示匹配任何包含test的内容
[huan@localhost 桌面]$ ls
1test1.txt 1test.txt 2test2.txt 2test.txt 3test 3test3 test1.txt test2.txt test3
我们展示一下桌面上的内容,有文件,也有文件夹
[huan@localhost 桌面]$ rm -r test*
[huan@localhost 桌面]$ ls
1test1.txt 1test.txt 2test2.txt 2test.txt 3test 3test3
删除test开头的内容
我们来解释一下-f,强制删除。
Linux有一个超级管理员用户,也就是root用户。
怎么进入root用户呢。su -,退出exit
[huan@localhost 桌面]$ su -
密码:
上一次登录:一 11月 7 14:28:09 CST 2022:1 上
[root@localhost ~]#
在开始安装Linux的时候,也会让你设置一个root密码,这时就要用到这个密码。
进入root,很明显有一个变化,就是[huan@localhost 桌面]$ 变成了[root@localhost ~] 标识符发生了变化。
[root@localhost ~]# exit
登出
[huan@localhost 桌面]$
exit退出root用户
我们演示删除文件
[root@localhost ~]# touch test.txt
[root@localhost ~]# rm test.txt
rm:是否删除普通空文件 "test.txt"?y
在我删除文件的时候会有一行提示,rm:是否删除普通空文件 "test.txt"?要不要删除,输入y或者n。这个设置有什么用呢,因为root用户由最高权限,防止误操作。
怎么没有这个提示呢?
[root@localhost ~]# rm -f test.txt
[root@localhost ~]#
加上-f,强制删除
过多的root介绍我现在也不明白,所以我只是看一下,然后推出了。
注意!!!
rm是一个危险的命令,特别是处于root(超级管理员)用户的时候。
情谨慎使用
如下命令,请千万千万不要在root管理员用户下执行
rm -rf /
rm -rf /*效果等同于在Windows上执行C盘格式化
虽然我没试过,但是对C盘格式化是什么概念我想大家应该明白,电脑没法用了,要重装系统,但是数据没了。
grep、wc和管道符
grep命令过滤文件
可以通过grep命令,从文件中通过关键字过滤文件行
语法:`grep [-n] 关键字 文件路径
- 选项-n,可选,表示在结果中显示匹配的行的行号
- 参数,关键字,必填,表示过滤的关键字,带有空格或其他特殊符号,建议使用""将关键字包围起来
- 参数,文件路径,必填,表示要过滤的内容的文件路径,可作为内容输入端口
首先我创建了一个文件
[huan@192 桌面]$ cat test.txt
I am studying Linux.
Linux has a lot of orders to learn.
I like to use Linux
这个命令的初步理解类似CTRL+F,查找功能
[huan@192 桌面]$ grep "like" test.txt
I like to use Linux
我要找含有的行,那么输入like,就有输出,其中like标红了
[huan@192 桌面]$ grep "Linux" test.txt
I am studying Linux.
Linux has a lot of orders to learn.
I like to use Linux
这是找Linux,因为三行都有Linux,所以都输出了
[huan@192 桌面]$ grep -n "lot" test.txt
2:Linux has a lot of orders to learn.
-n,出现是包含关键字的行号,我找lot,可以看出来lot在第二行
这个命令就像是查找,
wc命令统计内容数量
可以通过wc命令统计文件的行数、单词数量等
语法:
wd [-c -m -l -w] 文件路径
- 选项,-c,统计bytes数量
- 选项,-m,统计字符数量
- 选项,-l,统计行数
- 选项,-w,统计单词数量
- 参数,文件路径,被统计的文件,可作为内容输入端口
统计文件的相关信息
[huan@192 桌面]$ wc test.txt
3 17 77 test.txt
如果不输入参数,那么会输出全部统计的数值,文件有3行,17个单词,77个字节,以及文件名
[huan@192 桌面]$ ll
总用量 4
-rw-rw-r--. 1 huan huan 77 11月 12 11:13 test.txt
也可以以这种方式查看文件字节数,77
[huan@192 桌面]$ wc -c test.txt
77 test.txt
[huan@192 桌面]$ wc -m test.txt
77 test.txt
[huan@192 桌面]$ wc -l test.txt
3 test.txt
[huan@192 桌面]$ wc -w test.txt
17 test.txt
分别统计字节数、字符数、行数、单词数,单词以空格结尾
|管道符的概念和应用
学习了grep命令后,我们在来学习一个新的特殊符号,管道符:|
管道符的含义是:将管道符左边命令的结果,作为右边命令的输出
[huan@192 桌面]$ cat test.txt | grep -n am
1:I am studying Linux.
左边命令的结果,作为右边命令的输出,这句话在我一开始学习的时候有点绕口
这里我想到了一个例子,python中可以定义函数,比如我现在定义了两个函数a、b,那我可以把函数a返回的参数给函数b,b(a),
这里也是,把cat返回来的结果给 grep,grep是可以可作为内容输入端口。
grep -n am ,可以看出来参数被我省略了,那就是管道符内容的
[huan@192 桌面]$ cat test.txt | grep am | wc -w
4
也可以多个管道符一起用
浅浅分析一下。
[huan@192 桌面]$ cat test.txt
I am studying Linux.
Linux has a lot of orders to learn.
I like to use Linux
这时cat输出的内容,这段内容就可以通过管道符传递给grep
[huan@192 桌面]$ cat test.txt | grep am
I am studying Linux.
[huan@192 桌面]$ grep am test.txt
I am studying Linux.
可以看出grep和管道符数出来的命令一样
现在I am studying Linux.这段被输出来了,但是还有一个管道符,所以把这段话给wc,
[huan@192 桌面]$ cat test.txt | grep am | wc -w
4
cat的结果作为grep的输入,然后又grep的结果又给了wc
即I am studying Linux.一共有4个单词。
可作为内容输入端口,只要有命令内容输出,那就可以通过管道符传入
[huan@192 桌面]$ ls /
bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
[huan@192 桌面]$ ls / | grep lib
lib
lib64
我先看了一下根目录又那些文件夹,然后我又找了一下含有bin关键字的文件夹
[huan@192 桌面]$ ls / | wc -w
19
根目录下一共有19个文件夹
[huan@192 桌面]$ ls -l /usr/bin/ | wc -l
1673
/usr/bin下面一共又11673个文件。ls -l按行输出,wc -l对行进行统计
查找命令(which、find)
使用which命令查找命令的程序文件
我们在前面学习的Linux命令其实他们的本体就是一个个的二进制可执行程序
和Windows系统中的.exe文件,是一个意思
我们可以通过which命令,查看所使用的一系列命令的程序文件存放在哪里
语法:
which 要查找的命令
原来我们用到的命令都是一个个可执行的程序,类似Windows里的.exe文件
但是这些命令都放在哪里呢
[huan@192 桌面]$ which ls
alias ls='ls --color=auto'
/usr/bin/ls
[huan@192 桌面]$ which cd
/usr/bin/cd
[huan@192 桌面]$ which cp
/usr/bin/cp
我们用到的命令基本上都在/usr/bin文件夹下
使用find命令查找指定文件
按文件名查找
在图形化中,我们可以方便的通过系统提供的搜索功能,搜索指定的文件。
同样,在Linux系统中,我们可以通过find命令去搜索指定的文件。
语法:`find 起始位置 -name “被查找文件名”
Linux中有些文件夹是不允许普通用户打开的,为了可以最大可能的搜索,我们使用管理员用户搜索
[root@192 ~]# find / -name test
find: ‘/run/user/1000/gvfs’: 权限不够
/root/.local/share/Trash/files/test
/usr/bin/test
/usr/lib/modules/3.10.0-1160.el7.x86_64/kernel/drivers/ntb/test
/usr/lib/alsa/init/test
/usr/lib64/python2.7/test
/usr/lib64/python2.7/unittest/test
/usr/share/espeak-data/voices/test
/home/huan/桌面/test
我们分析这条命令
[root@192 ~]# find / -name test
/是根目录,那就是全盘搜索,-name,按文件名test进行搜索
这里有个bug,find: ‘/run/user/1000/gvfs’: 权限不够\
我用的就是root用户,为什么还会权限不够。
经过百度是因为FUSE文件系统和权限不配引起的
[root@192 ~]# umount /run/user/1000/gvfs
[root@192 ~]# rm -rf /run/user/1000/gvfs
解决方法是卸载一个软件和删除一个文件夹,通过搜索得到的
[root@192 ~]# find / -name test
/root/.local/share/Trash/files/test
/usr/bin/test
/usr/lib/modules/3.10.0-1160.el7.x86_64/kernel/drivers/ntb/test
/usr/lib/alsa/init/test
/usr/lib64/python2.7/test
/usr/lib64/python2.7/unittest/test
/usr/share/espeak-data/voices/test
/home/huan/桌面/test
现在可以看到一共有8个人test文件了,也没有权限不够的提示了
find命令-通配符
在学习删除命令的时候提到了一个通配符的概念*,用来做模糊匹配,那么这个里面就可以用
[root@192 ~]# find / -name *test*
我全盘搜索含有test的文件,有以下的输出
...
/usr/share/cups/templates/es/test-page.tmpl
/usr/share/cups/templates/fr/test-page.tmpl
/usr/share/cups/templates/ja/test-page.tmpl
/usr/share/cups/templates/ru/test-page.tmpl
/usr/share/cups/www/help/man-cupstestdsc.html
/usr/share/cups/www/help/man-cupstestppd.html
/usr/include/X11/extensions/xtestconst.h
/usr/include/X11/extensions/xtestext1const.h
/usr/include/X11/extensions/xtestext1proto.h
...
文件太多了。
我突然想到了管道符,我倒要看看有多少文件
[root@192 ~]# find / -name *test* | wc -l
find: ‘/run/user/1000/gvfs’: 权限不够
439
一共有429个文件
find命令-按文件大小查找文件
语法:
find 起始位置 -size +|-n[kMG]
- +,-表示大于等于
- n表示大小数字
- kMG表示大小单位,k(小写字母)表示kb,M表示MB,G表示GB
查找小于10KB的文件
[root@192 ~]# find / -size -10k
-对应小于,小于10k的文件,全盘搜索
你可能会发现文件有很多结果
...
/run/media/huan/CentOS 7 x86_64/EFI
/run/media/huan/CentOS 7 x86_64/EFI/BOOT
/run/media/huan/CentOS 7 x86_64/EFI/BOOT/fonts
/run/media/huan/CentOS 7 x86_64/EFI/BOOT/fonts/TRANS.TBL
/run/media/huan/CentOS 7 x86_64/EFI/BOOT/grub.cfg
/run/media/huan/CentOS 7 x86_64/EFI/BOOT/TRANS.TBL
/run/media/huan/CentOS 7 x86_64/EFI/TRANS.TBL
/run/media/huan/CentOS 7 x86_64/EULA
/run/media/huan/CentOS 7 x86_64/images
/run/media/huan/CentOS 7 x86_64/images/pxeboot
...
文件太多了,我们可以CTRL+C结束。强制中断
验证一下是不是小于10k
[root@192 ~]# ls -lh /run/user/1000/keyring/ssh
srwxr-xr-x. 1 huan huan 0 11月 12 11:02 /run/user/1000/keyring/ssh
我们查看一下/run/user/1000/keyring/ssh这个文件到底是不是小于10k,ls -lh,这个文件大小是0
课后练习
请使用find命令找出:名称中带有centos的文件
[root@192 ~]# find / -name centos
/boot/efi/EFI/centos
/dev/centos
/run/lvm/vgs_online/centos
/etc/lvm/backup/centos
按名字搜索,-name
请使用find命令找出:/usr目录内大于100M的文件
[root@192 ~]# find /usr/ -size +100M
/usr/lib/locale/locale-archive
/usr/lib64/firefox/libxul.so
我们可以验证一下
[root@192 ~]# ls -lh /usr/lib/locale/locale-archive
-rw-r--r--. 1 root root 102M 11月 4 02:29 /usr/lib/locale/locale-archive
echo、tail和重定向
使用echo命令输出内容
可以使用echo命令在命令行输出指定内容
语法:
echo 输出的内容
- 无需选项,只有一个参数,表示要输出的内容,复杂内容可以用“”包围
[huan@192 ~]$ echo hello linux
hello linux
类似编程语言的print语句,打印内容,
[huan@192 ~]$ echo "hello linux"
hello linux
用双引号包围,这样看起来会舒服一点,不然会很容易当成参数
反引号`的使用
我们可以通过命令用反引号(通常也称之为飘号)`将其包围
被`包围的内容,会被作为命令执行,而非普通字符
[huan@192 ~]$ echo pwd
pwd
我们用echo输出pwd,那就是真的输出pwd,但我的意思是输出当前路径
那这时就需要`
[huan@192 ~]$ echo `pwd`
/home/huan
我的当前工作路径
重定向符号的使用
我们再来学习两个特殊符号,重定向符:>和>>
>,将左侧命令的结果,覆盖写入到符号右侧指定的文件中>>,将左侧命令的结果,追加写入到符号右侧指定的文件中
这两个符号的意思像是往文件里面写东西,就行python的open函数一样。
我们先展示一下用来写入的文件
[huan@192 桌面]$ cat test.txt
I am studying Linux.
Linux has a lot of orders to learn.
I like to use Linux
现在往里面写入内容
[huan@192 桌面]$ echo "hello linux" >> test.txt
[huan@192 桌面]$ cat test.txt
I am studying Linux.
Linux has a lot of orders to learn.
I like to use Linux
hello linux
执行echo命令,将命令的结果写入test.txt文件
然后查看文件,在最后一行显示出来了,证明已经写入
将命令的结果写文件,那我还可以换其他的命令,
[huan@192 桌面]$ ls -l ~ >> test.txt
[huan@192 桌面]$ cat test.txt
I am studying Linux.
Linux has a lot of orders to learn.
I like to use Linux
hello linux
总用量 0
drwxrwxr-x. 4 huan huan 26 11月 9 15:00 test1
drwxr-xr-x. 2 huan huan 6 11月 4 02:41 公共
drwxr-xr-x. 2 huan huan 6 11月 4 02:41 模板
drwxr-xr-x. 2 huan huan 6 11月 4 02:41 视频
drwxr-xr-x. 2 huan huan 53 11月 9 13:32 图片
drwxr-xr-x. 2 huan huan 6 11月 4 02:41 文档
drwxr-xr-x. 2 huan huan 6 11月 4 02:41 下载
drwxr-xr-x. 2 huan huan 6 11月 4 02:41 音乐
drwxr-xr-x. 5 huan huan 60 11月 12 13:46 桌面
我把ls命令执行的结果写入了文件。
注意两个>>表示追加,写到文件后面
我们演示一下覆盖
[huan@192 桌面]$ echo "hello world" > test.txt
[huan@192 桌面]$ cat test.txt
hello world
覆盖,之前的内容全没了
tail命令跟踪文件更改
使用tail命令,可以查看文件尾部内容,跟踪文件的最新更改,语法如下
tail [-f -num] Linux路径
- 参数,Linux路径,表示被跟踪的文件路径
- 选项,-f,表示持续跟踪
- 选项,-num,表示,查看尾部多少行,不填默认10行
这个命令是对文件就行操作的,所以我先创建一个文件
[huan@192 桌面]$ cat test.txt
总用量 0
drwxrwxr-x. 4 huan huan 26 11月 9 15:00 test1
drwxr-xr-x. 2 huan huan 6 11月 4 02:41 公共
drwxr-xr-x. 2 huan huan 6 11月 4 02:41 模板
drwxr-xr-x. 2 huan huan 6 11月 4 02:41 视频
drwxr-xr-x. 2 huan huan 53 11月 9 13:32 图片
drwxr-xr-x. 2 huan huan 6 11月 4 02:41 文档
drwxr-xr-x. 2 huan huan 6 11月 4 02:41 下载
drwxr-xr-x. 2 huan huan 6 11月 4 02:41 音乐
drwxr-xr-x. 5 huan huan 60 11月 12 13:46 桌面
总用量 24
lrwxrwxrwx. 1 root root 7 11月 4 02:28 bin -> usr/bin
dr-xr-xr-x. 5 root root 4096 11月 4 02:37 boot
drwxr-xr-x. 20 root root 3320 11月 12 11:02 dev
drwxr-xr-x. 139 root root 8192 11月 12 11:03 etc
drwxr-xr-x. 4 root root 28 11月 7 14:30 home
lrwxrwxrwx. 1 root root 7 11月 4 02:28 lib -> usr/lib
lrwxrwxrwx. 1 root root 9 11月 4 02:28 lib64 -> usr/lib64
drwxr-xr-x. 2 root root 6 4月 11 2018 media
drwxr-xr-x. 3 root root 18 11月 5 17:49 mnt
drwxr-xr-x. 4 root root 87 11月 5 17:44 opt
dr-xr-xr-x. 218 root root 0 11月 12 11:01 proc
dr-xr-x---. 15 root root 4096 11月 12 13:59 root
drwxr-xr-x. 42 root root 1320 11月 12 11:03 run
lrwxrwxrwx. 1 root root 8 11月 4 02:28 sbin -> usr/sbin
drwxr-xr-x. 2 root root 6 4月 11 2018 srv
dr-xr-xr-x. 13 root root 0 11月 12 11:02 sys
drwxrwxrwt. 33 root root 4096 11月 12 16:25 tmp
drwxr-xr-x. 13 root root 155 11月 4 02:28 usr
drwxr-xr-x. 20 root root 282 11月 4 02:38 var
这是我的一个文件内容
[huan@192 桌面]$ wc -l test.txt
30 test.txt
统计一个下,一共有30行!学以致用
[huan@192 桌面]$ tail test.txt
drwxr-xr-x. 4 root root 87 11月 5 17:44 opt
dr-xr-xr-x. 218 root root 0 11月 12 11:01 proc
dr-xr-x---. 15 root root 4096 11月 12 13:59 root
drwxr-xr-x. 42 root root 1320 11月 12 11:03 run
lrwxrwxrwx. 1 root root 8 11月 4 02:28 sbin -> usr/sbin
drwxr-xr-x. 2 root root 6 4月 11 2018 srv
dr-xr-xr-x. 13 root root 0 11月 12 11:02 sys
drwxrwxrwt. 33 root root 4096 11月 12 16:25 tmp
drwxr-xr-x. 13 root root 155 11月 4 02:28 usr
drwxr-xr-x. 20 root root 282 11月 4 02:38 var
在我什么选项都没写的时候,默认显示这个文件的最后五行
[huan@192 桌面]$ tail -3 test.txt
drwxrwxrwt. 33 root root 4096 11月 12 16:25 tmp
drwxr-xr-x. 13 root root 155 11月 4 02:28 usr
drwxr-xr-x. 20 root root 282 11月 4 02:38 var
加上-num的参数,注意这个参数是一个具体的数值,-3,显示最后三行数据
接下来看f这个参数
这个参数是跟踪的意思,实时跟踪这个文件。
[huan@192 桌面]$ tail -3f test.txt
drwxrwxrwt. 33 root root 4096 11月 12 16:25 tmp
drwxr-xr-x. 13 root root 155 11月 4 02:28 usr
drwxr-xr-x. 20 root root 282 11月 4 02:38 var
我让他显示后三行内容后,这个命令还在执行,这时就需要再打开一个终端,往这个文件里面写东西,同时之前打开的终端还会继续显示
我在另一个终端中执行
[huan@192 ~]$ echo "i like linux" >> 桌面/test.txt
然后再看之前打开的终端,会发现刚刚写的语句显示了出来
[huan@192 桌面]$ tail test.txt
drwxr-xr-x. 4 root root 87 11月 5 17:44 opt
dr-xr-xr-x. 218 root root 0 11月 12 11:01 proc
dr-xr-x---. 15 root root 4096 11月 12 13:59 root
drwxr-xr-x. 42 root root 1320 11月 12 11:03 run
lrwxrwxrwx. 1 root root 8 11月 4 02:28 sbin -> usr/sbin
drwxr-xr-x. 2 root root 6 4月 11 2018 srv
dr-xr-xr-x. 13 root root 0 11月 12 11:02 sys
drwxrwxrwt. 33 root root 4096 11月 12 16:25 tmp
drwxr-xr-x. 13 root root 155 11月 4 02:28 usr
drwxr-xr-x. 20 root root 282 11月 4 02:38 var
[huan@192 桌面]$ tail -3 test.txt
drwxrwxrwt. 33 root root 4096 11月 12 16:25 tmp
drwxr-xr-x. 13 root root 155 11月 4 02:28 usr
drwxr-xr-x. 20 root root 282 11月 4 02:38 var
[huan@192 桌面]$ tail -3f test.txt
drwxrwxrwt. 33 root root 4096 11月 12 16:25 tmp
drwxr-xr-x. 13 root root 155 11月 4 02:28 usr
drwxr-xr-x. 20 root root 282 11月 4 02:38 var
i like linux
如果我们要终止命令,CTRL+C
课后练习
请使用cho并配合反引号,输出内容:我当前的工作目录是:
具体的工作目录路
[huan@192 ~]$ echo "我的工作目录是:`pwd`"
我的工作目录是:/home/huan
这里还是在考察飘号的使用,被飘号包围的内容可以当成命令使用,pwd也必须是命令才可以
并结合重定向符,将输出结果覆盖写入Work.txt文件
[huan@192 ~]$ echo "我的工作目录是:`pwd`" > work.txt
[huan@192 ~]$ cat work.txt
我的工作目录是:/home/huan
一个>表示覆盖
请使用echo输出任意内容并追加到work.txt文件中
[huan@192 ~]$ echo "啦啦啦" >> work.txt
[huan@192 ~]$ cat work.txt
我的工作目录是:/home/huan
啦啦啦
两个>> 追加
通过tail命令持续跟踪文件内容更改
[huan@192 ~]$ echo "i like linux" >> work.txt
追加-f,结束命令CTRL+F
vim编辑器
vi\vim编辑器介绍
vi\vim是visual interface的简称,是Linux中最经典的文本编辑器
同图形化界面中的文本编辑器一样,vi是命令行下对文本文件进行编辑的绝佳选择。
vim是vi的加强版本,兼容vi的所有指令,不仅能编辑文章,而且还具有shell程序编辑功能,可以不同颜色的字体来辨别语法的正确性,极大方便了程序的设计与编辑性
在我没有学习Linux之前就听说过vim,有大佬说有很多大厂面试的时候会让你用vim写代码
Windows有文本编辑器记事本,那么Linux的文本编辑器就是vi\vim
vim好用是真的好用,难用也是真的难用,我现在体会不到哪里好用。但是也不难用,需要记住命令。不然寸步难行。
vim是vi的加强版本,所以现在经常使用vim
vi\vim编辑器的三种工作模式
命令模式(Command mode)
命令模式下,所敲的按键编辑器都理解为命令,以命令驱动执行不同的功能
此模式下,不能自由进行文本编辑。
输入模式(Insert mode)
也就是所谓的编辑模式、插入模式
此模式下,可以对文件内容进行自由编辑
底线命令模式(Last line mode)
以: 开始,通常用于文件的保存,退出。
这是vi\vim的三种模式
之前不知道什么是vim的时候,我打开一个文件都是不可以编辑,我以外是我的电脑坏了,还是,但是我的电脑按键又可以用
在打开一个文件的时候,会先进入命令模式。只能浏览文件,不可以编辑文件。现在我才知道原来快捷键是在命令模式下使用的。但是我没用过。
命令模式下可以按i、a、o可以进入编辑模式,对文件进行编辑。也可以按: 进入底线命令模式,这个主要用于文件的保存和退出。
在编辑模式下,按下esc键,就退出编辑模式。这个时候可以用命令模式也可以用底线命令模式。
在底线命令模式下按下回车就是确认。
vi编辑器的快速体验
通过vi\vim命令编辑文件,就会打开一个新的窗口,此时的窗口就是:命令模式窗口
命令模式是vi编辑器的入口和出口
- 进入vi编辑器会进入命令模式
- 通过命令模式输入键盘指令,可以进入输入模式
- 输入模式需要退回到命令模式,然后通过命令模式可以进入底线命令模式
学习vi的使用,第一步要明白vi的三种模式切换,命令模式、输入模式、底线命令模式
在打开文件的时候会先进入的界面就是vi的命令模式,在这个里面可以使用快捷键秀翻全场。
按下i,还有其他的什么键,就可以进入编辑模式,用来码字板砖。
按下:,进入底线命令模式,并且搭配一些命令可以对文件进行整体操作,保存、退出什么的。
注意在命令模式下按下i(还有其他三个键)进入编辑模式;按下: 进入底线命令模式
在编辑模式下只能按下esc,才能回到命令模式
- 使用:vim hello.txt,编辑一个新文件,执行后进入的是命令模式
- 在命令模式内,按键盘i,进入编辑模式
- 在编辑模式内输入:itheima and itcast
- 输入完成后,按esc回退会命令模式
- 在命令模式内,按键盘: 会进入底线命令模式
- 在底线命令模式内输入:wq,保存文件并退出vim编辑器
[huan@192 桌面]$ vim hello.txt
用vi编辑文件的命令,如果文件存在,打开文件,如果文件不存在,那么创建文件并打开
~
~
~
"hello.txt" [新文件] 0,0-1 全部
打开文件后,会出现一个类似上面的代码。这就是命令模式,在左下角也会显示这是个新文件。"hello.txt" [新文件]
这个界面是不可以编辑的,一开始我就不明白为什么不可以用
现在按下i键,会有两个变化,
第一个变化,可以输入内容了,第二个变化
~
~
~
-- 插入 -- 0,1 全部
左下角的"hello.txt" [新文件] 变成了-- 插入 --
这个时候输入内容itheima and itcast
在输入模式下,按下一些功能按键是没有特殊功能的,比如i是进入输入模式,但我在输入模式下按下i,那就是输入i,并不会又进入输入模式。
现在退出输入模式,进入命令模式,因为在输入模式下使用命令模式或者底线命令模式都是不管用的,按下esc
itheima and itcast
~
~
~
1,18 全部
会发现无论是"hello.txt" [新文件] 还是-- 插入 --都不见了,现在可以执行一些命令(快捷键)、或者:。
接下来就是一些简单的快捷指令
按下两下yy+p是可以复制整行的,前提是光标要移动到需要复制的行上
两下dd,删除一行
u,撤销
现在要对文件保存退出。进入底线命令模式,怎么进入按下:
:
按下:后,底下会变成这样,接下来输入wq,w(保存)、q(退出)
:wq
可以验证一下,文件有没有存在
[huan@192 桌面]$ ls
hello.txt test test1 test2 test.txt
[huan@192 桌面]$ cat hello.txt
itheima and itcast
itheima and itcast
itheima and itcast
补充一点点
:wq
这个是保存并退出,也可以分开执行
:w保存,:q退出
在执行:w后
"hello.txt" 3L, 57C 已写入 3,1 全部
编辑器左下角的变化,其实vi并不是很难用,你的每一次操作都会有提示
命令模式快捷键
| 模式 | 命令 | 描述 |
|---|---|---|
| 命令模式 | i | 在当前光标位置进入输入模式 |
| 命令模式 | a | 在当前光标位置之后进入输入模式 |
| 命令模式 | I | 在当前行的开头进入输入模式 |
| 命令模式 | A | 在当前行的结尾进入输入模式 |
| 命令模式 | o | 在当前光标的下一行进入输入模式 |
| 命令模式 | O | 在当前光标的上一行进入输入模式 |
| 输入模式 | esc | 任意情况下输入esc都能回到命令模式 |
有六条命令可以进入到输入模式,有一条指令,可以退回到命令模式
这里要打开vim试一下
还有命令
| 模式 | 命令 | 描述 |
|---|---|---|
| 命令模式 | 键盘上、键盘K | 向上移动光标 |
| 命令模式 | 键盘下、键盘J | 向下移动光标 |
| 命令模式 | 键盘左、键盘H | 向左移动光标 |
| 命令模式 | 键盘右、键盘I | 向右移动光标 |
| 命令模式 | 0 | 移动光标到当前行的开头 |
| 命令模式 | $ | 移动光标到当前行的结尾 |
| 命令模式 | pageup(PgUp) | 向上翻页 |
| 命令模式 | pagedown(PgDn) | 向下翻页 |
| 命令模式 | / | 进入搜索模 |
| 命令模式 | n | 向下继续搜索 |
| 命令模式 | N | 向上继续搜索 |
| 命令模式 | dd | 删除光标所在行的内容 |
| 命令模式 | ndd | n是数字,表示删除当前光标向下n行 |
| 命令模式 | yy | 复制当前行 |
| 命令模式 | nyy | n是数字,表示复制当前行和下面的n行 |
| 命令模式 | p | 粘贴复制的内容 |
| 命令模式 | u | 撤销修改 |
| 命令模式 | ctrl + r | 反向撤销修改 |
| 命令模式 | gg | 跳到首行 |
| 命令模式 | G | 跳到行尾 |
| 命令模式 | dG | 从当前行开始,向下全部删除 |
| 命令模式 | dgg | 从当前行开始,向上全部删除 |
| 命令模式 | d$ | 从当前光标开始,删除到本行的结尾 |
| 命令模式 | d0 | 从当前光标开始,删除到本行的开头 |
底线命令模式
| 模式 | 命令 | 描述 |
|---|---|---|
| 底线命令模式 | :wq | 保存并退出 |
| 底线命令模式 | :q | 仅退出 |
| 底线命令模式 | :q! | 强制退出 |
| 底线命令模式 | :w | 仅保存 |
| 底线命令模式 | :set nu | 显示行号 |
| 底线命令模式 | :set paste | 设置粘贴模式 |
这里要注意强制退出是什么意思
无论用txt还是word或者是什么软件,在做完东西后,退出时会问你是否要保存文件,那么Linux也是有这个功能的
E37: 已修改但尚未保存 (可用 ! 强制执行) 18,81 顶端
我还记得一开始我用vi时,有时候总会给我提示这个提示,那个提示时英文,我看不懂,我直接关机开机
现在遇到这种问题有两种方法
一,:wq保存退出;二,:q1强制退出,这个不会对文件保存。
还有个设置粘贴模式,这个模式下复制的东西在粘贴时会保留原有格式,这个我还没有遇到过,不太明白用法
:set nu,显示行号,很舒服
以上就是vi编辑器的内容,一个简单的入门。
大佬们都是vi编辑器是最好用的编辑器,但是可能因为我是新手,体会不到,当有报错发生,我还是会手忙脚乱,不知所措。
总结
以上内容就是Linux的基础命令的学习笔记,但这里我已经写了有一万五的字,这是我写的最多的一回。代码占了大部分
Linux目录、没了入门、目录的表示方法这些我感觉是对Linux的一个了解。然后剩下的就是很多命令的学习了,想要学好Linux,离不开命令,所以我们应该牢记这些
举个简单的例子,让你用Windows打开一个文件,你肯定会想到鼠标双击,但是在Linux里面你应该一下子想到用哪个命令。虽然我现在还没到这种境界。
命令很多记不住,应该借助工具,百度搜索,无论是什么命令,都会遵守这么一个格式command [-aptions] [parameter],我们只是学会他的搭配即可,
还有vim,应该多练习
好了,我的笔记到此结束。
里面肯定有许许多多的bug,欢迎大家指出!毕竟这样成长更快。
也感谢大家可以看到这样,如果帮到了你,是我的荣幸。
谢谢大家!
本文详细介绍了Linux的基础知识,包括目录结构、路径描述方式、常用命令如ls、cd、pwd、mkdir、cp、mv、rm、grep、wc和管道符的使用。重点讲解了ls命令的参数和选项,以及文件和目录的操作。此外,还介绍了Linux命令行编辑器vim的基本操作,包括三种工作模式和常用快捷键。最后,通过实例展示了如何在命令行中查找文件和使用编辑器编辑文本。
1872

被折叠的 条评论
为什么被折叠?



