目录
Linux是一款开源的操作系统。其本身没有图形化界面,一切操作都需要使用命令行。因此其学习成本较高。但由于其本身具有免费、开源、安全性高等优点,在现实生活中大部分公司都是采用的Linux。因此,熟练的使用Linux系统是作为一名程序员必备的技能之一。
本文针对Linux初学者,将会对Linux中的常用操作进行讲解。
一、Linux安装
注意,此处由于自行安装Linux系统过于麻烦,需要用到虚拟机或者修改自己电脑的操作系统。由于这两种方法非常麻烦且可能出现将一定的问题,此处建议采用xshell + 云服务器的方式使用Linux。
1.云服务器购买
可以通过腾讯云,阿里云的方式购买云服务器。这些平台对于学生都有大幅度的优惠。
以腾讯云为例,在腾讯云官网搜索“云服务器校园套餐”
点进该活动后,选择第一个2核2G的就足够我们Linux的使用需求。Linux的学习是一个长期的过程,因此此处最好选择购买一年,避免反复购买。可以看到,这里的校园套餐是1折,优惠幅度还是很大的
当然,如果觉得65贵了,可以选择和同学一起拼单购买,因为Linux是支持多用户同时使用的
购买好后会弹出一个选择镜像和地点的界面,在这个界面中选择离自己近的地点和Centos7.6即可。
云服务器购买后的必要操作
在购买好云服务器后,一定要保存好你的云服务器的公网IP和重置root密码!
进入你的腾讯云控制台,单击轻量级应用服务器
(1)获取公网IP
进去后可以看到你的服务器,公网IP就在右下角
如果右下角没有,可以单击它然后进入云服务器详细界面。在这里的左上角就会有公网IP
(2)修改root密码
重新回到该页面,单击更多,这里有一个重置密码选项
进去后将用户名设置为root,密码修改成一个你自己记得住的密码即可
2.xshell安装
网页搜索“xshell”,点进官网,直接下载即可
注意,下载时点击“只需要xshell”即可。后续它会将下载链接发到你的邮箱里面
3. xshell上链接云服务器
xshell安装好后打开xshell。此时会有一个弹窗,不用管它,直接关掉即可。
关掉后我们直接在命令行中输入ssh root@你的公网ip。然后就会弹出下面的这个界面
在这里输入你重置好的root密码即可远程登录你的云服务器。注意,如果在登录过程中有任何弹窗,我们一律接受接受
(1)新建用户
在命令行中输入adduser 用户名,按下Enter:
在第二行输入passwd 用户名,按下Enter:
在这里的“New password:”后面输入你想设置的密码,这个密码最好与你的root账户密码不同。
注意,linux不同于windows下输入密码会显示“*”,linux下输入密码是什么都不会显示的
当出现以下命令行就是创建成功了:
此时你就创建了一个普通账户,可以供自己或他人使用
(2)删除用户
删除用户我们必须要登录root账户才能进行操作。
在root账户下删除一个用户,我们在命令行上输入:userdel -r 用户名。此时按下Enter,这个用户就直接被删除了
二、基本操作
在这里的基本操作中不会涉及在Linux中编写代码。因为Linux中的vim编辑器比较难使用,且涉及到很多操作,故不会放在这里的基本操作中。
同时,以下的操作都是默认使用的root账户,因为普通用户会受到许多权限的限制。在此处先使用root账户,等到将普通账户的权限和Linux配置好后再使用普通账户
注意,一条命令除了命令本身,还可以携带选项。因此下面的命令中可能也会涉及到多命令操作
1.文件和目录的创建
(1)创建文件
在Linux中,要创建一个文件的命令是"touch 文件名"。
注意,在Linux中,文件的后缀名是没有意义的,可以随意修改甚至不写。但是仅仅是在Linux系统中。在Linux中后面还会使用到其他软件,如gcc。这些软件有可能有后缀要求。因此最好还是按windows下的命名习惯写好后缀,这样也有利于我们自己辨识文件
“touch 已存在文件名”会更新对应文件的创建时间
(2)创建目录
1.单目录创建
创建目录的命令为“mkdir 目录名”:
2.连续路径创建
如果要创建一条连续的路径如“/a/b/c/d”,必须要用“mkdir -p 路径”命令,没有-p的话是无法创建的:
2.删除文件及目录
(1)rmdir命令
假设现在我们有以上目录,现在我们想删除空目录d1,就可以使用“rmdir”命令:
但是如果我们想要删除非空目录d,并使用rmdir命令:
此时就会提示删除失败,意思是“该目录不为空”。这就表明,rmdir只能删除空目录,不能删除非空目录
(2)rm命令
1.删除文件
现在我们有以上b.txt文件,如果我们想将它删除,就可以使用“rm”命令:
如果想在删除文件前让系统询问一下,可以加上“-i”选项,即“rm -i 文件名”:
(2)删除目录
rm命令同样可以删除目录。但是由于目录在系统中是递归定义的,此处我们就要采用递归删除的方式。即加上“-r”。使用“rm -r 目录名”命令:
但是从上面的图中我们也看到了,在删除前系统会询问一遍是否删除。删单个文件还好,是一层保险。但是删目录时就会对每个目录及目录下的文件都询问一遍,非常的麻烦。为此,我们可以加上“-f”选项,即“rm -r -f 目录名”,无需询问直接删除:
也可以组合选项写成“rm -rf 目录名”
注意:
rm -rf可以删除根目录,不要尝试去删除根目录。即不要尝试“rm -rf /”命令。删除根目录后会导致系统崩溃等一系列严重问题
同时要记住,linux下删除文件或目录不同于windows。windows下删除后可以去回收站回收,但linux没有回收站,虽然有办法恢复,但非常麻烦耗时
3.目录和文件的显示及进入
(1) 显示当前用户所处路径(目录)
如果在使用Linux的时候不知道自己所处的路径,就可以使用“pwd”进行查看:
可以看到,输入pwd后就会显示你当前所处路径,此处就是表明我正处于root路径下
(2) 查看当前目录下的文件或目录
当我们明确了自己所处路径后,想要查看当前路径下的文件或目录时,输入命令行“ls”:
ls这条命令也可以配合其他选项。
1.ls -l
ls -l。这条命令可以显示除了文件名以外的更多属性信息:
2.ls -a
而“ls -a”则可以显示隐藏文件:
3.ls -a -l
这些选项也是可以多个一起组合的,如“ls -a -l”:
4.ls -ld
ls命令后面跟文件名可以只显示该文件:
这样单写一般没什么意义,因此都会跟选项一起走。但有时候我们想显示目录的信息,但又不想进入该目录,就要使用“ls -ld “目录名”命令:
Linux下的大部分选项都是可以合并的。 ld其实就是-l和-d的组合。因此也可以写成“ls -l -d 目录名”。
5.ll
在linux下,ls -l这条命令可以简写为ll,两条命令没有什么差别:
当然,还存在许多其他选项,这里就不一一列举了
(3) 切换目录
注意,在Linux中,目录会用其他颜色标明。如我这里的Linux中的目录就是蓝色字体,普通文件则是白色字体:
“cd 路径”可以直接进入对应的目录下,目录之间要用“/”分隔:
cd命令只能用于进入目录,不能用于打开文件
(4)两个路径之间来回跳转
cd命令还有一种用法,就是“cd -”。这条命令可以返回上一次所处的路径:
该命令的多次使用可以在两条路径之间来回切换。由此,该命令一般是需要在两条路径之间频繁切换时使用的
(5)隐藏文件
可以看到,在查看隐藏目录及文件时,会出现这么两个目录:“.”和“..”。.和windows中的文件一样,,都是标志着隐藏文件。但这里的却是隐藏目录。这里的“.”指的是当前目录,“..”则是指上级目录。
由此,“..”便可以配合cd命令使用:
“cd ..”就是指回到上级目录
(6)以树状结构显示目录
在有时,我们可能文件和目录写的太多导致忘记了对应的文件放在哪个位置,此时我们就可以使用tree命令,即“tree 文件名”:
使用tree命令就可以显示对应的目录下的所有路径
如果tree后面不跟任何文件名,则显示当前目录下的所有路径:
但是,这条命令有些人可能用不了,原因是你的Linux中并没有安装这条命令。普通账户因为没有进行配置,所以可能会出现权限不足无法安装的情况。这里我们默认使用的是root账户。
要安装tree命令,执行“yum install -y tree”即可
(7) 查看文件详细信息
要查看当前路径下一个文件的详细属性信息,可以用“stat 文件名”查看。但如果是要查看其他路径下的文件,则需要“stat 路径”:
4.文件定位
以windows为例,一个文件夹中既可以存在另一个文件夹,也可以存在其他普通文件。而要找到一个文件,则需要一个文件一个文件的去翻,或者直接输入对应文件的路径。在Linux下, 也支持相应的操作
(1)绝对路径
绝对路径就是输入对应文件的唯一路径路线。现在我们有以下文件路径:
现在我们想找到parent目录下的可执行文件a.out,那么我们可以输入它的绝对路径:
每个文件都只有一个绝对路径,因此输入该文件的绝对路径就可以直接找到该文件。
(2)相对路径
如果每次都输入一个文件的绝对路径,那么在文件过多的情况下就会变得非常麻烦。为此,Linux也支持输入对应文件的相对路径——即可以以“..”的形式省略部分路径。当然,相对路径的使用需要自身就处在对应的".."路径的下一个路径:
此时我们正处于LinuxLesson下的dir目录中,此时如果我们想打开LinuxLesson的另一个目录parent下的a.out文件,就可以以输入“../parent/a.out”路径:
这两种方法只能用于定位文件,不能用于进入目录。要想进入某个目录,还是要使用cd命令
5.账户查询
(1)查询当前登录账户
使用“whoami”命令可以查看当前正在使用Linux的用户:
(2)查看当前系统中存在的账户
使用“ls /home”命令可以查看当前系统中除root以外的所有普通用户:
当然,我们也可以添加"-l"选项查看用户的详细信息:
(3)查看当前linux登录用户
不同于whoami是查看当前使用用户,“who”则是查看当前登录用户:
6.账户与目录相关操作
(3)区分root账户和普通账户
在Linux中,root账户的家目录为“/root”,而普通用户的家目录则为“/home/用户名”:
普通账户:
root账户:
当然, 还有一个方法,就是看命令行前的符号。从上图中我们就可以看到,普通账户命令行前是“$”;而root账户命令行前则是“#”
(4)用户返回自己的家目录
cd命令可以用来切换目录,当然也可以用于返回家目录。但是如果用户名比较长或者比较复杂,则比较麻烦。为此,Linux中可以使用“cd ~”命令直接返回家目录:
(5)账户回退
在linux下,如果我们想退出账户,可以按“Ctrl d”,这样我们就可以直接回退账户。而无需重启xshell
在这个界面,我们可以以“ssh 用户名@公网IP”的方式重新登录或登录其他账户
要注意,这个命令准确来说是账户回退,而不是账户退出。例如如果我们在root账户的情况下进入了一个普通账户,Ctrl d后就是返回root账户,而不是直接退回主页面重新登录
7.命令查询
(1)man命令
在将来,我们不可能知道所有的命令的用法。因此,linux系统提供"man 命令”来查询对应命令的用法,以“man touch”为例:
输入该条命令后,就会显示出touch命令的所有用法。要退出的话按“q”即可
当然,"man"命令不仅可以查询命令,也可以查询linux内的函数、系统接口、C接口等
我们现在查询touch、fork两条命令:
可以看到,在这两个命令后面带有(1)和(2)两个序列。man本质是一个查看命令、系统调用和C接口的手册。这个序列其实就是man的手册编号。
我们输入“man man”命令查看man命令:
在这里我们可以看到这些内容,这就表明在手册里面按不同的内容放在了不同的手册中。因此,当我们查询一个命令时,是从1号手册往下查找的,找到后就停下。
但也可能出现不同手册中的命令形式相同,如printf。我们输入“man printf”,此时显示在1号手册:
但如果我们输入“man 3 printf”,它就会去3号手册找:
注意:因为linux是由C语言写的,因此Linux中自带C标准库。但其他如C++、Java等语言linux中是没有的
当然,man手册也是需要自己安装的,不然用不了。在root账户下输入“yum install -y man-pages”即可安装
8.拷贝
(1)拷贝文件
现在我们有一个test.c文件,里面有如下内容:
此时这个文件存在于/root目录下:
但如果我们想将它拷贝到LinuxLesson目录下,就可以用“cp 原文件 目标目录”的命令:
可以看到,此时再LinuxLesson中就有了test.c的拷贝文件,且内容也是一致的
(2)拷贝目录
拷贝不仅可以拷贝文件,也可以拷贝目录。和删除目录相同,拷贝目录也需要带上“-r”选项,即输入“cp -r 原目录 目标目录”:
9.剪切及重命名
(1)剪切
当我们需要移动某个文件时,就是使用的剪切操作,在linux下的剪切命令是“mv”
1.剪切文件
对文件进行剪切的命令是“mv 原文件 目标目录”,以“mv_test.txt”文件为例:
2.剪切目录
与拷贝目录不同,剪切目录不需要带“-r”选项,输入“mv 原目录 目标目录”即可:
(2)重命名
重命名同样是使用“mv”命令。重命名不仅可以用于文件,也可以用于目录。使用方式是“mv 原文件名/原目录名 新文件名/新目录名”:
在重命名时,原文件名/原目录名后面不能跟已存在的文件名或路径
10.查看文件内容
(1)cat打印所有内容
查看文件内容的命令是“cat 文件名”:
如果想以带行号的方式查看,就要带选项“-n”,即“cat -n 文件名”:
cat命令是正序打印,如果想逆序打印,就使用“tac”命令,使用方法和cat相同
无论是cat命令还是tac命令,都是打印全部内容。这种打印方式在内容较少时好用,但如果是大文本,比如有上万行内容,cat命令打印后就很难进行查阅。对于这种情况,就要使用“more”命令
(2)more打印部分内容
1.顶格部分打印
现在我们假如我们有如下一个带有10000行内容的文件text.txt。用cat命令打开的话就会显示所有内容,导致我们无法准确找到我们需要的内容
而用“more 文件名”命令则不会全部打印,而是顶格部分打印
当我们想要看下面的内容时,按下enter键即可下翻。要退出的话按q即可
2.按行数部分打印
但假如我们不想看这么多行,只是想看前几行,就用“more -n 文件名”,n指的是行数。例如我们使用“more -10 test.txt”命令:
3.more下搜索内容
more命令打开后是支持搜索的。例如我们在这里将test.txt中的一行内容改为“hello test 【9970】”:
我们用more打开后,输入“/test”:
此时就会直接跳转到test第一次出现的位置
但是more有一个问题,就是more命令只支持向前移动。即more只能往后面翻看后面的内容,不能看前面的内容。而相对于more,less命令则支持向前向后移动。
(3)less打印部分内容
less和more的用法相同。但不同于more,less并不支持按固定行显示的功能。但支持上下翻阅,按键盘行的上下键即可。
但less也与cat一样,支持带行号打印。带上“-N”选项即可:
(4)head和tail打印内容
1.head
head命令用于打印文件的头几行内容。即“head 文件名”:
2.tail
tail命令用于打印文件的末尾几行内容。即“tail 文件名”:
head和tail都可以加上“-n”(n表示行数)的方式决定打印几行
(5)打印中间行内容
现在我们能拿到头和尾的内容了,那么如何拿到中间的内容呢?这里就可以运用“管道—— | ”。管道的概念以当前我们对linux的知识还很难理解,在这里就不过多说明。
现在只用理解在这里管道的作用就是将多条命令按顺序执行。
要打印中间内容,就可以用到上面的head和tail命令并结合管道。命令形式:“head -n1 文件名 | tail -n2”(n1为末尾行数,n2位需打印行数)。假设我们现在要打印100~110行的内容,就可以输入“head -110 test.txt | tail -10”:
11.时间相关指令
(1)时间显示
要显示时间,只需要使用date命令即可:
但是单使用这个命令所显示的时间比较难看懂,所以一般都会加上后缀,写成“date +%Y/%m/%d-%H:%M:%S”形式:
使用该命令就可以更加清晰的方式显示时间
(2)时间戳
在linux中可以以“date +%s”的方式查看时间戳:
时间戳是一个非常重要的概念,许多地方都需要用到,这里就不一一细讲,有兴趣的可以自行查阅相关资料
12查找
(1)文件查找
find命令是linux下一个非常强大的命令,使用起来也非常复杂,有着众多的选项和搭配。但在这里因为只是linux操作入门,就不过多赘述,只讲find命令中比较简单的一条文件搜索命令:“find 路径 -name 文件名”:
注意,这里的“-name”是按文件名查找的意思,不加-name就可能会搜索出一些带有相同字符的文件。“~”是家目录的意思
(2)命令查找
如果我们想搜索一条命令所处路径,就可以使用“which”命令:
(3)指令重命名
在上面的which命令图片中,相比大家都注意到了alias这条命令。这条命令其实就用来给命令起别名的。可以看成linux下的typedef。上图其实就上加ls --color=auto这条命令起别名为ls
1.重命名
我们要为一条命令重命名的话就可以使用“alias 新名字=‘命令’”:
注意,这里的新名字和命令之间的等号两边没有空格
2.删除
想删除一条重命名后的命令也很简单,执行“unalias 重命名名字”即可:
(4)文档查找
whereis命令可以帮我们在特定的路径下,查找指定的文件名对应的指令或文档。如果没有对应的文件名,则会采取近似匹配的方式查找。“whereis 文件名”命令:
(5)字符串搜索
在linux中有一个grep命令,可以将其看做为文本内容的行过滤工具。它会匹配文本中的关键字,匹配上的以行的形式显示。该命令也带有众多选项,全部讲解的话会非常复杂,这里就只选择了几个常用的选线进行讲解。其基本形式为“grep ‘关键字’ 文件名”
现在我们有一个test.txt文件,在这个文件中存在10000行hello linux且每行后面都跟有对应的数字序列
现在假设我们想搜索里面带有999关键字的文本内容,就可以执行“grep ‘999’ test.txt”命令:
可以看到,grep命令直接将对面文本中带有“999”关键字的文本全部显示出来了
1.显示行号
grep命令可以选择显示行号的方式打印,带上“-n”命令即可,如“grep -n ‘999’ test.txt”:
2.忽略大小写
如果我们现在有以下一个test1.txt文件:
在这个文件里面无论有大写也有小写。现在我们执行“grep ‘hello’ test1.txt’”命令:
这里就只显示了与关键字完全匹配的文本。区分了大小写。如果我们不想区分大小写,就可以带上“-i”选项,即“grep -i ‘hello’ test1.txt”:
此时就会忽略大小写,匹配所有内容
3.反向匹配
如果此时我们想忽略带有某个关键字的文本内容,就可以带上“-v”选项。该选项可以帮忽略带有对应关键字的行文本内容。以上图中的test1.txt文件为例,现在我们输入“grep -v ‘ ’ test1.txt”:
此处我们没有搜索这些文本中的关键字,而是选择输出不带有“ ”,即空格的行文本内容
13.压缩/解压缩
(1)zip/unzip
1.命令安装
zip在linux中一般是没有默认安装的。在使用前,可以先输入“zip”,看看有没有安装,有的话就直接使用,没有的话就在root下执行“yum install -y zip unzip”即可
2.压缩
压缩命令很简单。命令形式为“zip -r 压缩包名称 压缩对象”
现在我们这里有以下目录:
那么我们想将lesson进行压缩,就可以输入“zip -r lesson.zip lesson”:
可以看到,此时我们这里就形成了一个压缩文件“lesson.zip”
3.解压缩
想对一个压缩包解压缩,直接输入“unzip 压缩包名称”即可。如果不在同一路径,就需要在压缩包名称前跟上路径:
注意,解压文件的存储位置默认为账户当前所处路径。
但如果我们想将压缩包解压到一个特定的目录下,就需要加上“-d”选项。即“unzip 压缩包名称 -d 指定目录”
如果指定目录不存在,则会自动生成该目录并解压放入
(2)tar
tar命令也可以用于压缩和解压缩。但是其选项非常多,用起来非常复杂,所以这里就不过多讲选项,而是讲解几个常用的选项组合。
1.压缩
tar命令要压缩时,可以用“tar -czf 压缩包名 压缩对象”的形式:如我们要压缩以下目录中的lesson:
我们就可以采用“tar -czf lesson.tar lesson”命令:
2.解压缩
要对tar压缩包解压缩,就可以用“tar -xzf 压缩包名”的命令。如上图的lesson.tar解压缩,就可以用“tar -xzf lesson.tar”:
3.不解压查看压缩包内容
tar也支持在不解压的情况下查看压缩包的内容,如对上图中的lesson.tar压缩包,可以用“tar -tf lesson.tar”查看:
4.显示压缩文件列表
从上面也可以看到,tar命令解压时是不会显示压缩包文件的,如果我们想在解压缩时同步显示压缩包文件列表,就可以加上“-v”选项,如“tar -xzvf lesson.tar”:
5.解压缩到指定目录
在使用tar时,我们直接解压它会自动帮我们在当前目录解压。但有时我们需要将其解压到特定的目录下,这时就需要加上“-C”命令,即:tar -xzf 文件名 -C 对应路径
例如我们要将test目录里面的lesson.tar文件在dir目录解压,我们就可以输入“tar -xzf lesson.tar -C /root/dir”:
当然,我这里是加了“-v”的,这个选项可加可不加
(3)注意事项
在这里,我们只讲了zip和tar两种压缩方式,实际上还有其他各种各样的压缩方式。
这里不全部讲完的原因是linux下每种压缩方式都有对应的命令,要讲完篇幅就太大了,因此这里选择了两种比较常用的压缩方式讲解。如果遇到其他压缩方式,可以自行搜索资料了解
14.系统相关指令
(1)计算器调用
在linux下要调用计算器可以输入“bc”:
在bc下我们也是可以自行选择精度和命令行输入及管道的。要退出时输入quit即可。但是这条命令没什么大用,毕竟现在的windows和手机上内置的计算器功能以及很强大了。因此只需要知道有这条命令即可,无需过多关注
(2)获取电脑和操作系统的相关信息
如果我们想查看当前linux的相关信息,就可以使用“uname”指令。这条命令也存在多种选项,这里就不一一介绍,而是选择比较常见的几个选项介绍。
1.查看系统相关信息
使用“uname -a”就可以查看关于系统的相关信息:
2.查看内核版本
当我们想查看当前机器的内核版本时,可以加上“-r”选项,即“uname -r”:
(3)常用热键
1.命令自动补齐
在写命令时,有些命令用起来比较长,输入起来比较麻烦。此时我们就可以使用“Tab”键来触发命令的自动补齐。
可以看到,在我输入w时,按下Tab键,就会自动显示以w开头的命令。这样持续往下输入,当我输入的whi的时候还有三个命令可以匹配。而当我输入whil时,就只有一个命令可以匹配,此时系统就会自动把没写的部分补齐。
Tab键在使用时要连按两下,当然在有些系统下也可能是一下。可以实际尝试看看自己的系统下Tab键的使用。
(2)程序终止
在实际中,我们可能会遇到需要在程序未结束时将其终止的情况,此时就可以使用“ctrl c”的热键组合。
例如现在有以下死循环程序:
我们将其编译好后执行:
可以看到,此时该程序已经被终止了,并且在命令行前出现了“^C”的字样。此时我们就是使用了“ctrl c d”的热键将该程序强行终止了。
当然,这个热键不仅能用在终止程序上,也可以用在输错命令时结束该命令行并另起一行:
(3)历史命令搜索
在有时,我们写了一条比较长的命令,虽然我们可以用电脑上的上下键来上下翻找,但如果是比较久的命令,找起来就会很麻烦。而使用热键“ctrl r”,在该命令行中输入你曾经执行过的命令的片段:
此时就会把你历史上所有使用过的命令显示出来。选择好后按下enter键即可
(4)退出当前用户
如果我们不想退出linux,只是想退出当前登录的用户,就可以使用“ctrl d”热键:
但要注意,这里的退出用户只退出一层。例如如果我们在root账户下切换登录了一个普通账户,此时在这个普通账户下ctrl d就是退回到root账户
(5)命令行换行
如果我们写的命令特别多,写在一行上看起来非常繁杂。此时就可以输入“\”来换行:
输入"\"后再按下enter键就不会执行命令,而是在当前命令的基础上换行
(6)xshell全屏
在使用xshell时,打开是一般都不是默认全屏。如果想开启全屏,直接按快捷键“ alt + enter”即可。这个快捷键可以在全屏和非全屏之间切换
15.查看配置
(1)查看cpu
当遇到需要查看cpu时,输入“lscpu”即可:
(2)查看内存
查看内存的命令是“lsmem”:
(3)查看磁盘
查看磁盘的命令是“df -h”: