基于UNIX的多用户、多任务、多线程和多CPU的操作系统Linux

linux的体系结构

linux的目录结构类似于一棵树结构,从根/开始逐渐从上往下进行分叉操作

基于UNIX的多用户、多任务、多线程和多CPU的操作系统Linux

树结构

最上一级的结构是/(根目录),/不是root,root和/下面的和bin,boot,dev一个等级

linux中常见目录的介绍

基于UNIX的多用户、多任务、多线程和多CPU的操作系统Linux

linux常见目录介绍

基于UNIX的多用户、多任务、多线程和多CPU的操作系统Linux

linux常见目录介绍

基于UNIX的多用户、多任务、多线程和多CPU的操作系统Linux

linux常见目录介绍

linux的目录切换命令--cd

基于UNIX的多用户、多任务、多线程和多CPU的操作系统Linux

cd命令演示

登录系统之后当前位置为root

cd..为返回上一级,root上一级是/

ls为显示当前目录下的目录图中/下的目录

cd etc 为进入到当前目录下的etc目录

cd ../usr 为进入上一级/下的usr目录

cd /etc 以前是cd etc现在etc加斜杠了,表示直接进入到根目录下的etc目录,/表示根目录

cd - 表示返回,也就是当前命令窗口的上面一个命令路径,为uer

基于UNIX的多用户、多任务、多线程和多CPU的操作系统Linux

cd命令

基于UNIX的多用户、多任务、多线程和多CPU的操作系统Linux

pwd命令

cd ~切换到用户主目录,本机为root就是当前用户的主目录,注意这个root并不是/下的root目录,之所以我的主目录是root,是因为我的linux的登录名字就是root,所以我的主目录是root,不要和给定root目录混淆

cd/为进入到/,也就是系统的根目录

基于UNIX的多用户、多任务、多线程和多CPU的操作系统Linux

cd切换目录大全

使用pwd命令可以看出当前我们所在的位置:

基于UNIX的多用户、多任务、多线程和多CPU的操作系统Linux

pwd命令查看我们当前所处的位置

可以看出当前用户所在目录为home目录

目录的操作命令(增删改查)

创建文件夹mkdir

基于UNIX的多用户、多任务、多线程和多CPU的操作系统Linux

mkdir创建文件夹

不可以创建多级目录,如mkdir aaa/bbb

如果feng已经创建了,可以mkdir feng/huan,在feng下创建huan目录,要想创建多级目录需要-p命令,如

基于UNIX的多用户、多任务、多线程和多CPU的操作系统Linux

使用-p,创建多级目录

删除目录:rmdir 目录名

查看目录ls,他有两个参数-a,-l

-a是显示目录下的所有,连隐藏的也显示,-l是详细显示隐藏的信息,ls -l可以直接写成ll

基于UNIX的多用户、多任务、多线程和多CPU的操作系统Linux

查看目录下的文件及文件夹

基于UNIX的多用户、多任务、多线程和多CPU的操作系统Linux

ll命令详细显示目录下的文件信息

可以ls -a -l 一起使用,如下所示

基于UNIX的多用户、多任务、多线程和多CPU的操作系统Linux

-l显示详细信息

或者ls -la

基于UNIX的多用户、多任务、多线程和多CPU的操作系统Linux

ls -la命令的使用

ls *.txt显示以txt为后缀的文件

基于UNIX的多用户、多任务、多线程和多CPU的操作系统Linux

ls *.txt

ls *.*查看所有文件

基于UNIX的多用户、多任务、多线程和多CPU的操作系统Linux

ls *.*

重定向(>)

基于UNIX的多用户、多任务、多线程和多CPU的操作系统Linux

重定向演示

当我们使用ls命令的时候,应该显示当前路径下的文件或者文件夹,但是这里没有显示,这是因为:

ls > a.txt的作用市将ls显示的内容重定向到a.txt,也就是把显示的内容保存到了a.txt,如果a.txt以前有内容会被覆盖,要是想将以前的内容保留的化,可以ls >>a.txt,这样使用两个大于号就可以解决这个问题了。

使用重定向可以完成类似复制的功能,比如

cat 1.txt > 2.txt这个意思就是将cat 1.txt的内容(也就是显示1.txt的内容)然后放到2.txt中

查找目录

grep是从一个文件中搜索其文件内容,而find是从指定目录中查找文件名

find /root -name '*feng*'查找当前目录下root目录下的名字包含feng的文件及文件夹,*feng*为模糊查询

find -name‘*feng*’查找当前目录下所有的包含feng的文件及文件夹

基于UNIX的多用户、多任务、多线程和多CPU的操作系统Linux

find查找目录

基于UNIX的多用户、多任务、多线程和多CPU的操作系统Linux

find用法大全

修改目录名称

mv 当前目录下的目录名 新名字

基于UNIX的多用户、多任务、多线程和多CPU的操作系统Linux

mv修改名字

将feng目录下的huan改名为huanfeng

mv不仅可以对目录重命名,还可以对文件,压缩包重命名

移动目录的位置(剪切)

mv 目录名称 目录的新位置

举例:将huangfeng移动到根目录位置

基于UNIX的多用户、多任务、多线程和多CPU的操作系统Linux

将huangfeng移动到根目录位置

mv不仅可以对目录剪切,还可以对文件,压缩包剪切

拷贝

cp -r 目录名称 拷贝到哪里(-r的作用是将目录中的内容全部copy出来,就是递归式拷贝)

注意cp还可以拷贝文件和压缩包,不用-r

基于UNIX的多用户、多任务、多线程和多CPU的操作系统Linux

cp拷贝命令演示

基于UNIX的多用户、多任务、多线程和多CPU的操作系统Linux

cp命令常用参数

删除

rm 目录名

适用于目录是空的,如果目录不为空,内部还有目录或文件 rm -r 目录名

基于UNIX的多用户、多任务、多线程和多CPU的操作系统Linux

rm删除演示

这个feng下有aa所以使用-r,这个还会确定是否删除,如果直接删,不确定是否删除,可以使用-rf

文件的相关命令

touch创建一个新的文件

基于UNIX的多用户、多任务、多线程和多CPU的操作系统Linux

touch命令创建一个aaa.txt文件

linux没有后缀名的说法,多以文件名自定义

在文件目录已经存在的情况下,我们可以不必进入到文件目录中而直接建立文件,假如已经有文件目录a/b/c,那么此时我们可以 touch a/b/c/a.txt这样就会在a/b/c下建立一个a.txt文件

文件查看

将etc下的sudo.conf复制到huangfeng下

基于UNIX的多用户、多任务、多线程和多CPU的操作系统Linux

cp命令完成复制

文件命令cat/more/less/tail 文件

示例:使用cat查看sudo.conf文件,只能显示最后一屏内容

基于UNIX的多用户、多任务、多线程和多CPU的操作系统Linux

cat查看sudo.conf文件

cat 文件1 文件2 可以同时查看多个文件的内容

示例:使用more查看/etc/sudo.conf文件,可以显示百分比,回车可以向下一行,空格可以向下一页,q可以退出查看

基于UNIX的多用户、多任务、多线程和多CPU的操作系统Linux

more查看/etc/sudo.conf文件

示例:使用less查看/etc/sudo.conf文件,可以使用键盘上的PgUp和PgDn向上 和向下翻页,q结束查看

基于UNIX的多用户、多任务、多线程和多CPU的操作系统Linux

less查看/etc/sudo.conf文件

示例:使用tail -10 查看/etc/sudo.conf文件的后10行,Ctrl+C结束

基于UNIX的多用户、多任务、多线程和多CPU的操作系统Linux

使用tail -10

注意:命令 tail -f 文件 可以对某个文件进行动态监控,例如tomcat的日志文件,会随着程序的运行,日志会变化,可以使用tail -f catalina-2016-11-11.log 监控文件的变化

修改文件夹的名称

mv 文件旧名称 文件新名称

基于UNIX的多用户、多任务、多线程和多CPU的操作系统Linux

使用剪切的方式修改文件名称

修改文件的内容vim

vim 文件名称

vim 文件名称会进入命令模式此时不可以进行编辑,此时需要点击键盘i/a/o进入编辑模式,就可以对文件进行编辑了,编辑完之后,按下Esc,退回命令模式,

此时文件虽然已经编辑完成,但是没有保存,需输入冒号:进入底行模式,在底行模式下输入wq代表写入内容并退出,即保存;输入q!代表强制退出不保存。

删除文件

同目录删除: rm -rf 文件


文件的压缩和解压,

基于UNIX的多用户、多任务、多线程和多CPU的操作系统Linux

tar命令完成文件的打包操作

tar的作用是打包,tar -cvf 1.tar 1.txt的意思是将1.txt打包成1.tar

基于UNIX的多用户、多任务、多线程和多CPU的操作系统Linux

tar命令完成文件的解包操作

解包是-xvf,上面的tar -xvf 1.tar的作用就是将1.tar解包

上面的程序只是打包还有解包,并没有进行压缩,要想压缩还需要使用gzip命令,可以将已经打好的包进行压缩

基于UNIX的多用户、多任务、多线程和多CPU的操作系统Linux

受用gzip命令完成文件的压缩

gzip 1.tar就是将1.tar进行压缩

Linux中的打包文件一般是以.tar结尾的,压缩的命令一般是以.gz结尾的。而一般情况下打包和压缩是一起进行的,打包并压缩后的文件的后缀名一般.tar.gz。

命令:tar -zcvf 打包压缩后的文件名 要打包压缩的文件

z:调用gzip压缩命令进行压缩

c:打包文件

v:显示运行过程

f:指定文件名

基于UNIX的多用户、多任务、多线程和多CPU的操作系统Linux

使用命令直接进行文件的打包压缩

名字为a.tat.gz 将当前目录下所有的都打包,如果不想所有可以指定打包的

基于UNIX的多用户、多任务、多线程和多CPU的操作系统Linux

只将aaa.txt进行打包压缩

把文件解压到当前目录: tar -xvf 压缩文件

x:代表解压

基于UNIX的多用户、多任务、多线程和多CPU的操作系统Linux

tar完成解压文件

把文件解压到指定目录下:tar -xvf xxx.tar.gz -C 解压的位置

基于UNIX的多用户、多任务、多线程和多CPU的操作系统Linux

把文件解压到指定目录下

可以看出文件全部解压到了aa目录下

压缩包除了tar.gz的还有一种是tar.bz2的,它的压缩和解压的命令和上面的类似

基于UNIX的多用户、多任务、多线程和多CPU的操作系统Linux

tar.bz2的解压和压缩命令

压缩和解压缩,上面是打包之后再压缩,还可以直接进行压缩,压缩成zip文件,演示:

基于UNIX的多用户、多任务、多线程和多CPU的操作系统Linux

直接进行文件的压缩

这个zip 1.zip 1.txt的意思就是将1.txt的压缩成1.zip

基于UNIX的多用户、多任务、多线程和多CPU的操作系统Linux

unzip完成解压缩

使用zip进行压缩,那么相对的使用unzip来进行解压

unzip -d ./ 1.zip的意思表示是将1.zip进行解压,解压到./

-d的意思是指定要解压的路径,如果指定的这个路径要是不存在的话,它会自动创建的


linux其它命令

(1)显示当前所在位置pwd

基于UNIX的多用户、多任务、多线程和多CPU的操作系统Linux

pwd显示当前所在的位置

(2)搜索命令grep

基于UNIX的多用户、多任务、多线程和多CPU的操作系统Linux

这个命令式查询sudo.conf中包含to的行

grep to sudo.conf

这个命令式查询sudo.conf中包含to的行

grep -n to sudo.conf

加上一个-n命令这样会在查询的内容中显示行数

基于UNIX的多用户、多任务、多线程和多CPU的操作系统Linux

加上一个-n命令这样会在查询的内容中显示行数

grep命令常用参数选项:

基于UNIX的多用户、多任务、多线程和多CPU的操作系统Linux

grep命令常用参数

把查找的内容高亮显示

基于UNIX的多用户、多任务、多线程和多CPU的操作系统Linux

使用--color完成高亮显示

(3)查看进程当前系统运行的进程ps -ef

基于UNIX的多用户、多任务、多线程和多CPU的操作系统Linux

ps -ef查看当前系统运行的进程

(4)管道命令 |

管道命令就是将前一个命令的输出作为本次目录的输入,比如上面的程序是显示当前的进程,但是进程太多了,我们可以配合使用grep搜索命令查找我们所需要的进程,演示:

基于UNIX的多用户、多任务、多线程和多CPU的操作系统Linux

管道和其它命令的结合

这个程序就是将ps -ef的输出(所有进程),作为grep system的输入,grep过滤输入的包含system的,所以结果如上所示

基于UNIX的多用户、多任务、多线程和多CPU的操作系统Linux

管道和more的结合

ls -al会显示一大堆的东西在屏幕上那么一个屏幕根本无法全部显示,那么可以搭配more分屏显示,这个要使用管道技术。

ls -al | more的意思可以理解为将ls -al的显示内容输入到管道中,然后执行more命令的时候,它会把管道中的内容输出,而more的作用是分屏显示,这样的效果就是ls的显示的一大堆的东西都分屏显示了。

(5)杀死进程,kill -9 进程的pid

基于UNIX的多用户、多任务、多线程和多CPU的操作系统Linux

kill 命令

上图红色箭头标记的地方就是当前进程的pid,杀死进程的命令正是通过pid来操作的

(6)查看当前系统的网卡信息:ifconfig

基于UNIX的多用户、多任务、多线程和多CPU的操作系统Linux

查看当前的网络信息

(7)查看与某台机器的连接情况:ping

(8)查看当前系统的端口使用:netstat -an

基于UNIX的多用户、多任务、多线程和多CPU的操作系统Linux

查看当前系统的端口使用

查看有哪些用户组:

基于UNIX的多用户、多任务、多线程和多CPU的操作系统Linux

查看有哪些用户组

使用cat etc/group可以看出当前有哪些用户组

最前面是用户组的名字,x表示密码(这里不显示),在后面就是用户组的id就像身份证号一样

创建用户组:groupadd 用户组名

基于UNIX的多用户、多任务、多线程和多CPU的操作系统Linux

创建用户组

上面就是使用这个命令创建了用户组f

基于UNIX的多用户、多任务、多线程和多CPU的操作系统Linux

删除用户组

groupdel 用户组名可以删除用户组

linux权限的概念

权限是Linux中的重要概念,每个文件/目录等都具有权限,通过ls -l命令我们可以查看某个目录下的文件或目录的权限

基于UNIX的多用户、多任务、多线程和多CPU的操作系统Linux

查看文件的信息

两个root,第一个root是用户名,第二个root是用户组,默认的情况下,创建用户的时候就会自动创建一个同名的用户组,然后前面的数字表示这个文件有多少个软硬连接

上图中第一列的内容的信息解释如下:

基于UNIX的多用户、多任务、多线程和多CPU的操作系统Linux

文件的权限解释

文件的类型有以下几种情况:

d:代表目录

-:代表文件

l:代表链接(可以认为是window中的快捷方式)

后面的9位分为3组,每3位为一组,分别代表属主的权限,与当前用户同组的用户的权限(属组权限),其他用户的权限

属主:谁创建的这个文件,属主就是谁

属组:该文件创建者所在的组,同组者

其他用户:其它组的用户

r:代表权限是可读,r也可以用数字4表示

