[Linux]基本指令
文章目录
0. 前言
用云服务器配置的Linux系统默认就是使用命令行界面,而不是像常用的Windows操作系统使用的图形化界面,命令行界面更多的是使用键盘敲下指令,图形化界面更多的是使用鼠标去点击,实际上Linux和Windows都是操作系统,都有图形化界面和命令行指令界面。
如果想要查看Windows下的命令行界面,按下Win+x键:
在弹出的界面选择Windows powershell,就会看到Windows的命令行界面:
并且Linux下的指令在Windows下一样有效,既然Linux和Windows那么相似,为什么学习Linux不用更方便的图形化界面?因为在实际开发中,Linux系统是不会有图形化界面的,只能通过指令来时使用Linux系统,这就是为什么要学习Linux的指令。
关于如何配置Linux环境戳这里:https://blog.youkuaiyun.com/csdn_myhome/article/details/127906854
1. 使用前准备工作
在配置好Linux系统后,开始使用前,需要做一些准备工作
1.1 配置登录用户名和IP
在上面给出链接的如何用云服务器配置Linux文中,只提到了,如何用ssh root@ 公网IP的方式以root身份登录,但实际上还有其他的登录方式,就是通过添加用户:
成功添加用户后,可以在下图位置打开此用户。
选择你要使用的用户。
输入登录的用户名
除此之外,每次打开Xshell时,也可以通过选择用户登录的方式:
当然除了添加用户也可以删除用户:
在右键后的界面选择删除即可。
1.2 更改主题、字体、颜色
1.3 全屏快捷键
Alt + Enter键
2. 关于操作系统
由于Linux是一种操作系统,因此需要对操作系统有一定的了解。
作为程序员每天都在使用电脑,在使用电脑时不知道大家有没有思考过一些问题,为什么电脑每次开机都需要等待一段时间,而不是连上电源直接就能使用?开机等待的过程是在做什么?世界上开机的过程就是操作系统的准备过程,电脑需要准备好操作系统才能使用。
为什么新买的鼠标或键盘第一次连接电脑时,可能不能正常使用或者过一会才能使用?这实际上是驱动和硬件的适配问题。没有驱动程序,硬件就无法正常的使用,每个硬件都有配套的驱动程序。
为什么Linux和Windows的使用方式一个是指令为主,一个图形化界面为主?这是由于操作系统向用户提供的形式不同。
计算机实际上是一个层状结构:
驱动程序驱动着硬件,操作系统管理着驱动程序并且管理和给用户提供服务。
我们写的代码和程序都是存在用户层面的。
操作系统是负责管理软硬件的软件。
操作系统存在的意义:
操作系统对软硬件进行合理的管理(手段),以达到为上层用户提供良好、稳定、安全的运行环境(目的)。
计算机是一个复杂的工具,必须要有操作系统这样的东西来很好的管理。
3. ls指令
语法: ls [ 选项 ] [目录或文件]
功能:对于目录,该命令列出该目录下的所有子目录与文件。对于文件,将列出文件名以及其他信息。
(类似于Windows下打开文件夹查看文件夹内容)
常用选项:
- -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 一行只输出一个文件。
键盘下输入ls显式当前目录下的文件列表(包括目录,普通文本文件…)
键盘下输入ls -l可以显示当前目录下的文件的详细信息:
-l是一个命令选项,一个指令可以没有指令选项,也可以有一个或很多个命令选项。
输入ls -l显示的文件信息很多,为了更好的理解这些信息,我们先来看看Windows下的文件信息
在Windows的文件夹下,创建一个空文件
图中显式大小为0,是否意味着创建一个空文件那么该文件的大小就是0呢?实际上这个想法是错误的,右键文件点击属性查看文件的详细信息:
详细信息中有很多内容,这些内容也是需要存放在硬盘内的,也就是说这个空文件也是占用空间的,这个空间用于存储文件的属性信息,那为什么前面还显示文件大小为0呢?是因为0所指的是文件的内容信息,由于我们没有写入数据,因此显示文件大小为0。
打开空文件写入数据:
文件大小改变了,图中大小显示的文件内容大小,而我写入了数据,因此文件大小改变,至此我们应该明白:
文件 = 内容 + 属性
现在再来看前面的详细相信:
这些详细信息就类似于在Windows下打开文件属性查看的详细信息。
Linux下文件/目录名以.开头的是隐藏文件/目录。
直接输入ls指令是无法查看到隐藏文件的,需要加上-a的命令选项。
命令选项也可以写在一起。
在Windows下当然也有相同的操作:
Windows下隐藏文件通过设置也就可以查看了。
4. mkdir 指令
语法:mkdir [选项] dirname…
功能:在当前目录下创建一个名为 “dirname”的目录
常用选项:
-p, --parents 可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立 好那些尚不存在的目录,即一次可以建立多个目录;
用mkdir指令创建一个mydir的目录,再用ls指令查看目录下是否有mydir目录,这个指令类似于Windows下的新建文件夹。
如果想要创造连续的目录,直接创建是不被允许的:
加上-p命令选项就可以了:
5. pwd指令
语法: pwd
功能:显示用户当前所在的目录
常用选项:
无
输入pwd指令就能显示当前所处的目录:
不同于在Windows下查看文件夹,在文件查看时是显式的知道文件路径的:
在Linux是不显示当前所处的目录,因此需要pwd指令知道当前所处的目录下,建议pwd指令要在每次打开Linux时使用一下,避免在错误的目录下找不到目录/文件或者错误操作。
6. cd指令
**语法: ** cd 目录名
功能:改变工作目录。将当前工作目录改变到指定的目录下。
cd指令改变目录,就类似于Windows下打开进入文件夹:
在Linux下,不管我们cd进入哪个目录都会有.和…目录:
.其实是当前路径,…是上级路径
由于.是当前路径,cd .还会留在当前目录下,而…是上级路径,cd …会进入上一级目录,通过不断cd …,可以不断回退到上一级目录。
上图中的过程就类似于cd … 的操作。
前面提到了,cd命令能改变当前所处的目录,如何用cd命令进入到想要到的目录下呢?
关于这个问题,不得不提到一个概念,为了方便理解,还是用Windows系统去举例:
假设我们要找下图中的Project1文件夹应该如何去找呢?
通过观察下图可以看出,到达Project1文件夹是需要按一段文件夹顺序去寻找的:
这个文件夹打开顺序称之为路径。
寻找这个文件夹可以从电脑的总文件夹下开始按照路径一步步寻找,叫做按照绝对路径寻找:
但如果我们所处的文件夹到要到的文件夹只需要打开一个或两个文件夹,还有必要从电脑的总文件夹中寻找吗?当然是不需要的。
比如当前处于这文件夹:
只需要打开两个文件夹就到了要找的文件夹:
这个从某一文件夹下去寻找要找的文件夹,叫做按相对路径寻找。
看完了Windows下的,再来看Linux下的:
通过pwd指令查看当前目录。
首先将Linux和Windows进行对比:
Linux: 以 / 作为路径分隔符
Windows: 以 \ 作文路径分隔符
若要找到图中的testdir目录和Windows下一样可以通过绝对路径寻找也可以通过相对路径寻找:
Linux下总的目录是 / 根目录。
绝对路径:使用起来麻烦,一般在配置文件中采用,保证绝对的正确性。
相对路径:使用起来简单,常用的路径定位,使用时需要注意自身所处的目录。
cd ~指令是到达用户目录下的一种方式,由于使用的是root用户登录cd ~会来到root目录:
如果是用普通用户登录cd ~命令会带到/home目录下的用户目录
cd -指令是回到最近上一次所在的目录下:
7. tab快捷键
tab快捷键可以提供信息:
- 输入不完整的指令,按两下tab,会显式相关的所有指令
输入a连按两下tab会显示a开头的所有指令:
-
可以在不进入目录的情况下查看某一路径下的目录
cd加路径加连按两下tab可以显示该路径下的所有目录
8. tree指令
语法:tree [路径]
功能: 显示该路径下的目录以及后续的所有目录和文件以树状形式显示。
输入tree .显示当前目录下以及后续所有目录和文件
可能你的Linux下没有tree命令会显示命令不存在:
此时你需要安装tree命令,安装tree命令只需要在Linux下输入 yum install -y tree Linux就会自动下载。(可能有配置Linux用的是Ubuntu 的那需要把yum换成 apt-get)。输入命令会显示一个下载安装的进度:
有了tree命令,肯定会有程序员tree根目录,由于根目录内容过于庞大,会一直显示很长时间:
此时就需要知道ctrl + c键可以将不断进行的指令停止:
9. touch指令
语法:touch [路径]… 文件名…
功能:在路径下创建一个普通文本文件。
10. nano指令
**语法:**nano 普通文本文件名
**功能:**以类似记事本的形式打开一个普通文件
事先touch出了一个test.c的普通文本文件,然后nano test.c打开:
可以像使用记事本一样写入数据:
如果像退出按下ctrl + x(^ 就表示ctrl):
系统会提示是否确认修改文件内容,确认修改输入y,不想修改输入n:
按下回车退出:
由于是云服务器配置的Linux一般都自带nano,如果没有nano需要输入yum install -y nano指令安装。
如果想要知道自己的Linux系统下是否有nano,只需要输入nano回车:
在写好代码好,如果想运行代码,先使用gcc编译一下:
编译后生成了一个叫a.out的可执行程序,输入./a.out(意思是执行当前路径下的可执行程序)运行它:
11. cat指令
**语法:**cat 普通文本文件名
**功能:**打印普通文件的内容
12. stat命令
**语法:**stat 文件名/目录民
**功能:**显示文件/目录的所有属性
13. rmdir指令
前面学习的都是怎么创建文件/目录,现在看看如果删除文件/目录:
语法: rmdir + 空目录名
适用对象:具有当前目录操作权限的所有使用者
**功能:**删除空目录
常用选项:
- -p 当子目录被删除后如果父目录也变成空目录的话,就连带父目录一起删除。
由于rmdir只能删除空目录,因此只能在一些特定的场景下使用。
删除非空目录无效:
删除空目录有效:
14. rm指令
**语法:**rm + 文件名/目录名
适用对象:所有使用者
功能:删除文件或目录
常用选项:
- -f 即使文件属性为只读(即写保护),亦直接删除
- -i 删除前逐一询问确认
- -r 删除目录及其下所有文件
删除一个普通文本文件,只需要rm + 文件名,然后在输入y确认删除:
直接rm+目录名是无法删除目录的:
加上-r(表示递归)的命令选项后,即可删除目录,但是需要确认是否删除:
像上图中总是要询问是否确认删除,十分的麻烦,可以加上-f强制删除命令选项: