Linux初级知识与命令整合

Linux初级知识与命令整合


首先说一下,这篇文章主要是为了写给那些Linux基础较为薄弱或者刚刚使用Linux又不知道哪些命令比较常用的程序员或学生,毕竟Linux命令又多又杂,又不可能一个个help\man。
以下每个+号代表空格

一、常用目录

只看常用目录请看这个链接:常用目录
/bin:存放系统命令目录
/opt:安装文件时放在这里
/etc:配置文件目录
/usr:存放用户使用的系统命令和系统程序目录(安装的jdk、mysql、tomcat等)
/root:root用户主目录
/home:用户主目录(存放所有创建的用户),普通用户家目录
/sbin:超级用户的命令目录
/dev:存放设备目录(linux把每一个设备都映射成一个目录文件)
/boot:存放系统启动所需信息的目录
/proc:内存目录
/lib:系统库目录(动态库、静态库)
/mnt:挂载目录 (即把设备目录下的某个硬件设备挂载到该目录下)
/media:多媒体目录
/var:存放经常变化的文件目录
/temp:存放临时文件的目录
/etc目录下的重要配置目录:
/etc/grub.conf:设置启动引导的操作系统
/etc/inittab:设置登陆界面(0-6之间的7个级别)
/etc/fstab:配置挂载文件系统信息
/etc/group:组信息配置文件
/etc/gshadow:组密码配置文件
/etc/passwd:用户配置文件
/etc/shadow:用户密码配置文件

下面是linux的目录结构,不需要记住每个分叉点,但是脑中要有这个结构。在这里插入图片描述
小tip:使用alt+/可以快速补充文件或目录名,使用tab可以快速补全命令。在xshell里可以用tab补全文件或目录名。虚拟机和xshell都可以使用键盘的上下按键快速输入上一个命令

二、cd、ls与pwd命令

(1)cd命令

cd命令在linux中很常用,用于跳转当前所在目录。比如使用用户root时默认进入目录是 /root举几个例子:
(1)绝对路径举例
a.跳转到home目录:cd + /home/
其实最后一个/是可以不加的,加了表示操作里面的内容,但是有的时候加与不加有区别,比如后续讲到软链接(相当于Windows的快捷方式)时就有区别。
b.跳转到etc下的NetworkManager目录:cd /etc/NetworkManager/
(2)相对路径举例
a.从root目录跳转到home目录:
cd +. ./home(这里是连打的两个点,表示跳转到当前目录的上一级)
b.从NetworkManager跳转到root目录:
cd +. ./. ./root
c.跳到上级目录: cd+ . .

(2)ls与ll命令

ls命令主要是用来查看当前目录下有哪些目录或文件。
(1)ls:只输入ls会以横向排列的方式显示,没有前面的权限展示。
(2)ls -al:以纵向排列并显示出所有隐藏文件(以点“.”开头的是隐藏文件)。
(3)ls -ahl:人性化显示,就是把4096这类参数写成4k。
(3)ll:直接以纵向显示,有权限的显示。(权限的讲述在后面)
这些查看命令后面跟相对路径或绝对路径都可以,表示查看输入路径下的文件或目录。比如在root路径下,用 ll +. ./home来查看home下的东西。

(3)pwd命令

查看当前路径,后续学了用户后,可以查看一下家目录。如果在使用某用户时使用“su+用户名”切换另一用户时,目录不会切换成另一用户的家目录(仍然是切换前用户所在目录)。(这个后续再讲,先听一听)

三、vim编辑器

(1)常用模式

(1)正常模式
在此模式下可使用快捷键,可使用(上下左右)移动光标,可用删除字符、删除整行、复制、粘贴等等处理文档内容。
(2)插入/编辑模式
按下某些字母后可以进入编辑模式(一般按i),在此模式下可以对文档内容进行添加、删除、修改,就像windows里的记事本。
(3)命令行模式
按下“:”进入此模式,在此模式下,可完成读取、存盘、替换等,使用冒号“:”后面跟命令来进行操作,常用的有:wq、:q、:q!
(4)退出当前模式
使用esc退出当前模式,退出后是到正常模式界面。

(2)创建步骤

使用cd命令跳转到想要创建文档的目录下,使用vim+文件名来创建,如果之前没有这个文件名就会创建一个新文件,如果有的话会进入该文件的正常模式。

(3)常用快捷键

以下不说是哪个模式下就默认是正常模式:
(1)yy:该命令用于拷贝光标所在行,使用“数字+yy”可以把光标下所写数字个的行复制。
(2)p:在当前光标的下一行进行粘贴。
(3)dd:删除当前行,和yy同理,比如10dd是删除光标上10行。
(4)查找命令:使用“/ 关键词”可以查找关键词,使用n可以跳到下一个。
(5)设置行号:在命令行模式下set nu是显示行号,set nonu是去除行号。
(6)快捷跳到首尾行:首行:G,尾行:gg。
(7)快速跳转到某行:输入“行号+shift+g”。
(8)撤销上一个指令:u。
其实还有一些命令,比较常用的就是这些。

(4)补充:与Windows交互文件

这段是写给远程Linux的朋友们看的,如过装有XSHELL的可以试一下。
(1)在虚拟机的centos中输入如下指令:yum install lrzsz,遇到y/n就打y,也可以直接yum -y install Irzsz。
(2)在xshell登录Linux。
(3)从Windows向Linux上传文件是rz命令,此时会跳出一个选择文件的对话框,选中要传的文件就可以了,然后就会在Linux的当前路径下接收到这个文件。
(4)从Linux向Windows传文件是sz+文件名,然后在跳出的窗口中选择Windows下的保存路径。

四、关机、重启、远程用户注销

(1)sync命令:养成好习惯,关机、重启前先将数据同步到磁盘。
(2)reboot命令:立即重启。
(3)halt命令:直接关机。
(4)shutdown:不详细讲,有兴趣的同学可以 man shutdown来查看一下,可用于延时关机(shutdown -h 10,十分钟后关机)。
(5)logout:使用远程时注销当前用户。

五、用户与组

这部分如果对用户和组没有一丁点概念的朋友建议先简单了解一下这个概念再来看后续部分。

(1)简介

(1)Linux系统本身是一个多用户多任务的操作系统,任何一个要使用系统资源的用户,都要先向管理员申请账号再以此账号进入系统。
(2)一般用户放在/home目录下,每个用户都会有一个组,后续讲权限时会分为三部分(此用户、此用户所在组的成员、非用户所在组)。家目录是指用户初始登录后的路径。
(3)root用户可以说是无限权限,可以查看任何组任何用户的文件,不建议使用此用户登录,但练手一般是用这个用户。

(2)添加、删除、查询、切换用户

a.添加用户

(1)useradd+用户名:这是最简单的创建用户的方式,在/home/下会创建一个以用户命名的目录作为该用户的家目录,后续在使用该用户登录时的进入时目录就是这个。同时会默认生成以这个用户名为名的组。
(2)useradd -d+ 指定目录+ 用户名:可以指定用户的家目录,该用户登录时默认跳转到此处,可以自己输入一个/home/下的全新目录,也可以和其他用户共用同一个家目录(前提是要修改一定的权限)。比如:useradd -d /home/shit eight,意思就是把eight用户的家目录创建为/home/shit下。
(3)useadd -g+ 用户组+ 用户名:可以指定用户到相应组,此时要有相应的组,比如 useradd -g ig jkl,就把jkl加到ig组里了。
(4)passwd +用户名:在root用户下为指定用户设定密码,输入密码时在屏幕上并不会显示,输完后回车,再输一遍后回车即可完成。

b.删除用户

(1)userdel+用户名:只删除用户,不删除用户的家目录。
(2)userdel -r +用户名:删除用户和它的家目录。(-r的英文其实是remove)

c.查询用户

id+用户名:uid:用户id号,gid:用户所在组的id。

d.切换用户

su+用户名:从权限高到低不需要密码:如从root用户切换到普通用户。反之,如从普通用户到root用户,需要密码。当需要返回切换前的用户时用exit,在xshell中如果没有切换用户直接exit,效果和logout相同。
特别注意:切换用户后的当前目录不会变化成用户的家目录。
在这里插入图片描述
从上图可以看出从root用户切换到eight用户后当前目录并没有变。

(3)增加、删除、更改组

a.增加组

groupadd+组名:这个没什么好说的,就是添加一个组。如果想查看的话可以去/etc/中的group文件(通过我们刚刚学的vim指令)。

b.删除组

groupdel+组名:要注意的是,不能移除现有用户的主组,只能先删除用户再删除它所在的组。

c.更改组

usermod -g +组名 +用户名:这个是用来更改用户的组的命令。
usermod -d +新目录名+用户名:更改用户登录的初始目录。
比如之前的useradd -g ig jkl,现在jkl想离开ig怎么办?不能再用useradd命令给它换组了,此时要用:usermod -g tes jkl。这样就可以把他从ig组换到tes组了。
特别注意:不要把组名和用户名写反了,先集体后个人,先组后用户。

(4)关于组和用户的文件

(1)/etc/passwd文件
这里我用的tail命令查看(用vim也可以),这里的/home/shit和/home/xm是用户的家目录,第一个数字是用户id,第二个数字是组id
在这里插入图片描述
(2)/etc/group文件
能够看到各个组的信息,如果你忘记是否创建过这个组就可去这里查看。

六、linux系统级别

系统级别共有七种,这个大家可以记一下,据说面试挺常用。
在这里插入图片描述
翻译一下:
0:关机状态(其实halt命令就是关机):
1:单个用户模式,只有root用户(可用于root密码的找回,具体操作不说了)
2:多用户无网络(和3一样,只是没有网络)
3:多用户有网络(2和3就是命令行)
4::暂时没用
5:图形化界面(默认)
6:重启(一直会处于重启状态中,不要把初始状态设置成这个)
其实除了3和5常用外,其他都不怎么用(如果root密码忘了可以在查看详细说明后再用1)。
更改系统默认级别是/etc/下的inittab文件,把最下面那行的数字更改成需要的级别就可以了,在reboot后就会到这个模式了。不要乱实验,特别是0和6(不过学习有时候需要置之死地而后生,如果有试了的朋友麻烦告诉我如何切换回5)。

当然,如果真的想每一种都试一下的话,可以用init+系统级别,然后就可以看到各个级别的形态了。

七、帮助命令

使用man+命令或配置文件,获取帮助信息。或者使用help+命令来获取。
比如要查看ls:就用man ls。

八、文件命令与目录命令

(1)目录命令

a. 创建目录

(1)mkdir+要创建的目录:这条指令只能创建单级目录(已有目录不算),比如:mkdir /home/lec,这样就创建好了一个lec目录。
(2)mkdir -p +要创建的多级目录:这条指令可以一次创建多级目录,比如:mkdir/root/lec/g2,这样就既有lec目录还有它的子目录g2。

b. 删除目录

(1)rmdir+要删除目录:注意这条指令只能删空目录。
(2)rm -rf+要删除目录:这条命令可能不是程序员也听过,删除前请三思,这个删除是不会有任何提示信息的,可以删除非空目录。

(2)文件命令

a. 创建文件

(1)vim指令:这个指令就不多提了。
(2)touch+文件名称:在当前路径下创建文件,可以创建多个(用空格把文件们隔开)。

b. 复制文件

(1)cp +source +destination:cp后分别是从哪个路径来,到哪个路径去。可以写相对路径也可以用绝对路径。
比如:cp +/home/jack/jack.txt +/home/tom是绝对路径,如果在jack路径下就可以直接cp jack.txt . ./tom就可以了。
(2)cp -r +source +destination:这个是递归复制整个目录的,包括目录下的所有文件。如果输入的destination有这一个目录,就会有一个以被复制目录为名的文件夹,里面装着被复制文件夹的文件;如果没有这个目录,就会生成一个目录,里面放着被复制的文件。(有点晕?看下面)
在这里插入图片描述
之前是有shit这个目录的,所以cp后会把jack目录放上,但是没有666这个目录,所以cp后会生成一个666目录,并把jack目录下的两个文件拷贝进去。
(3)复制过程中的覆盖问题:如果有文件可能被覆盖,要用y/n确认。如果嫌麻烦并且确定所有文件都要覆盖,就用\cp表示强制覆盖。比如:\cp -r source destination。

c. 删除文件

(1)rm+被删除文件名:和touch一样,可以选择多个文件
(2)rm -r+被删除目录名:可以递归删除整个目录的所有文件
(3)rm -rf+被删除目录名:不会有任何提示的删除整个目录

d. 移动或重命名文件

(1)mv +source +destination:用于从source路径下将文件移动到destination路径。
(2)mv +oldnamefile +newnamefile:如果输入的第一个参数和第二个参数在同一个路径下,就会重命名。
这个命令不能递归移动目录。如果要移动,可以考虑先cp再rm -rf。

e. 查看文件内容

(1)cat+查看文件:可以只查看文件,cat -n+查看文件可以显示行号,由于能够显示行号所以可以用于和后面的more和less配合,使用管道符“|”连接,比如查看dog文件:cat -n dog|more,意思是把前面执行的结果教给后面。
(2)more+查看文件:以全屏方式,按页显示文本文件内容。
快捷键:空格:向下翻一页;回车:向下一行;q:立即离开more;
ctrl+B:返回上一屏;ctrl+F:向下一屏。
(3)less+查看文件:特别适合于大文件,和more的操作类似,可使用pageup和pagedown向上下翻页。使用“/+搜索名”进行搜索,n向下查找,N向上查找。less其实很常用。

重点tail:

tail+查看文件:查看文件的后10行内容,这对于查看新添加的东西很有用,比如新加了一些group,可以用tail。
tail -n5+查看文件:查看文件后5行内容。
tail -f +查看文件:实时跟踪该文档所有更新,常用。使用后会显示文档内容,使用ctrl+c退出查看模式。

f. 查找以及过滤命令

(1)find查找指令:使用find从指定目录递归的遍历其各个子目录,将满足条件的文件或目录显示在终端。
语法: find [搜索范围] [选项] +被搜索的名字
①find+搜索范围+ -name+ 文件名
比如搜索home下的dog.txt,就可以find /home -name dog.txt
②find +搜索范围+ -user +用户名
比如搜索opt下用户名为eight的文件,就可以find /opt -user eight
③find +搜索范围+ -size + 数字m/k
这里就是搜索大于、小于或等于某个大小的文件,比如在根目录下搜索大于20m的文件:find / -size +20m。
如果是小于就把+换成-,如果是等于就加减号都不加。
(2)grep过滤指令:
①grep -n+查找内容+源文件:可以显示匹配的行号
②grep -i+查找内容+源文件:忽略字母大小写的查找
通常和管道符“|”以及查看指令进行配合。
比如:cat/more/less +文件名|grep -ni fun,意思是不区分大小写的把文件中含字符串fun的行返回。
特别注意:可以使用通配符 **(星号),grep sshd * 代表查找前面是sshd后面是任意(字母、数字、符号等)。

h. 重定向与追加、日期、历史、软链接命令
(1)重定向与追加,重要

重定向指令>:输出重定向,即覆盖之前的文件。比如:ls -l > 文件名,意思是把当前目录下的目录和文件输出给文件,文件之前全部内容被覆盖。
追加指令>>:追加指令,即将内容追加到文件后,不进行覆盖,比如:date>>文件名就是把当前时间追加给文件。
也可以用cat/more/less等读取文件然后重定向或追加。

(2)当前日期和日历

当前日期:date,日历:cal,可以在后面加年份显示一年的日历。

(3)查看历史

history:查看已执行过的命令,可以在后面加数字,表示查看最近执行的几条指令,比如history 10表示显示最近执行的10条指令。

(4)软链接

ln -s +原文件或目录+软链接名:表示给原文件或目录创建一个软链接,类似于Windows里的快捷方式,当cd到软链接后,其实已经跳转到原文件或目录中了。可以看一下,这里加不加/就有区别了,一个只能显示LinkToRoot,另一个是查看到了/root下的文件和目录。(伏笔回收)
在这里插入图片描述