w:代表权限是可写,w也可以用数字2表示

x:代表权限是可执行,x也可以用数字1表示

修改文件/目录的权限的命令:chmod

比如:修改/huanfeng下的aaa.txt的权限为属主有全部权限(rwx),属主所在的组有全部权限(rwx),其他用户只有读的权限(r)

chmod u=rwx,g=rwx,o=r aaa.txt

至此就将权限修改了,修改权限还有另外一种省事的方法,可以省略ugo,省略rwx

基于UNIX的多用户、多任务、多线程和多CPU的操作系统Linux

权限的其它设置方式

因为rwx可以分别使用421表示,所以6就表示读写,3就表示写和可执行,以此类推,数字表示前面几个权限加起来的和,因为ugo顺序是固定的,所以ugo也可以省略

chmod u=rwx,g=rwx,o=r aaa.txt等于chmod 774 aaa.txt

基于UNIX的多用户、多任务、多线程和多CPU的操作系统Linux

修改文件的权限

7就表示1+2+4表示全部权限,4表示读权限,774顺序和ugo一致,分别是u=7,g=7,o=4

u表示uesr文件拥有者,g表示group同组者,o表示other,a表示all所有

基于UNIX的多用户、多任务、多线程和多CPU的操作系统Linux

设置对文件权限为空

chmod a= 1.txt的意思就是让1.txt的所有的(a)权限设为空,如上图所示可以看出1.txt的任何级别的用户对他都没有权限

一个文件夹中有目录当我们修改文件夹目录的时候,只是修改文件夹的权限,而文件夹内部的文件或者文件夹的权限并不会修改,那么如何才能当修改文件夹权限的时候,将里面的文件或者文件的权限也相应的修改呢?

在修改权限的最后加一个-R

基于UNIX的多用户、多任务、多线程和多CPU的操作系统Linux

修改文件夹及内部的所有权限

在文件夹a中有一个文件夹b,那么修改文件夹a的过程中使用命令是chmod 777 a -R,那么效果就是将a下面的b目录的权限也修改成了777

chown修改文件拥有者

基于UNIX的多用户、多任务、多线程和多CPU的操作系统Linux

chown修改文件拥有者

这个实现了将test.txt文件拥有者修改为了dong4716138

chgrp修改文件的所属组

基于UNIX的多用户、多任务、多线程和多CPU的操作系统Linux

chgrp修改文件的所属组

使用chgrp将文件test.txt的所属组修改为dong4716138

ln软连接和硬链接

linux中的连接类似于window中的快捷方式,连接分为软连接和硬链接,命令为:

ln 源文件 链接文件 (硬链接)

ln -s 源文件 链接文件 (软连接)

基于UNIX的多用户、多任务、多线程和多CPU的操作系统Linux

软连接

这个命令就是ln -s 1.txt 2.txt 的意思是:

给1.txt建立一个软连接 链接文件是2.txt,可以看出home下出现了2.txt

基于UNIX的多用户、多任务、多线程和多CPU的操作系统Linux

软连接

这样就相当于给1.txt建立了一个链接2.txt,那么当我们修改1.txt的文件内容的时候,2.txt的内容也会修改,同理当修改2.txt的内容的时候,1.txt的内容也会修改。当删除1.txt的时候,此时源文件删除了,2.txt就没有作用了。

硬链接命令就是没有-s:

基于UNIX的多用户、多任务、多线程和多CPU的操作系统Linux

硬链接

当1.txt修改文件内容的时候,3.txt也会修改文件的内容,同理3.txt修改文件内容的时候,1.txt的文件内容也会被修改,这里和软连接的效果是一样的

当删除的时候:删除硬链接中的源文件,硬链接中的链接文件仍然可以使用,这就是软硬链接的根本区别

帮助信息

当一个命令不知道怎么使用的时候,可以使用帮助文档比如:

ls --help或者man ls

查看ls命令的使用方法

都可以查出当前命令的帮助文档

which命令

