Linux常用命令介绍
写在前边的话
我在学习的过程中遇到了很多命令不可用的情况,经过找资料发现,是因为脚本没有被安装,这里就可以通过yum
命令进行安装.
例如:不能使用zip
和unzip
[root@localhost tmp]# zip aaa.zip aaa
-bash: zip: command not found
[root@localhost tmp]# yum -y install unzip zip
[root@localhost tmp]# locate redis
-bash: locate: command not found
[root@localhost tmp]# yum -y install mlocate
同时可以通过>
符号将内容写入文件,主要作用是将命令的结果写入文件
[root@localhost tmp]# ls > abc
[root@localhost tmp]# echo "123" > abc
这里可以将ls的结果写入abc文件中.
1.基本命令
1.命令提示符
[root@localhost ~]#
root
当前登录用户
localhost
主机名
~
当前所在目录(~表示家目录)
#
超级管理员的提示符
$
普通用户的提示符
2.命令格式
命令 [选项] [参数]
注意:个别命令使用不遵循此格式;当有多个选项时,可以写在一起;简化选项与完整选项-a
等于--all
.
3.查看目录
ls [选项] [文件或目录]
选项:
- -a 显示所有文件,包括隐藏文件
- -l 显示详细信息
- -d 查看目录属性
- -h 人性化显示文件大小
- -i 显示incode
[root@localhost /]# ls
bin boot dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var
[root@localhost /]# ls -l
total 60
lrwxrwxrwx. 1 root root 7 Aug 18 2017 bin -> usr/bin
dr-xr-xr-x. 4 root root 4096 Sep 12 2017 boot
drwxr-xr-x 19 root root 2960 Feb 11 20:16 dev
drwxr-xr-x. 82 root root 4096 Feb 12 04:16 etc
drwxr-xr-x. 3 root root 4096 Feb 11 20:13 home
lrwxrwxrwx. 1 root root 7 Aug 18 2017 lib -> usr/lib
lrwxrwxrwx. 1 root root 9 Aug 18 2017 lib64 -> usr/lib64
drwx------. 2 root root 16384 Aug 18 2017 lost+found
drwxr-xr-x. 2 root root 4096 Nov 5 2016 media
drwxr-xr-x. 2 root root 4096 Nov 5 2016 mnt
drwxr-xr-x. 2 root root 4096 Nov 5 2016 opt
dr-xr-xr-x 75 root root 0 Feb 11 20:16 proc
dr-xr-x---. 6 root root 4096 Sep 5 2017 root
drwxr-xr-x 21 root root 600 Feb 21 10:32 run
lrwxrwxrwx. 1 root root 8 Aug 18 2017 sbin -> usr/sbin
drwxr-xr-x. 2 root root 4096 Nov 5 2016 srv
dr-xr-xr-x 13 root root 0 Feb 12 04:16 sys
drwxrwxrwt. 10 root root 4096 Mar 11 04:28 tmp
drwxr-xr-x. 13 root root 4096 Aug 18 2017 usr
drwxr-xr-x. 19 root root 4096 Feb 12 04:16 var
-rw-r–r--
- 第一位 文件类型(
-
表示文件d
表示目录l
表示软链接文件) - 之后的分成三组权限(1~3 u所有者权限, 4~6 g所属组其他用户权限, 7~9 o其他人,其他组用户权限)
- r 读 w写 x执行
4.系统命令
切换用户su 用户名
查看系统进程ps
2.文件处理命令
1.目录处理命令
1.建立目录
mkdir -p [目录名]
-p
表示递归创建 make directories
2.切换目录
cd [目录]
- cd ~或cd 进入当前用户的家目录(root用户在/root,其他用户在/home)
- cd - 进入上次目录
- cd … 进入上一级目录
- cd . 进入当前目录
相对路径:参照当前所在目录,进行查找,如:
[root@imooc ~]# cd ../usr/local/src/
绝对路径:从根目录开始指定,一级一级递归查找.在任何目录下,都能进入指定位置,如:
[root@imooc ~]# cd /etc/
3.查询目录所在位置
pwd :print working directory
4.常用目录的作用
- / 根目录
- /bin 命令保存目录(普通用户就可以读取的命令)
- /boot 启动目录,启动相关文件
- /dev 设备文件保存目录
- /etc 配置文件保存目录
- /home 普通用户的家目录
- /lib 系统库保存目录
- /mnt 系统挂载目录
- /media 挂载目录
- /root 超级用户的家目录
- /tmp 临时目录
- /sbin 命令保存目录(超级用户才能使用的目录)
- /proc 直接写入内存
- /sys
- /usr 系统软件资源目录
- /usr/bin 系统命令(普通用户)
- /usr/sbin 系统命令(超级管理员)
- /var 系统相关文档内容
注意1:根目录下的bin和sbin,usr目录下的bin和sbin目录,这四个目录都是用来保存系统命令的,但是bin目录下的是所有用户都能访问的命令,但是sbin目录下的是只有管理员才能访问的命令.
注意2:proc和sys目录不能直接操作,这两个目录保存的是内存的过载点.
5.删除空目录
rmdir [目录名]
6.删除文件或目录
rm -rf [文件或目录]
选项:
- -r 删除目录
- -f 强制执行
7.复制命令
cp [选项] [原文件或目录] [目标目录]
选项:
- -f 复制目录
- -p 连带文件属性复制
- -d 若源文件是链接文件,则复制链接属性
- -a 相当于 -pdr
8.剪切或改名命令
mv [原文件或目录] [目标目录]
如果将文件剪切到相同目录,名字改变,就是改名命令
2.文件处理命令
1.创建文件
touch 创建空文件
2.复制文件
cp 源文件名 新文件名
3.查看文件全部内容
cat 文件路径
4.分页查看文件内容
more 文件路径
5.查看文件的前n行
head -n 数字 文件名
6.查看文件的后n行
tail -n 数字 文件名
3.链接命令
1.链接命令 ln
ln -s [原文件] [目标文件]
功能描述:生成链接文件
选项: -s
创建软链接
注意:直接ln也可以使用,创建的是硬链接
硬链接特征:
- 拥有相同的i节点和存储block块,可以看做是同一个文件
- 可通过i节点识别
- 不能跨分区
- 不能针对目录使用
软链接特征:
- 类似Windows快捷方式
- 软链接拥有自己的i节点和block块,但是数据块中只保存原文件的文件名和i节点号,并没有实际的文件数据
- lrwxrwxrwx 第一位的l表示软链接(注意:软连接的文件权限都为rwxrwxrwx)
- 修改任意文件,另一个都改变
- 删除原文件,软链接不能使用
注意:创建软链接的时候一定要写绝对路径
文件修改
- 通过
vi [文件名]
打开并编辑 - 通过
echo [内容] >> [文件名]
,将内容直接写入文件
3.文件搜索命令
1.文件搜索命令locate
locate
命令比find命令搜索速度快
格式:locate [文件名]
在后台数据库中按文件名搜索,搜索速度最快
locate
命令所搜索的后台数据库是/var/lib/mlocate
但是这个数据库并非实时更新的,如果是新建的文件,会出现查找不到的情况,说明没有更新后台数据库,可以通过updatedb
命令更新
缺点:只能按照文件名搜索
搜索规则:根据/etc/updatedb.conf中的配置进行搜索
- PRUNE_BIND_MOUNTS=“yes” 是否开始搜索限制(如果yes表示启用下边的搜索限制,如果是no表示不启用)
- PRUNEFS ="" 引号中写的是搜索时不需要搜索的文件系统
- PRUNENAMES="" 引号中写的是搜索时不搜索的文件类型
- PRUNEPATHS="" 引号中写的是搜索时不搜索的路径
2.命令搜索命令whereis与which
whereis [选项] [命令名]
主要用于搜索命令所在路径及帮助文档所在位置
选项:
- -b 只查找可执行文件
- -m 只查找帮助文件
这里另外提一句,想要知道当前用户是哪个可以用whoami
命令
[root@localhost ~]# whoami
root
想要知道命令是做什么的可以用whatis
命令
[root@localhost ~]# whatis ls
ls (1) - list directory contents
which [文件名]
搜索命令所在路径及别名
与whereis
的主要区别是显示路径的同时还会显示别名
注意:whereis
和which
命令都无法找到shell自带的命令
配置PATH
echo $PATH
与windows中的path环境变量类似.自己定义的脚本也需要添加到PATH
3.文件搜索命令find
find [搜索范围] [搜索条件]
主要用于搜索文件
示例:find / -name install.log
实际操作应避免这么写,避免大范围搜索,会非常消耗系统资源
find是在系统当中搜索符合条件的文件名.如果需要匹配,使用通配符匹配,通配符是完全匹配.
Linux中的通配符
*
匹配任意内容?
匹配任意一个字符[]
匹配任意个亿中括号内的字符
搜索条件
-iname
搜索条件不区分大小写-user
按照所有者搜索-nouser
查找没有所有者的文件
find /root -iname install.log
find /root -user root
find /root -nouser
-mtime
文件访问时间-ctime
改变文件属性-mtime
修改文件内容
find /var/log/ -mtime +10
#-mtime +10 查找10天前修改的文件
#-mtime -10 查找10天内修改的文件
#-mtime 10 查找10天当天修改的文件
-size
按照文件大小 (这里k需要小写,M是大写)-inum
按照i节点
find . -size 25k
# -25k 小于25KB的文件
# 25k 等于25KB的文件
# +25k 大于25KB的文件
find . -inum 262422
# 查找i节点是262422的文件
# 这里的.代表当前目录
-a
and 逻辑与,两个条件都满足-o
or 逻辑或,两个条件满足一个即可-exec
/-ok
[命令]{}\;
命令,对搜索结果执行命令
注意 这里加的命令必须是查询出来的文件能够执行的命令
find /etc -size +20k -a -size -50k
这条命令的意思是查找etc目录下,大于20KB且小于50KB的文件
find /etc -size +20k -a -size -50k -exec ls -lh {} \;
这条命令代表查找etc目录下,大于20KB且小于50KB的文件并且显示详细信息
4.字符串搜索命令grep
grep [选项] 字符串 文件名1 文件名2
在文件中搜索匹配符合条件的字符串
选项
-i
忽略大小写-v
排除指定字符串
这个功能异常强大,同时还可以和管道结合使用
这里先简单说一下管道:
管道就是|
这个操作符,可以同时执行多个命令
命令1 | 命令2 | 命令3
:同时命令1的结果是命令2的输入,依次类推.
例如:head a.txt | grep java | grep tomcat
这个命令是在前十行中包含java和tomcat的字符串
5.find命令与grep命令的区别
find命令:在系统当中搜索符合条件的文件名,如果需要匹配,使用通配符匹配,通配符是完全匹配.
grep命令:在文件当中搜索符合条件的字符串,如果需要匹配,使用正则表达式进行匹配,正则表达式是包含匹配.
4.帮助命令
1.帮助命令man
man 命令
获取指定命令的帮助
示例:man ls
查看ls的帮助
注意:进入man之后,可以输入/ 查找内容
查找到对应内容,然后按N
查找下一个.按shift+N
查找上一个.按q
退出.
man的级别
- 查看命令的帮助
- 查看可被内核调用的函数的帮助
- 查看函数和函数库的帮助
- 查看特殊文件的帮助(主要是/dev目录下的文件)
- 查看配置文件的帮助
- 查看游戏的帮助
- 查看其它杂项的帮助
- 查看系统管理员可用命令的帮助
- 查看和内核相关文件的帮助
man -f 命令
查看命令用友哪个级别的帮助
也可以使用whatis 命令
,可以查看有几个等级的帮助文档
示例:man 5 passwd
man -k 命令
查看和命令相关的所有帮助
相当于apropos 命令
示例:apropos passwd
2.其他帮助命令
命令 --help
获取命令选项的帮助
help shell内部命令
获取shell内部命令的帮助
示例:
whereis cd
#确定是否是shell内部命令
help cd
#获取内部命令帮助
info 命令
-回车
:进入子帮助页面(带有*号标记)-u
:进入上层页面-n
:进入下一个帮助小节-p
:进入上一个帮助小节-q
:退出
5.压缩与解压缩命令
1. .zip
.gz
.bz2
.zip格式压缩
zip 压缩文件名 源文件
压缩文件
zip -r 压缩文件名 源目录
压缩文件夹
注意:这里的zip格式是可以与windows中的zip通用的
unzip 压缩文件
解压缩文件
.gz格式压缩
gzip 源文件
压缩为.gz格式的压缩文件,压缩完成源文件会消失
gzip -c 源文件 > 压缩文件
压缩为.gz格式,源文件保留
gzip -r 目录
压缩目录下所有的子文件,但是不能压缩目录
gzip -d 压缩文件
解压缩文件
gunzip 压缩文件
解压缩文件
gunzip -r 包含压缩文件的目录
将目录中的压缩文件全部解压
.bz2格式压缩
bzip2 源文件
压缩为.bz2格式,不保留源文件
bzip2 -k 源文件
压缩之后保留源文件
bzip2命令不能压缩目录
bzip2 -d 压缩文件
解压缩,-k保留压缩文件
bunzip2 压缩文件
解压缩,-k保留压缩文件
2. tar.gz
tar.bz2
打包命令tar
tar -cvf 打包文件名 源文件
选项:
-c
打包-v
显示过程-f
指定打包后的文件名-t
查看压缩文件内容,但不解压缩
示例:tar -cvf abc.tar abc
解打包命令
tar -xvf 打包文件名
选项:
-x
解打包-v
显示过程-f
指定打包后的文件名-C
指定解打包后的文件位置
.tar.gz压缩格式
其实.tar.gz格式是先打包为.tar格式,再压缩为.gz格式.同时linux也支持将这两步合并完成的操作
tar -zcvf 压缩包名.tar.gz 源文件
压缩为.tar.gz文件
tar -zxvf 压缩包名.tar.gz
解压缩.tar.gz文件
选项:-z
压缩或解压缩为tar.gz文件
.tar.bz2压缩格式
tar -jcvf 压缩包名.tar.bz2 源文件
压缩为.tar.bz2文件
tar -jxvf 压缩包名.tar.bz2
解压缩.tar.bz2文件
选项:-j
压缩或解压缩为tar.bz2文件
查看压缩包中的文件内容(这里起关键的就是-t
,只查看不解压)
tar -ztvf test.tar.gz
解压缩到自定义的文件位置(-C关键字是设置解压缩位置)
tar -zxvf test.tar.gz -C /tmp/
同时压缩多个文件,只需要将多个文件放在后边,空格隔开
tar -zcvf test.tar.gz a b c
6.关机和重启命令
1.shutdown命令
shutdown [选项] 时间
选项:
-c
取消前一个关机命令-h
关机-r
重启
这个命令执行之后,就不能进行其他操作,这个时候可以在命令后边加一个&,表示将这条命令加入后天执行.
shutdown -r 05:30 &
2.其他关机命令
- halt
- poweroff
- init 0
不建议使用
3.其他重启命令
- reboot (可以使用)
- init 6 (不要使用)
4.系统运行级别
- 关机
- 单用户
- 不完全多用户,不含NFS服务
- 完全多用户
- 未分配
- 图形界面
- 重启
runlevle
查看系统运行级别
[root@localhost tmp]# runlevel
N 3
# N代表之前的运行级别是关机,3代表当前的运行级别是3
# 如果是从图形界面切换到多用户这里会显示为"5 3"
cat /etc/inittab
查看系统默认运行级别
cat /etc/inittab
....
id:3:initdefault:
....
5.退出登录命令
logout
这里需要注意,每次用xshell这种远程工具操作完后,都需要执行这条命令退出登录,切记不要直接关掉xshell,否则每次登录都相当于是新的用户操作,多次操作后会超出linux支持的用户数,无法登陆,只能重启服务器.
7.其他常用命令
1.挂载命令
1.查询与自动挂载
mount
查询系统中已经挂载的设备
mount -a
依据配置文件/etc/fstab的内容,自动挂载
2.挂载命令格式
mount [-t 文件系统] [-o 特殊选项] 设备 文件名 挂载点
选项:
-t 文件系统
:加入文件系统类型来指定挂载的类型,可以ext3,ext4,iso9660等文件系统-o 特殊选项
:可以指定挂载的额外选项
2.用户登录查看和用户交互命令
查看登录用户信息
w 用户名
命令输出:
- USER:登录的用户名
- TTY:登录终端
- FROM:从哪个IP地址登录
- LOGIN@:登录时间
- IDLE:用户闲置时间
- JCPU:指的是和该终端连接的所有进程占用的时间.这个时间里并不包括过去的后台作业试驾,但却包括当前正在运行的后台作业所占用的时间
- WHAT:当前正在运行的命令
who 用户名
和w
作用相同
命令输出:
- 用户名
- 登录终端
- 登录时间(登录来源IP地址)
查询当前登录和过去登录的用户信息
last
last命令默认是读取/var/log/wtmp文件数据
命令输出
- 用户名
- 登录终端
- 登录IP
- 登录时间
- 退出时间(在线时间)
查询所有用户的最后一次登录时间
lastlog
lastlog命令默认是读取/var/log/lastlog文件内容
命令输出:
- 用户名
- 登录终端
- 登录IP
- 最后一次登录时间
8.shell基础
1.Shell概述
Shell是一个命令行解释器,同时也是一门功能强大的编程语言
其中主要语法类型有Bourne Shell和C Shell两种
Bourne包括sh,ksh,Bash,psh,zsh
C包括:csh,tsch
2.脚本执行方式
1.echo输出命令
echo [选项] [输出内容]
选项:
-e
支持反斜线控制的字符转换