基于UNIX的多用户、多任务、多线程和多CPU的操作系统Linux
linux的体系结构
linux的目录结构类似于一棵树结构,从根/开始逐渐从上往下进行分叉操作
树结构
最上一级的结构是/(根目录),/不是root,root和/下面的和bin,boot,dev一个等级
linux中常见目录的介绍
linux常见目录介绍
linux常见目录介绍
linux常见目录介绍
linux的目录切换命令--cd
cd命令演示
登录系统之后当前位置为root
cd..为返回上一级,root上一级是/
ls为显示当前目录下的目录图中/下的目录
cd etc 为进入到当前目录下的etc目录
cd ../usr 为进入上一级/下的usr目录
cd /etc 以前是cd etc现在etc加斜杠了,表示直接进入到根目录下的etc目录,/表示根目录
cd - 表示返回,也就是当前命令窗口的上面一个命令路径,为uer
cd命令
pwd命令
cd ~切换到用户主目录,本机为root就是当前用户的主目录,注意这个root并不是/下的root目录,之所以我的主目录是root,是因为我的linux的登录名字就是root,所以我的主目录是root,不要和给定root目录混淆
cd/为进入到/,也就是系统的根目录
cd切换目录大全
使用pwd命令可以看出当前我们所在的位置:
pwd命令查看我们当前所处的位置
可以看出当前用户所在目录为home目录
目录的操作命令(增删改查)
创建文件夹mkdir
mkdir创建文件夹
不可以创建多级目录,如mkdir aaa/bbb
如果feng已经创建了,可以mkdir feng/huan,在feng下创建huan目录,要想创建多级目录需要-p命令,如
使用-p,创建多级目录
删除目录:rmdir 目录名
查看目录ls,他有两个参数-a,-l
-a是显示目录下的所有,连隐藏的也显示,-l是详细显示隐藏的信息,ls -l可以直接写成ll
查看目录下的文件及文件夹
ll命令详细显示目录下的文件信息
可以ls -a -l 一起使用,如下所示
-l显示详细信息
或者ls -la
ls -la命令的使用
ls *.txt显示以txt为后缀的文件
ls *.txt
ls *.*查看所有文件
ls *.*
重定向(>)
重定向演示
当我们使用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的文件及文件夹
find查找目录
find用法大全
修改目录名称
mv 当前目录下的目录名 新名字
mv修改名字
将feng目录下的huan改名为huanfeng
mv不仅可以对目录重命名,还可以对文件,压缩包重命名
移动目录的位置(剪切)
mv 目录名称 目录的新位置
举例:将huangfeng移动到根目录位置
将huangfeng移动到根目录位置
mv不仅可以对目录剪切,还可以对文件,压缩包剪切
拷贝
cp -r 目录名称 拷贝到哪里(-r的作用是将目录中的内容全部copy出来,就是递归式拷贝)
注意cp还可以拷贝文件和压缩包,不用-r
cp拷贝命令演示
cp命令常用参数
删除
rm 目录名
适用于目录是空的,如果目录不为空,内部还有目录或文件 rm -r 目录名
rm删除演示
这个feng下有aa所以使用-r,这个还会确定是否删除,如果直接删,不确定是否删除,可以使用-rf
文件的相关命令
touch创建一个新的文件
touch命令创建一个aaa.txt文件
linux没有后缀名的说法,多以文件名自定义
在文件目录已经存在的情况下,我们可以不必进入到文件目录中而直接建立文件,假如已经有文件目录a/b/c,那么此时我们可以 touch a/b/c/a.txt这样就会在a/b/c下建立一个a.txt文件
文件查看
将etc下的sudo.conf复制到huangfeng下
cp命令完成复制
文件命令cat/more/less/tail 文件
示例:使用cat查看sudo.conf文件,只能显示最后一屏内容
cat查看sudo.conf文件
cat 文件1 文件2 可以同时查看多个文件的内容
示例:使用more查看/etc/sudo.conf文件,可以显示百分比,回车可以向下一行,空格可以向下一页,q可以退出查看
more查看/etc/sudo.conf文件
示例:使用less查看/etc/sudo.conf文件,可以使用键盘上的PgUp和PgDn向上 和向下翻页,q结束查看
less查看/etc/sudo.conf文件
示例:使用tail -10 查看/etc/sudo.conf文件的后10行,Ctrl+C结束
使用tail -10
注意:命令 tail -f 文件 可以对某个文件进行动态监控,例如tomcat的日志文件,会随着程序的运行,日志会变化,可以使用tail -f catalina-2016-11-11.log 监控文件的变化
修改文件夹的名称
mv 文件旧名称 文件新名称
使用剪切的方式修改文件名称
修改文件的内容vim
vim 文件名称
vim 文件名称会进入命令模式此时不可以进行编辑,此时需要点击键盘i/a/o进入编辑模式,就可以对文件进行编辑了,编辑完之后,按下Esc,退回命令模式,
此时文件虽然已经编辑完成,但是没有保存,需输入冒号:进入底行模式,在底行模式下输入wq代表写入内容并退出,即保存;输入q!代表强制退出不保存。
删除文件
同目录删除: rm -rf 文件
文件的压缩和解压,
tar命令完成文件的打包操作
tar的作用是打包,tar -cvf 1.tar 1.txt的意思是将1.txt打包成1.tar
tar命令完成文件的解包操作
解包是-xvf,上面的tar -xvf 1.tar的作用就是将1.tar解包
上面的程序只是打包还有解包,并没有进行压缩,要想压缩还需要使用gzip命令,可以将已经打好的包进行压缩
受用gzip命令完成文件的压缩
gzip 1.tar就是将1.tar进行压缩
Linux中的打包文件一般是以.tar结尾的,压缩的命令一般是以.gz结尾的。而一般情况下打包和压缩是一起进行的,打包并压缩后的文件的后缀名一般.tar.gz。
命令:tar -zcvf 打包压缩后的文件名 要打包压缩的文件
z:调用gzip压缩命令进行压缩
c:打包文件
v:显示运行过程
f:指定文件名
使用命令直接进行文件的打包压缩
名字为a.tat.gz 将当前目录下所有的都打包,如果不想所有可以指定打包的
只将aaa.txt进行打包压缩
把文件解压到当前目录: tar -xvf 压缩文件
x:代表解压
tar完成解压文件
把文件解压到指定目录下:tar -xvf xxx.tar.gz -C 解压的位置
把文件解压到指定目录下
可以看出文件全部解压到了aa目录下
压缩包除了tar.gz的还有一种是tar.bz2的,它的压缩和解压的命令和上面的类似
tar.bz2的解压和压缩命令
压缩和解压缩,上面是打包之后再压缩,还可以直接进行压缩,压缩成zip文件,演示:
直接进行文件的压缩
这个zip 1.zip 1.txt的意思就是将1.txt的压缩成1.zip
unzip完成解压缩
使用zip进行压缩,那么相对的使用unzip来进行解压
unzip -d ./ 1.zip的意思表示是将1.zip进行解压,解压到./
-d的意思是指定要解压的路径,如果指定的这个路径要是不存在的话,它会自动创建的
linux其它命令
(1)显示当前所在位置pwd
pwd显示当前所在的位置
(2)搜索命令grep
这个命令式查询sudo.conf中包含to的行
grep to sudo.conf
这个命令式查询sudo.conf中包含to的行
grep -n to sudo.conf
加上一个-n命令这样会在查询的内容中显示行数
加上一个-n命令这样会在查询的内容中显示行数
grep命令常用参数选项:
grep命令常用参数
把查找的内容高亮显示
使用--color完成高亮显示
(3)查看进程当前系统运行的进程ps -ef
ps -ef查看当前系统运行的进程
(4)管道命令 |
管道命令就是将前一个命令的输出作为本次目录的输入,比如上面的程序是显示当前的进程,但是进程太多了,我们可以配合使用grep搜索命令查找我们所需要的进程,演示:
管道和其它命令的结合
这个程序就是将ps -ef的输出(所有进程),作为grep system的输入,grep过滤输入的包含system的,所以结果如上所示
管道和more的结合
ls -al会显示一大堆的东西在屏幕上那么一个屏幕根本无法全部显示,那么可以搭配more分屏显示,这个要使用管道技术。
ls -al | more的意思可以理解为将ls -al的显示内容输入到管道中,然后执行more命令的时候,它会把管道中的内容输出,而more的作用是分屏显示,这样的效果就是ls的显示的一大堆的东西都分屏显示了。
(5)杀死进程,kill -9 进程的pid
kill 命令
上图红色箭头标记的地方就是当前进程的pid,杀死进程的命令正是通过pid来操作的
(6)查看当前系统的网卡信息:ifconfig
查看当前的网络信息
(7)查看与某台机器的连接情况:ping
(8)查看当前系统的端口使用:netstat -an
查看当前系统的端口使用
查看有哪些用户组:
查看有哪些用户组
使用cat etc/group可以看出当前有哪些用户组
最前面是用户组的名字,x表示密码(这里不显示),在后面就是用户组的id就像身份证号一样
创建用户组:groupadd 用户组名
创建用户组
上面就是使用这个命令创建了用户组f
删除用户组
groupdel 用户组名可以删除用户组
linux权限的概念
权限是Linux中的重要概念,每个文件/目录等都具有权限,通过ls -l命令我们可以查看某个目录下的文件或目录的权限
查看文件的信息
两个root,第一个root是用户名,第二个root是用户组,默认的情况下,创建用户的时候就会自动创建一个同名的用户组,然后前面的数字表示这个文件有多少个软硬连接
上图中第一列的内容的信息解释如下:
文件的权限解释
文件的类型有以下几种情况:
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
权限的其它设置方式
因为rwx可以分别使用421表示,所以6就表示读写,3就表示写和可执行,以此类推,数字表示前面几个权限加起来的和,因为ugo顺序是固定的,所以ugo也可以省略
chmod u=rwx,g=rwx,o=r aaa.txt等于chmod 774 aaa.txt
修改文件的权限
7就表示1+2+4表示全部权限,4表示读权限,774顺序和ugo一致,分别是u=7,g=7,o=4
u表示uesr文件拥有者,g表示group同组者,o表示other,a表示all所有
设置对文件权限为空
chmod a= 1.txt的意思就是让1.txt的所有的(a)权限设为空,如上图所示可以看出1.txt的任何级别的用户对他都没有权限
一个文件夹中有目录当我们修改文件夹目录的时候,只是修改文件夹的权限,而文件夹内部的文件或者文件夹的权限并不会修改,那么如何才能当修改文件夹权限的时候,将里面的文件或者文件的权限也相应的修改呢?
在修改权限的最后加一个-R
修改文件夹及内部的所有权限
在文件夹a中有一个文件夹b,那么修改文件夹a的过程中使用命令是chmod 777 a -R,那么效果就是将a下面的b目录的权限也修改成了777
chown修改文件拥有者
chown修改文件拥有者
这个实现了将test.txt文件拥有者修改为了dong4716138
chgrp修改文件的所属组
chgrp修改文件的所属组
使用chgrp将文件test.txt的所属组修改为dong4716138
ln软连接和硬链接
linux中的连接类似于window中的快捷方式,连接分为软连接和硬链接,命令为:
ln 源文件 链接文件 (硬链接)
ln -s 源文件 链接文件 (软连接)
软连接
这个命令就是ln -s 1.txt 2.txt 的意思是:
给1.txt建立一个软连接 链接文件是2.txt,可以看出home下出现了2.txt
软连接
这样就相当于给1.txt建立了一个链接2.txt,那么当我们修改1.txt的文件内容的时候,2.txt的内容也会修改,同理当修改2.txt的内容的时候,1.txt的内容也会修改。当删除1.txt的时候,此时源文件删除了,2.txt就没有作用了。
硬链接命令就是没有-s:
硬链接
当1.txt修改文件内容的时候,3.txt也会修改文件的内容,同理3.txt修改文件内容的时候,1.txt的文件内容也会被修改,这里和软连接的效果是一样的
当删除的时候:删除硬链接中的源文件,硬链接中的链接文件仍然可以使用,这就是软硬链接的根本区别
帮助信息
当一个命令不知道怎么使用的时候,可以使用帮助文档比如:
ls --help或者man ls
查看ls命令的使用方法
都可以查出当前命令的帮助文档
which命令
可以查看当前命令所处的位置
查看当前命令存在的位置
who命令
who命令
当前谁在登录自己的系统,当前用户登录的信息
ssh命令
ssh命令
在linux中可以使用这个命令来登录其它主机的linux
添加用户账号
使用adduser或useradd命令,可以在Linux下添加用户账号,我们当前就有一个用户,就是现在我自己这个用户root,那么下面添加一个用户
adduser添加用户
sudo useradd huan -m -d /home/huan
添加用户huan
-m表示自动建立家目录
-d表示家目录的名字叫做 /home/huan
添加用户可选参数
用户创建好之后,可以设置其密码,使用sudo passwd 用户
设置新创建用户h的密码
那么创建新的用户之后,如何使用这个用户呢?
su 用户,这就将我们的root用户切换到h用户了
切换到新创建的用户
su - 用户名多一个横杠的效果是不仅可以切换用户,还会直接跳转到该用户的家目录
删除用户
userdel 用户名 删除这个用户,不删除该用户的家目录
userdel -r 用户名 删除这个用户,并且删除该用户的家目录
删除用户
红箭头标记的地方是h,可以看出这只是删除了h这个用户,但是h用户的主目录却没有删除
当我们创建一个用户的时候,如果没有指定用户组的话,那么默认这个用户自己创建一个组,这个组的名字就是用户的名字,用户组中只存在这一个用户。怎么指定呢?
在创建用户的时候使用-g来指定创建的用户到哪个组中
创建用户指定用户所在的组
可以看出将新建的用户g添加到了huan用户组中,这样它就不会默认创建一个g的用户组了。
修改用户在的哪个组:
修改用户所在的组
使用usermod方法修改了g用户到huanfeng组中
查看某个用户在哪个组,使用groups 用户
查看某个用户在哪个组
可以看出用户g现在在huanfeng组呢,一个用户可以在多个组,如下所示:
一个用户可以有多个组
使用usermod -a -G huan g命令实现了将用户g添加到huan组中,这样g就同时在huanfeng组和huan组两个组了,虽然他有两个组但是它主要的组还是第一个组huanfeng
那么将用户添加进组中在什么时候使用呢?
我们先创建的用户是没有办法使用sudo的,所以会有很多的不方便,为了让新创建的用户可以使用sudo,那么需要把这个新创建的用户添加到adm和sudo组这样这个用户才可以使用sudo命令了
让新创建的用户也可以使用sudo命令
这个就是将laowang这个帐户添加到了adm和sudo组中,那么效果就是su laowang的时候,laowang这个用户可以使用sudo命令
sudo -s表示直接切换到root用户,就是最高权限的用户
我们创建的用户在home目录下
查看当前时间和日历
查看当前时间和日历
使用cal命令可以显示当前的日历,date可以显示当前的时间