前言:
可涵开始Linux的新篇章旅行啦,本文主要介绍Linux下的基本指令~
引言:
何为Linux?
Linux是一种免费使用和自由传播的类UNIX操作系统。
那什么是操作系统呢?
操作系统是一款进行软硬件资源管理的软件。
为什么要进行软硬件管理呢?
对上提供良好的稳定的运行服务。------工具
我们下面开始学习Linux下的指令~
首先我们需要明确,我们现在学习的指令操作和图形化界面没有任何区别。
快速学习一些简单指令
1.who & whoami
who 查看当前有哪些人登陆了我是机器
whoami 查看当前账号是谁
2、clear
清屏
3、pwd
显示当前所处的工作目录
4、cd
切换路径。更改工作目录,后面跟上目录名,然后代表已经进入该目录
4、ls
查看当前目录下的文件信息
5、touch
创建文件的指令,后面直接跟创建文件的文件名
6、makdir
新建目录,后面直接跟上目录名
补充知识点:空文件是否占据磁盘空间?
问题:如果我今天在Windows上,建一个空文件,这个空文件要占据磁盘/固态硬盘的存储空间吗?
答案是空文件一定占据磁盘空间的
原因:
空文件的文件名、大小、属性数据本质也都是数据,也要被计算机记录下来!看到文件不要狭隘的看见文件的内容,文件的属性也是数据。
文件 = 文件内容 + 文件属性
注意这些内容全部都是二进制数据,都要被存储。
我们学习的所有的文件操作本质都是:
- 要么对文件内容做操作
- 要么对文件属性做操作
一、ls指令
ls -l指令:(注意前面有空格!)
可以直接简写成 ll
显示文件的属性列表
ls -a:
显示所有文件,a------all,包括隐藏文件
隐藏文件:以.开头的文件就是隐藏文件,当我们用ls -l是发现不了隐藏文件,只有用ls -al才可以显示出来。
注意ls -a -l 和 ls -l -a 和 ls -al 和ls -la 操作含义一模一样!
补充知识:Linux下的目录结构的认识
. 表示当前路径
..表示上级路径
注意任何一个目录下都有.文件和..文件,用于指向自己和上级目录,根节点的..也表示指向自己。
所以cd .. 表示返回上级路径,回退操作。
我们发现一直返回上级路径到最后只剩下 / ,/也是一个目录,并且是Linux的根目录
Linux的整体目录结构是一颗多叉树的样子。
什么是路径:
用路径分隔符分隔起来的文件夹所组成的一串字符串就是路径。
注意Linux下的路径分隔符是反斜杠 /
windows下的路径分隔符是正斜杠 \
路径分隔符之间一定是一个目录/文件夹
为什么要有路径?
因为路径具有唯一性,我们通过路径可以查找到我们想要的文件,路径的本质就是这一个多叉树的搜索路径。
对于路径更深的理解(与二叉树相结合)
- 叶子结点,一定是普通文件,或者是空目录
- 路上结点,非叶子结点,一定是目录
- 访问一个文件的本质,需要先找到它,找到文件的本质:就是在一棵多叉树中进行结点的查找。
绝对路径的概念:
我们将从/目录开始,定位一个叶子文件的方式从而形成的路径称为绝对路径。
相对路径的概念:
相对于自身当前所处的目录为参考点,我们定位一个文件的路径就称为相对路径。
cd命令
功能 :改变工作目录。将当前工作目录改变到指定的目录下
cd后面可以直接加上当前目录的文件名,表示进入该文件。
也可以加上..表示回退到上级目录
总结:
cd命令后面跟上绝对路径/相对路径即可!
cd的一些其他命令:
cd - :跳转回最近一次所处的目录。在两个目录之间快速跳转。(反复横跳)
cd ~进入用户的家目录。
什么是家目录?
windows中,我们C盘中有用户这个文件,打开后,其实就相当于进入了家目录。
Windows中,其实有桌面的概念,但是本质桌面也是目录/文件夹,只不过当用户登录的时候,你到家目录里面有桌面的文件夹,Windows把这个文件夹中的所有文件,以图标的形式,显示在显示器上,就有了桌面!
默认登陆的时候,默认登录所在的路径,就是当前登录用户的家目录。
stat指令:
查看文件更详细的信息。
ACM时间如何理解?
touch指令:
功能:
- 创建一个不存在的文件夹
- touch命令参数可以更改文档或目录的日期时间
mkdir指令:
mkdir-p后面可以直接创建路径
几个小细节:
ls -d 显示当前目录的信息
ls -ld 显示更详细的信息,包括属性
命令行中用上下键显示历史命令。
tree命令:
tree命令用图形化显示当前文件的树状结构!
删除命令:
rmdir删除空文件,如果不是空文件,不让删
rm -rf:r表示递归删除,因为文件的形式是二叉树,我们要递归到叶子结点,删除叶子节点,再往上遍历删除,f表示强制删除(force)
* 是通配符,表示指定路径下的所有文件!
加上*删除路径下的所有文件
以.开头的文件(隐藏文件)默认不会被删除。
想要删除指定文件名,rm后面要跟上指定的文件名
常用选项 :
-f 即使文件属性为只读 ( 即写保护 ) ,亦直接删除
-i 删除前逐一询问确认
-r 删除目录及其下所有文件
总结:
以后删除就用rm,后面加上文件名或者目录,-r表示删除目录,-f表示强制删除,-i表示删除前再确定一遍是否删除
man指令:
功能:
查询Linux手册页的命令,比如Linux操作系统中有一个man,我们有不会的操作指令就可问这个man。
用法:
man 手册编号 查找的内容
如果不写手册编号,默认从1开始,直到找到为止。
cp命令:
cp source destination
拷贝文件:
不能在相同目录下拷贝文件,不允许一个目录下有两个同名文件,除非后缀加上.bak表示备份文件
拷贝文件也不包含.开头的文件,因为每个文件下面都含有.文件和..文件,如果拷贝过去,会造成一个文件下含有相同的文件名,这与我们理念一个文件中不包含两个相同的文件名相悖!
拷贝目录:
默认cp只能拷贝文件,加上-r-f可以拷贝目录
注意:
拷贝文件/目录时,我们可以更改拷贝过去的文件名,只要保重是同级别,就表示更改文件名
当要被拷贝的目录后面加上/* ,就表示拷贝当前所有的文件!
nano指令:
后面加文件名,打开文件,进行书写
mv命令:
功能:
1、剪切文件
mv source dst
跟cp拷贝命令相同理解,如果dst是绝对路径,是跟source是同级,那么可以更改dst的文件名。
2、给文件重命名
利用剪切的操作给文件重命名,如果将一个文件剪切到不存在的文件名,就是将原来的文件重命名那个不存在的文件名
alias取别名
在命令行中取的别名,在Xshell关闭后,就自动销毁了
所以ll是l-s的别名。
echo命令
后面跟什么,就打印什么。
> 输出重定项
echo本来是将内容写入到显示屏上,加上>后,我们可以让其写入在文件中。(这就构成了输出重定项)如果是新的文件,就新建一个文件,然后将内容输入到文件中
每次先清空文件内容,再写入文件。
所以我们根据这个特性,可以新建空文件,并且清空目标文件
我们也可以在>前面什么也不写,代表新建一个空文件。
>> 追加重定项
跟>的区别是>>不会清空文件,而是在原始内容的基础上追加新的内容。
cat命令:
1、打印文件内容
2、cat-n 在输出时加上行号
3、cat和tac,后者反向打印
4、cat输入什么,就会自己打印什么
cat从键盘文件读取什么,就向显示器文件写入什么,默认读取的时候,是从键盘文件中输入的!
输入重定项 <
把本应该从键盘文件中读入的内容,更改成从普通文件中进行输入,输入重定项!
less指令:
1、less后面跟文件名,读取文件内容
2、/ 加上字符串,向下搜索字符串功能。
head/tail指令
head和tail就像他的名字一样浅显易懂,他们是用来显示开头或结尾某个数量的文字区块
语法:
如果head/tail直接跟上文件名,默认打印前10行/后10行。
如果加上-n,n自行输入,就表示打印前n行/后n行
| 命令行管道
将多组命令连接到一起,例如上面指令,是前80010行代码作为数据通过 | 这个管道,作为下一个命令的输入可以打印80000~80010行代码!