Linux命令
目录
- linux shell 1
- linux命令分类 1
- linux 命令格式 2
- 快捷键 2
- 查看帮助命令 (ls 命令为例) 2
- 查看及切换目录命令 3
- 查看文件的内容 3
- 创建目录和文件 4
- 复制,删除,移动目录和文件 5
- 查找目录和文件 6
- 文件内容的查看 8
- 文件的解压和压缩以及目录的打包 9
- vim 编辑器 12
- linux应用程序的安装 14
- RPM包的管理,查询 16
- rpm包的安装和卸载 20
- 源代码编译安装的前提环境搭建 23
- 源代码编译安装的步骤 26
- 用户账户的管理 30
- 组账户的管理 42
- 管理文件的权限和属性 45
- 文件权限对服务的影响 48
- 磁盘分区格式化挂载 50
1.linux shell
(1)是linux系统中运行的一种特殊程序
(2)在用户和内核之间充当“翻译官”
(3)在用户登录linux时,系统会自动加载一个shell程序
(4)Bash是linux系统中默认使用的shell程序
①位于/bin/bash
所有用户可执行的命令存放处
2.linux命令分类
(1)内部命令
①集成于shell解释器程序内部的一些特殊命令,也称内建命令
②属于shell的一部分
③没有单独对应的系统文件
④自动载入内存,可直接使用
(2)外部命令
①Linux系统中能够完成特定功能的脚本文件或二进制程序
②属于shell解释器程序之外的命令
③每个外部命令对应了系统中的一个文件
④必须知道其对应的文件位置,由shell加载后才能执行
查看命令所在位置:which
如:外部命令
没有系统文件的命令是内部命令
如
没有系统文件的命令是内部命令
3.linux 命令格式
chkconfig --list 长格式的命令选项用 “–”
Ls -l 短格式的命令选项用“-”
4.快捷键
Ctrl + a 回到行首
Ctrl + e 回到行尾
Ctrl + u 删除光标之前
Ctrl + k 删除光标之后
Ctrl + l 清屏
Ctrl + c 取消当前操作
Table 补全
\ 换行
5.查看帮助命令 (ls 命令为例)
(1)man ls
(2)ls --help
(3)help cd (只能查看内部命令)
6.查看及切换目录命令
(1)Pwd命令
①查看当前所在目录
(2)Cd 命令
①Cd 和 cd~ :回到宿主目录(当前用户的默认工作目录)
②Cd - :返回上次所在的目录
绝对路径和相对路径:
绝对路径:以根为起点
相对路径:以当前所在目录为起点
用绝对路径从/etc/sysconfig/network-scripts/ 到/var/www/html
用相对路径从/etc/sysconfig/network-scripts/ 到/var/www/html
cd …/…/…/var/www/html :其中…/是上一级目录,连用三个…/回到根目录,再去到var/www/html
7.查看文件的内容
(1)Ls命令
①Ls -l :可缩写为ll,以长格式显示文件和目录的列表,包括文件权限,大小,最后更新时间等信息
②Ls -a :显示所有子目录和文件的信息,包括以“.”开头的隐藏文件和隐藏目录
③Ls -A :显示所有子目录和文件的信息,但不包括“.”和“…”
④Ls -d :显示目录本身的属性(一般与-l选项同时使用,即ls -ld)
⑤Ls -h :显示文件的大小,以合适的单位(kb,mb等)显示,默认为字节显示文件大小
⑥Ls -R :以递归的方式显示指定目录及其子目录中所有内容的信息
⑦Ls --color :以不同的颜色来区分不同的文件或目录
注意:在只输入ls时,也是显示不同颜色的,是因为默认的ls其实是带了参数color的
如果只是要使用ls这个命令,就输入/bin/ls来执行
命令中的通配符的使用:
查看所有以.conf结尾的文件
查看install.???的文件,?代表一个字符
8.创建目录和文件
(1)创建目录mkdir命令
① mkdir :创建单个目录
② mkdir -p:递归创建多个目录
(2)创建文件命令
Touch
9.复制,删除,移动目录和文件
(1)Cp复制文件
①将文件复制到其他目录
②将文件复制并重命名
(2)Rm 删除文件
①直接rm删除文件,此时有提示
②rm -f 不提示,直接删除
③rm -r 递归删除
直接用rm删不掉目录,需要用-r递归删除
系统多次询问,进行递归删除,如果不需要提示,就使用rm -rf直接删除
(3)Mv 移动和重命名文件
①移动文件
②重命名文件
10.查找目录和文件
(1)Which
①Which 只用来查找命令
(2)Find
①find /(查找位置)-name(条件表达式) bb.txt(文件名)
也可以使用通配符查找,但是文件名要加单引号
除了查找 -name外还有其他的条件表达式
-user 查找宿主
-size 查找大小,其中+1024k表示大于1024k的文件
-1024k表示小于1024k的文件
-type 按类型查找,其中常用的类型有:
f 文件,d 目录,b 设备块,c 字符设备文件
注意:如果find命令中有多个条件,默认情况下是查找满足所有条件的项,即and,如果只要找几个条件其中之一,就用or,即-o
find / -type d -o(or只要满足这两个条件之一就进行查找) -name ‘bb.*’
11.文件内容的查看
(1)Cat
①Cat 文件名 从头开始直接列出文件的所有内容
②Cat -n 显示行号
(2)Tac
①和cat一样,只是从文件的末尾开始
(3)More
①一页一页的查看文件,能向下翻页但不能向上翻
(4)Less
①一页一页的查看文件,能上下翻页
(5)Tail
①从文件尾部查看,默认为10行
②Tail -行数,从尾部查看n行
(6)Head
①从文件头部查看,默认为10行
②Head -行数,从尾部查看n行
(7)Wc 文件行数,字数,字节数的统计
①Wc -l 统计文件的行数
②Wc -w 统计文件的字数
③Wc -c 统计文件的字节数
(8)grep 搜索文件中的关键字
①Grep ‘关键字’ 文件名 查找关键字所在的行
②Grep -v ‘关键字’ 文件名 查找没有关键字的行
③Grep -n ‘关键字’ 文件名 查找关键字所在的行及其行数
④Grep -i ‘关键字’ 文件名 查找关键字时不区分大小写
⑤Grep ‘^关键字’ 文件名 查找以关键字开头的行
⑥Grep ‘关键字$’ 文件名 查找以关键字结尾的行
12.文件的解压和压缩以及目录的打包
(1)文件的压缩 gzip 或 bzip2
①将指定文件压缩 gzip -9 文件名 (-9是压缩程度的等级等级越高压缩的越小)
Bzip2 压缩
(2)解压缩
①Gzip -d 文件名
Bizp2 -d 文件名
Gunzip 文件名 (只能解压gzip文件,bzip2不行)
(3)打包
①将一个目录打包
- tar -cf dabao.tar dabao (-c创建归档文件,-f使用归档文件,归档后的 文件名,源文件名)
2)查看归档文件中的内容
②目录解压
tar -xf dabao.tar
(4)同时压缩和打包
tar -czf dabao.tar.gz dabao (-c创建,-z使用gzip压缩(-j使用bzip2压缩),-f使用归档文件)
压缩前是4K,压缩后是173字节
(5)解包
tar -xzf dabao.tar.gz (-x解压,-z用什么压缩的就用什么解)
如果想指定解压后文件的位置:
tar -xzf dabao.tar.gz -C /home(-C后面写解压到的位置)
13.vim 编辑器
三种模式:
命令模式:移动光标,查找字符串,删除,复制,粘贴
移动光标:
光标回行首,数字0,或者shift+6(^),home键
光标回行尾,shift+4($),end键
行间的快速跳转:
回到最后一行:G
回到第一行:gg,1G
回到某一行:行数+G
删除:
删除光标所在行:dd
删除从光标开始的n行:n dd (删10行:10 dd)
删除字符串: x,delet (直接删除光标所在的字符串)
删除光标到行首:d ^
删除光标到行尾:d $
复制,粘贴:
复制光标所在行:yy
粘贴在光标这行之后:p
粘贴在光标这行之前:P
复制多行: n yy
查找字符串:
在命令模式下/,输入查询的字符串,从上往下找
n查找下一个,N查找上一个
?从下往上找
撤销命令:
返回上一次操作:u和U
保存退出:ZZ
输入模式:输入文本
末行模式
:Set nu ,set noun打开行数
:w 保存
:w 路径+文件名 另存为
:e 再打开一个vim文件
:r 读入另外文档的内容
内容替换:
:s /要替换的字符串/替换后的字符串
😒 /abc/ABC/ 把光标所在行的第一个abc替换为ABC
😒 /abc/ABC/g 把光标所在行的所有abc替换为ABC
:358,359 s/abc/ABC/g 同时替换多行
:%s/apache/ABC/g 替换全文
:%s/abc/apache/c 逐个询问是否要替换
14.linux应用程序的安装
一般的服务启动方式:service httpd start 或者直接到/usr/sbin下直接执行httpd
常见的软件包:
Rpm包
Deb包
源代码包
附带安装程序的软件包
绿色免安装的软件包
15.RPM包的管理,查询
http://rpmfind.net/
软件包的依赖关系:当安装一个软件包时,系统有时会提示需要安装xx软件包后才能够安装当前软件包,这就是软件包的依赖关系。
Rpm能自动分析软件包的依赖关系,但不能自动安装软件包,因此有些安装就比较麻烦
Rpm包的命名格式:
Rpm的常用命令:
Rpm -q 查询已安装的rpm包
用法:
-qa :查看系统中已经安装的所有rpm包
-qi :查看指定软件的详细信息 (重要)
-ql :查询指定软件包所在的安装目录,文件列表 (常用)
-qc :仅显示指定软件包安装的配置文件
-qd :仅显示指定软件包安装的文档文件
-qf :查看文件或命令属于哪个安装包的内容
http://httpd.apache.org/ (apache官网)
Rpm -qp 查询未安装的rpm包文件
用法:
-qpi :通过.Rpm包文件查询指定软件的详细信息
-qpl :查询.rpm安装包内所包含的目录,文件列表
-qpc :查看.Rpm安装包内所包含的配置文件列表
-qpd :查看.rpm安装包内所包含的文档文件列表
Linux挂载光盘:
进入光盘目录:
cd /media/CentOS_6.5_Final/
在packages文件夹下可以看到光盘中的rpm包
16.rpm包的安装和卸载
安装命令:
Rpm -i :安装一个新的rpm包
Rpm -U :升级一个rpm软件,若未安装则进行安装
Rpm -F :升级一个rpm软件,若未安装则放弃安装
卸载命令:
Rpm -e :卸载一个rpm包
对于一般安装而言,执行:
Rpm -ivh rpm包名 来进行安装
其中i表示安装,v表示显示安装过程详细信息,h表示进行哈希检验,以‘#’显示安装进度
实列:
安装elinks:
提示需要安装
libnss_compat_ossl.so.0()(64bit) is needed by elinks-0.12-0.21.pre5.el6_3.x86_64依赖包
就先安装此依赖包:
再安装elinks:
测试:
elinks www.baidu.com
安装成功
卸载:
rpm -e elinks-0.12-0.21.pre5.el6_3.x86_64.rpm
卸载时可能遇到报错
这是rpm数据库还没有更新,认为你还没有安装
尝试用rpm --rebuilddb(重建数据库)或者rpm --initdb
当然重建数据库后也可能不管用
Rpm导入验证公钥:
在光盘目录下可以看到
一般用不上
17.源代码编译安装的前提环境搭建
Md5sum校验主要是为了验证你下载的软件是否被修改了,只要你根据下载软件获得的md5码用md5sum算法算一次,与下载网站给出的结果进行比对,如果相同就说明软件没有被修改。
例:
先对源文件进行MD5sum得出一个校验码
此时,修改源文件
仅仅修改一个数字,MD5码就不一样了
这就可以验证软件是否被修改
源码安装的环境:
首先安装gcc和make:
[root@localhost Packages]# yum -y install gcc gcc-c++ make
装完之后查看安装的版本
18.源代码编译安装的步骤
下载源码文件
Wget +链接地址进行下载
wget http://archive.apache.org/dist/httpd/httpd-2.2.17.tar.gz
解压
[root@localhost /]# tar -xzf httpd-2.2.17.tar.gz -C /
进入文件
运行configure文件进行编译
./configure --prefix=/usr/local/apache
编译完成后,执行make
然后执行make install
直到安装完成
注意:make 和make install 可以同时执行:
直接执行:Make && make install
进入安装目录:
进入bin文件夹:
运行httpd程序
打开网页查看是否能访问:
http://192.168.8.155/
发现进不去
查看防火墙状态
service iptables status
关闭防火墙:
service iptables stop
再次启动服务
./httpd 或
./apachectl -k start
再进网页查看
成功启动
关闭服务:
./httpd -k stop 或 ./apachectl -k stop
这是系统自带的rpm版的httpd:
Service httpd start
19.用户账户的管理
(1)用户账号的概述
Root:权限最高,一般在管理系统时使用
普通用户:一般只能在自己的宿主目录中有所有权限,在其他目录只有部分权限
程序用户:用来维持系统或某个程序的正常运行
在httpd进程中可以看到apache的用户在执行程序,apache就是一个程序用户
注意:Apache用户只能程序进行使用,我们不能使用apache来登录
我们先来添加一个账户:用useradd来添加用户
再进入httpd的配置文件:
vim /etc/httpd/conf/httpd.conf
找到242行,httpd默认的用户为apache,现在将它改为httpd
再重启服务后程序用户就变化了
此时,这个httpd是一个程序用户,也是一个普通用户
然后,如果一个程序没有程序用户:
我们把程序用户注释掉:
再重启服务:
此时程序的进程就无法启动
这时候让程序使用httpd用户,但是我们把httpd这个用户删除
删除用户并验证:
再次启动服务:
服务无法启动,没有对应的程序用户是无法运行的
(2)用户账号的管理
/etc/passwd文件中存放的是系统所有用户的基本信息
查看系统中用户的个数:
/etc/passwd中各个字段的含义:
root❌0:0:root:/root:/bin/bash
(3)添加用户
Useradd wys 直接创建
直接创建的用户默认从uid500开始
Useradd zhangsan -u 510
-u:指定一个uid
Useradd lisi -d /lisi
-d:指定宿主目录
用户默认的宿主目录是在/home下
Useradd wangwu -M
-M:不为一个用户创建宿主目录
当创建一个用户且没有宿主目录时,它的用户名与其他用户不同,且在/home下没有宿主目录
如何创建一个程序用户呢?
首先,程序用户没有用户目录,而且程序用户不能用于登录
Useradd zhaoliu -M -s /sbin/nologin
-s:指定用户使用的程序脚本,当设置为nologin时,该用户不能用于登录
这就创建了一个程序用户
注意:虽然zhaoliu这个用户没有创建宿主目录,但是不代表他没有宿主目录
真正的程序用户的uid和gid默认是1-499
手动创建一个程序用户:
①先创建一个组
②在创建这个组的用户
(4)用户的管理
进入cd ~ ls -a 可以看到几个隐藏文件:
.bash_histroy :
记录之前的所有命令
.bash_logout:
退出时执行的脚本
.bash_profile:用户每次登录时要执行的程序
在.bash_profile添加输出语句,在用户登陆时就会显示
注意:.bash_profile 文件内的语句只有在用户登录时才执行,如果中途切换了其他bash(比如切换用户).bash_profile 文件就不会再执行了
测试:
在文件中写入一段别名脚本lll,当用户登录时,改bash生效
当切换bash时:
所以,写别名脚本一般是在.bashrc 这个文件中:
.bashrc这个文件是在切换bash环境时生效
在.bashrc中写入脚本后,重新登录,在切换bash环境后,别名仍然生效:
刚才都是在cd~目录,也就是root用户的工作目录下修改的文件,因此就只能针对一个用户生效。如果要所有用户(新建的)都要生效,就在/etc/skel目录下修改几个bash文件,因为新建的用户都会从这个目录把这几个文件复制到该用户的宿主目录下。
修改这里的文件
修改了.bash_logout文件后
新建用户:
看到logout生效
(5)用户密码设置
修改密码
Passwd username (只能root用户修改)
删除密码
Passwd -d username
Passwd -d并不是真正的将用户的密码删除,而是将密码禁用,使其它用户在切换到该用户时不需要输入密码
锁定密码:
Passwd -l
查看密码状态:
Passwd -S (大写S)
密码锁定之后,只有root用户能登录锁定账号,其他用户均无法登录
解锁密码:
Passwd -u
查看状态
Usermod -l 用于更改账户的名称,只更改名称,不更改用户目录等
(6)删除用户
Userdel username 删除用户,但不删除用户目录
Userdel -r username 删除用户,同时删除用户目录
20.组账户的管理
(1)组账号的概述
当你创建一个用户时系统会自动创建一个与用户同名的组(基本组)
也可以将一个用户放入其他的组(附加组)
一个用户对应一个uid,一个组对应一个gid,类似于windows中的sid
其中:
Root的uid永远为0
1-499保留给程序用户使用
500-60000是普通用户id(可以手动指定id,但不推荐1-499的id)
注意:无法修改root的uid
也无法将其他用户的uid设置为0
(2)组账号的管理
创建组:groupadd 组名
-g:组id
(3)更改附加组
Useradd -G 将用户加入到一个附加组
(4)添加删除组成员
Gpasswd -a 向组内添加一个组成员
Gpasswd -d 删除一个组成员
Gpasswd -M 同时添加多个用户到一个组中
(5)查询用户和组信息
Id:查询用户身份标识
Groups:查询用户所属的组
Finger命令需要下载后才能使用 yum install -y finger
Finger:查询用户账号的详细信息
W:查看用户登录信息
Who:当前有哪些用户登录
21.管理文件的权限和属性
(1)查看目录或文件的属性
Ls -l
第一个字符:
-:文件
D:目录
L:链接
(2)设置目录或文件的权限
更改权限:
Chmod
第一种,用数字来更改权限
第二种,用ugoa,±=和rwx来更改权限
对一个目录改权限:
Chmod -R 目录名 (同时更改目录中所有的权限)
(3)设置目录或文件的归属
Chown 更改属主
Chgrp 更改属组
22.文件权限对服务的影响
修改www文件的执行权限,使other无法执行该文件
就会导致以下情况:
程序用户无法读取和执行该服务
通常是将服务的属主和属组改为程序用户
如果配置文件中的用户与文件夹的属主不匹配,也无法执行服务
23.磁盘分区格式化挂载
(1)添加硬盘
添加完成
(2)查看添加的硬盘
Fdisk -l :列出当前系统的磁盘信息
发现现在只有sda一块硬盘
重启之后再查看:
这时看到了第二块硬盘,但是它没有分区表
Fdisk -l 的意思:list partition table(s) 列出分区表,如果没有分区,就列出/proc/partitions 下的信息
Fdisk -l /dev/sda 可以指定列出的磁盘
Boot 下面有*的是启动磁盘,类似于windows里的活动磁盘
磁盘的id:83是ext3
Linux中的设备块一个的大小是1024 及1k,而windows中的设备块大小是4k
(3)磁盘的分区
上面我们看到/dev/sdb没有分区,要对它进行分区
现在这块磁盘没有进行任何分区
输入m查看帮助:
m:查看操作指令的帮助信息
p:列表查看分区信息
n:新建分区
d:删除分区
t:变更分区类型
w:保存分区设置并退出
q:放弃分区设置并退出
l:列出已知的分区类型
有很多分区类型,但是只用知道82:swap分区,83:ext3分区,8e:LVM分区
创建分区:
n
主分区只有1-4个如果主分区占完了4个,就不能创建扩展分区了
创建好后,p查看创建的分区
最后创建一个主要分区,默认为4,并且将剩余所有空间分配给它
此时,已经把所有主要分区用完了,如果继续新建就是如下结果:
你必须删除一个分区,并创建一个扩展分区
删除一个分区:
创建一个扩展分区:
此时再来新建分区:
这时候不需要选择分区类型,直接选择柱面和大小,系统默认在扩展分区中划分一个新的分区来创建
如果将sdb4(扩展分区)删除,其下的所有分区将一起被删除
最后,在创建好分区后,w保存退出,将分区写入磁盘
分完区后,发现磁盘没有swap分区,怎么进行修改呢?
查看,已经将sdb3改为swap分区
w保存退出
(4)磁盘的格式化
分区完成后,要对磁盘进行格式化
用mkfs进行格式化
mkfs -t ext3 /dev/sdb1 (将/dev/sdb1格式化为ext3格式)
mkfs -t :选择格式化的类型
分别对sdb1,sdb2,sdb5进行格式化
注意:sdb3 是swap分区不用格式化,sdb4是扩展分区不用格式化
可以进行格式化的格式:
创建swap分区:
mkswap 创建swap分区
查看系统中的swap分区大小:
Cat /proc/meminfo 查看详细的系统内存信息
我们刚才划分了5G的swap分区,如何将它放在系统中使用:
用swapon 命令启用刚才划分的swap分区,此时的swap分区为7G
如果要关闭就用swapoff
(5)磁盘的挂载
mount 查看挂载情况:
此时查看系统磁盘的情况
发现并没有sdb磁盘
如果要使用磁盘,就需要将磁盘挂载到文件上
创建3个文件夹用于挂载磁盘
用mount命令挂载磁盘:
如果想卸载磁盘,用umount命令:
注意:如果你当前目录在挂载点内,是无法卸载的,需要在其他目录才能执行卸载命令
进入其他目录进行卸载:
以上是第一种卸载方式,直接卸载磁盘,还有一种卸载方式是卸载挂载的文件夹:
我们先将sdb1同时挂载到两个文件夹上:
注意:在实际应用中,一个磁盘挂载到多个目录可以给不同的目录分配不同的权限进行管理
然后卸载其中一个挂载文件夹/sdb2:
现在卸载了/sdb2上的挂载磁盘,但是/sdb1文件夹仍然挂载着/dev/sdb1这个磁盘
再将/sdb2挂载上:
这次直接卸载挂载的磁盘/dev/sdb1:
两个挂载点都被卸载掉了
总结:卸载磁盘时,如果一个磁盘同时挂载到了多个目录,卸载挂载目录就只会卸载掉该挂载目录的磁盘,而其他目录磁盘仍然是挂载好的;如果直接卸载挂载的磁盘,就会将该磁盘的所有挂载目录一并卸载。
(6)光盘的挂载
mount -o loop iso光盘名称 /挂载点
(7)开启开机自动挂载:
刚才的挂载最大的问题在于系统重启之后挂载就失效了
设置自动挂载:
进入vim /etc/fstab进行编辑:
这个文件是系统开机时会自动挂载的设备
在最后添加你要挂载的设备:
写完要挂载的设备
注意swap分区的挂载方式
重启系统进行验证:
磁盘和swap都挂载了