九、权限介绍

(1)基本介绍

在这里插入图片描述
首先第一个字母:是文件类型,-:表示是普通文件,d:表示目录,l:表示软链接,c:字符设备(鼠标、键盘),b:块文件,硬盘。
第一个字母后的几个按照三个一组来看:
第一组:rwx,r;可读、w:可写、x:可执行,可执行文件是会变亮的(闪着蓝光),这一组表示该目录的所有者(user)的权限。
第二组:r-x,表示可以读取或执行,目录里的执行代表可以进入。这一组表示所有者所在组的其它用户的权限。
第三组:—,表示没有任何权限。这一组表示除所有者所在组外的其他组的用户的权限。
分割线-----------------------------------------------------------------------------分割线
然后就是5代表目录下有5个子目录,如果是文件那这个地方是1。
后面的4096代表大小是4096字节,文件有大有小,但是目录必定是4096字节。
然后就是创建时间还有文件名了,这个就不再详述。
下面是几个例子:
在这里插入图片描述
在这里插入图片描述
特别注意:rwx这三个字母在文件和目录时是有所不同的。
作用于文件:r代表可以查看;w代表可以修改,但未必能删除,前提是要对该文件的目录有写的权限;x代表可以执行(execute),表示该文件可以被调用执行。
作用于目录:r代表可以查看目录内容;w代表可以修改、包含目录中文件的创建、删除、重命名;x代表可以进入该目录。那如果想要查看目录内部文件的内容,就必须有r和x权限,想删除其中的文件就要有rwx的权限。

(2)对于文件权限以及所有者与组的修改

(a)修改文件所有者

chown+新用户名+文件名:将该文件的所有者修改成新用户,可以加-R来递归改变该目录下的所有文件。(注意是大R)

(b)修改文件所在组

chgrp +新组名+文件名:将该文件的组修改成新组,可以加-R来递归改变该目录下的所有文件。(注意是大R)

(c)同时修改所有者和所在组

chown+新用户名:新组名+文件名。如:chown seven:toilet eight.txt

(d)修改权限

这里只讲一个修改通过数字修改权限,这也是最方便的一种方式。r=4,w=2,x=1,总的加起来是7。
比如更改666目录,之前提到了3组数,这里就是那3组,057代表所有者无任何权限、所有者所在组可以读和执行(4+1=5)、其他组成员有全部权限(4+2+1=7)。
在这里插入图片描述
特别注意:修改完后需要重启计算机。

十、网络配置

这一部分不会涉及原理(因为本人没有学习过网络方面的课程怕误导别人),只是说明如何设置使Linux虚拟机不需要每次都联网。
先说明一下,linux和windows是通过NAT模式进行连接的,相当于Windows有两个ip地址,第一个ip地址是和内网通信的,第二个ip是和Linux通信的,这样Linux就可以间接与内网连接(内网其他用户找不到Linux用户,但反过来可以)。Linux和Windows之间是通过一个叫虚拟网卡(VMNET8)的东西通信的。
Windows:查看可以通过命令行下输入ipconfig,然后找到VMnet8。可以看到IPV4是192.168.78.1。
在这里插入图片描述
Linux:查看是通过ifconfig命令,看到eth0下的inet addr是192.168.78.128,看到Windows和Linux里的前三位相同,就说明在同一个局域网并且是同一网关了。
在这里插入图片描述
如果通过VMnet8的更改适配器选项来修改ipv4,比如改成192.168.99.1,那么会导致ping(用于查看两个主机是否连接) Linux主机时超时,当把它重新改回时就又可以通信了。
在这里插入图片描述
那么重点来了,如何省去每次都要在右上角联网的繁琐步骤呢?
使用命令vim /etc/sysconfig/network-scripts/ifcfg-eth0
在这里插入图片描述
按照我给的这段进行填写,只有IPADDR、GATEWAY和DNS1需要单独查看后修改。
在这里插入图片描述
查看方式是:虚拟机的 编辑——>虚拟网络编辑器,选VMnet8。
在这里插入图片描述
然后可以在这里查看或修改左下角的子网IP第三位,要保证它和windows的VMnet8的前三位相同(可以同时修改)。然后可以通过DHCP来查看本机ip。
这里的起始ip就是了。
在这里插入图片描述
可以通过NAT设置查看或更改网关ip:
在这里插入图片描述

