目录
Linux操作系统简介
Linux和windows区别
Linux常见命令
Linux目录结构
Linux命令提示符
常用命令
ls
cd
pwd
touch
cat
echo
mkdir
rm
cp
mv
vim
vim的基本使用
grep
netstat
Linux面试题
Linux操作系统简介
Linux操作系统是和windows操作系统是并列的关系。只不过只是两个操作系统的特性各有不同而已。
Linux和windows区别
- 开源VS闭源:Linux是开源的系统,其内核和大部分的软件的代码都是公开的,任何人都可以进行修改、查看。而windows操作系统则是闭源的商业操作系统,其源代码是不公开的,只有微软公司才能够进行修改等操作。
- 发行模式:Linux以发行版的形式进行发布,如Ubuntu、CentOS等,每个发行版都有自己的特点和目标用户群,而windows则是以单一的官方版本进行发布的,只不过是用户可以选择自己想要的版本,如windows10,windows11等。
- 用户界面:windows操作系统采用的图形化界面作为主要的交互方式,提供了直观的操作和良好的用户体验,Linux也提供了多种桌面的环境,但是Linux在图形化方面,还是比windows要落后一点。
- 应用程序和兼容性:Windows拥有庞大的应用程序生态系统,有许多商业软件和游戏专门为Windows开发。而Linux虽然也有许多优秀的开源和免费软件,但在商业软件和某些特定应用领域的支持上相对较少。此外,Windows在硬件和驱动程序的兼容性方面较为广泛,因为大多数硬件供应商更倾向于为Windows提供驱动程序。
- 安全性和稳定性:由于开源性质,Linux操作系统受到广泛的审查和贡献,具有良好的安全性和稳定性。相比之下,Windows由于其广泛的用户群和闭源性质,更常受到恶意软件的攻击,并可能面临一些安全和稳定性挑战。
- 部署和管理:Linux在服务器领域广泛应用,因其稳定性和灵活性。它通常被认为更适合于技术专业人员和系统管理员,需要一些命令行操作和配置知识。而Windows在桌面和家庭用户领域占据主导地位,提供了更简化和易用的界面和工具。
总体而言,Windows和Linux是两种不同的操作系统,各自有其优点和适用场景。选择哪个操作系统取决于用户的需求、技术背景和使用场景。
Linux常见命令
Linux目录结构
windows目录结构:
windows目录结构总体来说就是上图所示。
在Linux的目录结构中,没有盘符的概念,有的只是一个根目录 / ,在根目录下存放的就是一些具体的文件,在Linux中,会把一些硬件设备给抽象成文件的形式存放在硬盘上,于是在Linux系统中有这样的一句话,一切皆文件。
Linux命令提示符
常用命令
ls
ls list
ls list 作用就是列出当前目录/指定目录下的文件或者目录。对标windows中的双击某个目录,查看里面具有有哪些东西。
其中蓝色的是目录,白色的是普通文件。
在ls后面加上一个指定的路径,就可以查看指定路径下的内容。
/ 根目录,对标windows中的此电脑。
Linux中的任何一个文件都是在/ 根目录下存在的。
可以看到这里的效果和直接敲ls是一样的,也就是我们的以root身份登录后,默认所在的目录。
/root就是root用户的home目录。
使用ls -l 就可以查看其中的具体信息
此操作就对标windows中的显示详细信息。
Linux提供了 ll 命令。此命令等价于ls -l
上述的这些选项,也叫做命令行参数。
注意:命令行的参数与参数之间,需要一个空格进行分割。
cd
cd change directory 切换目录
在Linux系统中,磁盘上的文件和目录被组成一个目录树,每个节点都是目录或者文件。
其中相当于在windows中资源管理中双击了某个目录。
cd 后面跟上你想有切换目录的路径,这里的路径可以使用相对路径,也可以使用绝对路径。
随着cd的进行,所在的目录位置就是发生变化。
直接切换目录到跟目录下。
使用绝对路径的方式来切换目录
使用相对路径的方式来切换目录。
cd 后面不加任何的选项,就会直接跳转到当前用户的home目录。
cd 和 ls 是我们最常使用的命令之一。
pwd
这个命令是防止用户迷路的命令,此命令就是显示我们当前的完整路径。
这个命令对标windows中的鼠标在此电脑中的地址栏一点:
可以看出,鼠标在上面一点,就会显示出完整的路径。
在Linux中,pwd就是这个作用。
touch
touch 创建一个空白的文件
可以看到我们执行touch abc.txt命令之后,Linux并没有给我任何的反馈。
其实我们不必惊慌,在Linux中,没有消息就是最好的消息。我们的这个命令是执行成功的。
cat
cat 读取文件的内容
注意:此命令如果读取短小的文件还好,如果使用此命令读取文件特别大的文件,cat就很不方便了。
cat命令是做了两件事:
1:读取硬盘上的文件。
2:把这个文件全部显示在终端里面。
那么如果说这个文件特别大,我们一次性的把很大的文件全部读取完成,在把文件里面的信息全部显示在终端上。此时消耗的时间是比较大的。
我们使用cat命令读取/etc目录下的一个文件的效果。
添加命令行参数 -n 就是我们给我们读取的文件内容添加上行号。
echo
echo 此命令用来写文件的
上述命令我们使用echo 把hello 写入到abc.txt文件中去。
此时我们再次使用cat命令查看:
可以看到hello已经在abc.txt这个文件中去了。
当时我们每次执行echo命令的时候,都会清除原来的内容。
可以看到hello已经被清除了,只剩下后面ehco的world了。
注意:echo和cat这样的命令,只是适用于对简单的文件进行操作,如果文件比较大和复杂,echo和cat就是不适合了。
mkdir
mkdir 创建目录
此命令对标windows中的右键,新建文件夹。
我们执行mkdir ddd 之后,就已经创建好了一个目录。
我们可以添加命令行参数 -p 当我们添加了命令号参数 -p 之后,系统会给我们自动的递归创建目录。
这个命令就是在当前目录下创建aaa目录,在aaa目录下创建bbb目录,在bbb目录下创建ccc目录。
rm
rm remove 删除文件/目录
当我们在执行rm 的时候,指定了要删除的文件之后,系统会让我们确定是否删除。
我们可以使用命令行参数 /r 进行递归删除
此命令在删除目录的时候,需要同时删除所有的文件和子目录。
这里的命令行参数 -rf 就是强制删除,不进行询问。
注意:在Linux中,没有回收站的概念,如果删除了,那么就是彻底的删除了。
根目录 / 是我们Linux中的最顶级节点了,如果把这个目录强制不询问的进行删除,那么这个Linux系统算是废了。彻底的废了。 慎用
cp
cp copy 复制
cp 用于复制文件或者目录。
当前目录下有一个 a.txt 文件,我们把这个a.txt文件复制一份同时改名为a1.txt。
cp 后面有两个参数,一个是源文件,一个是要往哪里去复制。
此处就是把a.txt复制一份,同时重命名为a1.txt。
cp 不光可以复制文件,还是可以进行目录的复制的。需要注意的是,在复制目录的时候,必须要添加命令行参数 -r
我们现在把aa目录同aa目录下的hello.txt文件复制到bb目录中。
可以看到我们是把整个aa目录都复制到bb目录下。
mv
mv 剪切文件或者目录
mv命令可以在进行移动的时候,去进行给目标文件设置名称(一边移动,一遍改名)。
可以看到,如果是要移动的源和目标在一个目录下,这个时候就是单纯的改名字了。
我们也就是在移动的过程中进行改名操作。
上述操作就是我们把当前目录的a.txt文件剪切到aa目录下,并重命名为a3.txt。
vim
vim 进行文件的编辑
vim是Linux上自带的文本编辑器,相当于windows上的记事本。
vim的基本使用
- 打开文件
- 编辑文件
- 保存退出
上述的三个vim的操作是最基本的使用。
1:打开文件
使用vim 文件名/文件路径
当我们执行了上述命令时,系统就是使用vim打开这个文件。
此时由于这个文件里面什么都没有,这里就是空白的。
2:编辑文件
在进行文件的编辑之前,我们先要知道vim的三种模式。
- 普通模式
- 插入模式
- 命令行模式
我们当打开的文件的界面,就是普通模式。在这个模式下,我们是无法进行数据的插入的。
要想进行数据的写入,必须切换成插入模式。
要切换插入模式其实非常简单,只需要按键盘上的 i 键就好了。
可以看出当我们按了i键之后,下面就变为install。此时就是插入模式,我们就可以进行数据的写入了。
此时当我们把数据写入之后,该保存退出了。
想要保存退出,就需要进入到命令行模式。
进入命令行模式其实也很简单,只需要按键盘上的esc键进行普通模式。然后再普通下输入:
现在就进入到命令行模式了。
然后我们在输入wq。wq也就是写入退出的意思。然后这个文件就成功的写入,并保存了。
然后此时我们在进行查看这个文件的内容:
可以能看到我们写入的数据了。
grep
grep 字符串匹配
grep 快速搜索某个文件中,是否有匹配的特点的字符串。
可以看到,当我们在a2.txt这个文件中查找“hello”这个字符串的时候,就会出现查找这个文件,然后就会把匹配成功的显示出来。当我们在添加一个命令行参数 -n 后,就会在在前面添加行号。
grep 还可以对多个文件进行搜索。
ps
ps 查看进程
但是ps查看的内容非常有限,我们可以添加一些固定的选项。
使用ps aux 就能列出系统上所有的进程。
可以看出结果是非常多的,不只是上图显示的这些。
但是很多时候,我们并不关心操作系统上的所有进程,我们只是想看咱们自己的进程。就可以配合grep命令来使用了。
比如我们想要查询mysql的进程。
这里的 | 是管道符,作用是把前一个命令的输出作为后一个命令的输入。
netstat
netstat -anp 查询网络状态。包括端口等等。
可以看到信息同时也是非常多的,我们这里只是一部分。
这个命令也通常搭配grep来使用。
比如我们想要查询mysql的端口号,就可以使用netstat命令加上grep来查询。
ps 和 netstat 两个命令通常都是会搭配grep来使用的。
通过ps来查询某个进程的pid
通过netstat来查询某个进行的端口号
Linux面试题
1:如何给定进程名,查询对应进程的pid
比如:Tomcat
2:如何给定进程名,查询对于绑定的端口号
比如: MySQL