目录
[编辑 tail指令](#编辑 tail指令)
本期开始,我们将进行Linux操作系统的学习。
什么是Linux?
Linux可能很多小伙伴都听说过,Linux是什么呢?
Linux是一种自由和开放源代码的类UNIX操作系统,该操作系统的内核由林纳斯托瓦兹在1991年首次发 布,之后,在加上用户空间的应用程序之后,就成了linux操作系统,严格来讲,Linux只是操作系统 内核本身,但通常采用"Linux内核"来表达该意思。而Linux则常用来指基于Linux内核的完整操作系统, 它包括GUI组件和许多其他实用工具。总的来说,Linux就是一个开源的很nb的操作系统。
Xshell如何远程控制云服务器
在讲述基本指令之前,我们得自己先在相关网站购买云服务器,购买了云服务器(腾讯云,阿里云,华为云都可以,根据自身情况选择)之后,这个服务器是存放在商家那边的,我们要使用必须使用一款名叫Xshell的软件,使我们可以在自己的电脑上远程控制这些我们购买的云服务器。
Xshell远程连接云服务器
step1:购买云服务器之后,以华为云为例,点击控制台,可以看到实例
step2:点击实例,第一次进入,建议重置密码,并且记住这个公网ip,这使我们在Xshell上要输入的主机ip
step3:安装好Xshell之后,运行Xshell,点击左上角添加按钮,就可以配置云服务器了
step4:点击文件夹,可以看到我们之前创建的会话,点击连接,即可连接远程服务器。
step5:点击连接,之后会让输入用户名,这里只要是第一次登录,用户名都是root,即系统的最高权限拥有者,点击确定之后,会让输入密码,密码就是刚刚我们重置后的密码。如果忘了没关系,继续返回step2重置密码即可。
step6:点击确定,登录成功即可看到下列界面,此时我们就已经远程连接上了云服务器,我们就可以利用Xshell,通过基本指令来远程操控我们的云服务器进行相关的操作了。
Linux基本指令
用户管理指令
如果我们以root的身份进入了服务器之后,因为一个服务器可以供多个成员使用,如果我们还想添加其他成员怎样添加呢?添加之后,用户又怎样删除呢?
//添加用户
# adduser yjd
//添加用户密码
# passwd yjd
//删除用户
# userdel -r yjd
注意:在我们添加用户密码时,我们是看不见密码的,正常输入就行。在Xshell中复制时ctrl+ins按钮,粘贴是shift+insert按钮。
pwd指令
**pwd:**展示当前目录。
touch指令
**touch:**创建文件指令,只能创建普通文件,不能创建目录(文件夹)。
更新文件的最新创建时间。
mkdir指令
mkdir:用于创建目录。
**mkdir -p:**创建多级目录。
ls指令
文件=内容+属性。没有内容的文件的大小也不一定为0,因为还要考虑文件的属性信息,属性信息也是占内存的。
ls:对于目录:展示当前目录下的所有子目录的名称属性和所有文件的名称属性。
对于文件:展示文件的名称属性和其它信息。
**ls -l:**以列表的形式展示当前目录下的子目录和所有文件的所有属性。注意与ls的区别,ls只展示文件名属性。
ls -a: -a表示显示当前目录下的隐藏文件,Linux下,以**.**开头的文件我们称之为隐藏文件。
**ls -a -l:**表示显示当前目录下的隐藏文件,并以列表的形式展示当前目录下的所有文件的更多属性。
ls -a -l 目录名:展示当前目录里的内容及其相关属性。
ls -a -l -d 目录名:展示当前目录的相关属性。
ll:ll 等价于**ls -l,**相当于ls -l的别名。
cd指令
绝对路径 :从根目录开始的路径,这个路径具有唯一性,一定可以找到相关目录和文件。
相对路径:从当前目录开始进行索引的路径。
找到一个相同的文件,只能有一个绝对路径,但是可以有多个相对路径。相对路径不能唯一的标识一个文件。
**cd:**切换目录。cd后可以跟相对路径/绝对路径。
**.**表示当前目录。
**..**表示上级目录。
**cd -:**记录最近从哪里来的目录。进行当前目录与上次目录的切换。
cd ~:查看当前用户的工作目录。
对于root用户而言:工作目录一定为**/root**
对与普通用户而言:工作目录一定为**/home/xxx**
rm指令
**rm:**删除普通文件。
rm -r:删除当前目录及递归删除当前目录下的所有文件。
**rm -f:**强制删除。
**rm -rf:**强制递归删除目录及其下所有文件。
注意:rm -rf这个指令一定要谨慎使用,如果不小心递归删除了根目录,操作系统就会崩溃。
man命令
在C和C++中我们有专门的MSDN手册要,用于查看先关的函数和语法如何进行使用,在Linux中我们也有相关的手册,如果我们想看一个指令的用法是怎样的就要用到man指令。
man手册总共有8章:
是普通的命令
是系统调用,如open,write之类的(通过这个,至少可以很方便的查到调用这个函数,需要加什么头文 件)
3.是库函数,如printf,fread
4.是特殊文件,也就是/dev下的各种设备文件
5.是指文件的格式,比如passwd, 就会说明这个文件中各个字段的含义
6.是给游戏留的,由各个游戏自己定义
7.是附件还有一些变量,比如向environ这种全局变量在这里就有说明
8.是系统管理用的命令,这些命令只能由root使用,如ifconfig
**man :**因为man手册共有8章,我们默认是在第一章进行查找。**man num:**在num章进行查找。
不同的指令在不同的章节下进行查找,查找出来的结果是不同的。
cp指令
cp指令用于文件的复制。
**cp src dest:**把源文件拷贝到目标文件。如果目标文件没有,则会生成直接生成目标文件。
**cp -rf:**可以进行目录间的复制。
**注意:**目录的复制和文件的复制,可以发生在同一个目录下,也可以发生在不同的目录下,只要带上相对路径或者绝对路径即可。
mv指令
**mv:**剪切的功能,可以剪切复制普通文件,也可以剪切复制目录。
**mv:**也可以用于文件或者目录的重命名。
cat指令
**cat:**查看文件内容。
**tac:**倒序查看文件内容。
head指令
**head:**如果没有给定行数,默认查看文件的前10行内容。
**head -num:**查看文件的前num行内容。
tail指令
**tail:**如果没有给定函数,默认查看文件的后10行内容。
**tail -num:**查看文件的后num行内容。
echo指令
**echo:**将字符串打印在标准输出上。
**echo 字符串 > 文件名称:**将本应该在标准输出上输出的内容,写入到了一个文件里,如果这个文件不存在,就会自动创建文件。
我们把本应该在标准输出上输出的内容写入到文件中的这种操作,称作输出重定向。
输出冲定性会清空原始内容,然后重新写入。
如果我们不想清空原始内容,想在之前的内容后面继续增加内容,此时我们就应该使用追加重定向。也属于输出重定向。只需要将之前输出重定向的**>改成>>**即可。
cat指令在读取文件内容时,如果没有指定文件,会从键盘读取内容,然后显示在标准输出上。
cat <: 从文件中读取内容,并打印在标准输出(标准输出可以理解为电脑屏幕)上,我们称作输入重定向。
我们知道cat可以查看文件的全部内容,如果我们现在要求不查看文件的全部内筒,也不查看文件的前num行和后num行内容,我们此时该怎么做呢?
大家可以先思考这样一个场景,有20个数,我们要拿到第6个到第10个数之间的所有数,我们应该怎样去拿呢?一种方法就是依次数下去,然后拿到这5个数,另一种方法就是我们先拿到前10个数,然后再去拿到这10个数的后5个数,这样也就会拿到这5个数。在实际操作中,我们一般使用第二种方法,因为当数据很多时,第一种方法的效率太低。
如果在文件test1.c中我们要拿到第6行到第10行的数据,代码如下:
注意: 这其中我们用到了管道的技术,单个 **|**我们可以称作管道,我们可以将前10行的数据先输出到管道,然后再将管道里的后5行的数据输出,此时我们就拿到了第6到第10行的所有内容。其实我们在使用管道技术的同时,也用到了隐式的输出重定向。因为前十行的数据没有在标准输出输出,而是将它输出到了管道类,跟之前输出到文件里类似。
find命令
**find:**按名称查找文件。
grep指令
**grep :**可以将指定的字符或者字符串,在相关文件中找到并打印出来。
**grep -v:**将不包含指定的字符或者字符串在文件中找到并打印出来。
**grep -i:**不区分大小写将指定的字符或者字符串找到并打印出来打印出来。
以上便是我们在Linux常用到的一些指令。
本期内容到此结束^_^