好了,那这三个参数IPADDR、GATEWAY和DNS1分别填:
IPADDR=起始IP(也可以用ifconfig来查看)
GATEWAY=网关IP
DNS1=网关IP
填完以后重启,或者service network restart就可以自动联网了。

十一、进程

进程说简单点就是Windows里的任务管理器,所以它的重要性不言自明。

1.ps命令查看进程

ps是用来查看目前系统中,有哪些正在执行的命令以及他们的执行情况,没有参数。
ps- a可显示当前终端所有进程信息。
ps -u可以以用户格式显示进程信息。
ps -x可显示后台进程运行参数。
一般就是直接 ps -aux(奥克斯,很好记吧)
进程过多可以用管道符:ps -aux|more/less ,这样就可以分页查看了。
比较常用的还有ps -aux|grep+要查看进程,这样就可以查看想要的进程了。
比如ps -aux|grep sshd(远程服务,如果使用了xshell是会显示的)
还可以用ps -ef查看父进程,PPID就是父进程ID。
示例讲解:
在这里插入图片描述
在这里插入图片描述

USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND

USER: 进程拥有者

PID: 进程id

%CPU: CPU 使用率

%MEM: 内存使用率

VSZ: 使用虚拟内存大小

RSS: 使用物理内存大小

TTY: 使用的终端

STAT: 进程状态,在START之前是对进程的解释:

D: 不可中断的静止

R: 正在运行中

S: 静止状态

T: 暂停执行

Z: 不存在但暂时无法消除,僵尸进程。

W: 没有足够的内存分页可分配

<: 高优先级进程

N: 低优先级进程

L: 有内存分页分配并锁在记忆体内

START: 进程开始时间

TIME: 占用CPU总计时间

COMMAND:所执行的指令

可以看到,sshd的第二行显示出了它登录了一个root用户(这个是我从xshell里登录的),我再从xshell里登录一个tom用户,大家可以再看一下:
xshell界面:
在这里插入图片描述
Linux主机界面:
在这里插入图片描述

2.top命令动态监控进程

top与ps命令相似,它们都用来显示正在执行的进程。但top是可以实时更新正在运行的进程。
这里推荐一篇专门讲top命令的文章:top命令集合

3.终止进程

(1)kill+进程号/进程名称:通过进程号/名称杀死进程,可以加一个-9来强制杀死进程,比如kill -9+进程号。
(2)killall+进程名称:支持通配符(*),可以批量删除进程。

4.服务管理

(1)管理服务

使用service+服务名+ start/stop/restart/reload/status(这几个英文单词已经把功能解释的很明白了,status可以查看service当前状态,其他不说了),在centos7后都是用systemctl了,基本上和service差不多,使用man或help可以查看一下。
比如之前设置网络时我使用的命令:service network restart就避免了重启电脑的麻烦。

(2)查看各种服务

下面说一下如何查看Linux的服务:
(1)使用setup 命令然后选择系统服务
在这里插入图片描述
在这里插入图片描述
这里面就全都是各种服务了,前面带*的是会开机自启动的,按空格可以取消自启动。
(2)使用 ls -l /etc/init.d/
使用这个命令也可以查看,不过要注意后面是有/的。

(3)查看服务在各个级别下是否会自启动

之前提到过运行级别,现在我们可以对各个级别下是否自启动来进行更改,这部分可能应用较少,选择性的看看。
查看服务在各个级别下的自启动状态:chkconfig --list。大概就是:
在这里插入图片描述
在某个级别下开启或关闭:
chkconfig --level+级别+服务+off/on
chkconfig --level 5 sshd off/on
这表示在打开或关闭sshd在运行级别5下的自启动。

都看到这儿了,点个赞吧亲

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值