可以查看当前命令所处的位置

基于UNIX的多用户、多任务、多线程和多CPU的操作系统Linux

查看当前命令存在的位置

who命令

基于UNIX的多用户、多任务、多线程和多CPU的操作系统Linux

who命令

当前谁在登录自己的系统,当前用户登录的信息

ssh命令

基于UNIX的多用户、多任务、多线程和多CPU的操作系统Linux

ssh命令

在linux中可以使用这个命令来登录其它主机的linux

添加用户账号

使用adduser或useradd命令,可以在Linux下添加用户账号,我们当前就有一个用户,就是现在我自己这个用户root,那么下面添加一个用户

基于UNIX的多用户、多任务、多线程和多CPU的操作系统Linux

adduser添加用户

sudo useradd huan -m -d /home/huan

添加用户huan

-m表示自动建立家目录

-d表示家目录的名字叫做 /home/huan

基于UNIX的多用户、多任务、多线程和多CPU的操作系统Linux

添加用户可选参数

用户创建好之后,可以设置其密码,使用sudo passwd 用户

基于UNIX的多用户、多任务、多线程和多CPU的操作系统Linux

设置新创建用户h的密码

那么创建新的用户之后,如何使用这个用户呢?

su 用户,这就将我们的root用户切换到h用户了

基于UNIX的多用户、多任务、多线程和多CPU的操作系统Linux

切换到新创建的用户

su - 用户名多一个横杠的效果是不仅可以切换用户,还会直接跳转到该用户的家目录

删除用户

userdel 用户名 删除这个用户,不删除该用户的家目录

userdel -r 用户名 删除这个用户,并且删除该用户的家目录

基于UNIX的多用户、多任务、多线程和多CPU的操作系统Linux

删除用户

红箭头标记的地方是h,可以看出这只是删除了h这个用户,但是h用户的主目录却没有删除

当我们创建一个用户的时候,如果没有指定用户组的话,那么默认这个用户自己创建一个组,这个组的名字就是用户的名字,用户组中只存在这一个用户。怎么指定呢?

在创建用户的时候使用-g来指定创建的用户到哪个组中

基于UNIX的多用户、多任务、多线程和多CPU的操作系统Linux

创建用户指定用户所在的组

可以看出将新建的用户g添加到了huan用户组中,这样它就不会默认创建一个g的用户组了。

修改用户在的哪个组:

基于UNIX的多用户、多任务、多线程和多CPU的操作系统Linux

修改用户所在的组

使用usermod方法修改了g用户到huanfeng组中

查看某个用户在哪个组,使用groups 用户

基于UNIX的多用户、多任务、多线程和多CPU的操作系统Linux

查看某个用户在哪个组

可以看出用户g现在在huanfeng组呢,一个用户可以在多个组,如下所示:

基于UNIX的多用户、多任务、多线程和多CPU的操作系统Linux

一个用户可以有多个组

使用usermod -a -G huan g命令实现了将用户g添加到huan组中,这样g就同时在huanfeng组和huan组两个组了,虽然他有两个组但是它主要的组还是第一个组huanfeng

那么将用户添加进组中在什么时候使用呢?

我们先创建的用户是没有办法使用sudo的,所以会有很多的不方便,为了让新创建的用户可以使用sudo,那么需要把这个新创建的用户添加到adm和sudo组这样这个用户才可以使用sudo命令了

基于UNIX的多用户、多任务、多线程和多CPU的操作系统Linux

让新创建的用户也可以使用sudo命令

这个就是将laowang这个帐户添加到了adm和sudo组中,那么效果就是su laowang的时候,laowang这个用户可以使用sudo命令

sudo -s表示直接切换到root用户,就是最高权限的用户

我们创建的用户在home目录下

查看当前时间和日历

基于UNIX的多用户、多任务、多线程和多CPU的操作系统Linux

查看当前时间和日历

使用cal命令可以显示当前的日历,date可以显示当前的时间

相关推荐