前言
总结这篇博客,其实我也想了很久。一直犹豫不决,写还是不写呢?最终我还是决定总结一篇基础篇,自己以前学习的时候都是看视频总结的。写下这篇总结对新入坑者肯定是有些好处的,至少可以少走一些弯路,自己也可以得到一些提升。
还没有安装虚拟机的小伙伴可以参考我之前的博文:
linux养成达人之入门实践图文超详细(工欲善其事,必先利其器篇)
目录
- 命令格式以及文件处理命令
- 文件搜索命令
- 帮助命令
- 压缩命令
- 关机与重启命令
- 其它常用命令
- shell基础
正文
一、命令格式以及文件处理命令
好了,上面罗里吧嗦的讲了一堆,结果只是前戏。这会肯定有人纳闷了,我看了这么久的前戏,咋还没进去。这不,下面你蹭一蹭就进去了,进入正题。
[root@localhost~]#
- root:代表当前登录用户,超级用户。
- localhost:代表默认主机名
- ~:代表你的当前目录[家目录],root用户登录所在初始目录在根目录
- #:代表root用户提示符
- 如果是$符号是普通用户登录
1. 命令格式
- 命令 [选项][参数]
- 注意:个别命令使用不遵循此格式。有多个选项时可以写在一起,简化选项与完整选项-
a
等于--all
查看列表详情命令:ls
[选项][参数]
- -
a
:显示所有文件,包含隐藏文件 - -
l
:显示详细信息 - -
d
:查看目录属性 - -
h
:个性化显示文件大小 - -
i
:显示inode
2. 目录处理命令
- 建立目录命令:
mkdir
[选项] [目录] - -p:递归创建
切换所在目录命令:cd
[目录]
- 简化操作,注意:cd与符号之间是有空格的
- cd ~:进入当前目录的家目录
- cd -:进入上次目录
- cd …:进入上一级目录
- cd .:进入当前目录
TAB
键:补全
查看当前路径命令:pwd
,常用命令
删除目录命令:rmdir
[选项],删除目录,一般不用,了解就行。
删除命令:rm
[选项] [目录或文件]
- -r:删除目录
- -f:强制删除
复制命令:cp
[选项][原目录或文件][目标目录]
选项:
- -r:复制目录
- -p:连带文件属性复制
- -d:如果源文件是链接文件,则复制链接属性
- -a:相当于-pdr
剪切或改名命令:mv
[原目录或文件][目标目录]
- 注意:当原文件目录和目标目录是同一目录时就是改名,当原文件目录和目标目录不是一目录时就是剪切
3. 常见目录作用
- :/ 根目录
- :/
bin
命令保存目录(普通用户就可以读取的命令) - :/
boot
启动目录,启动相关文件 - :/dev 设备文件保存目录
- :/
etc
配置文件保存目录 - :/
home
普通用户的家目录 - :/lib 系统库保存目录
- :/mnt 系统挂载目录
- :/media 挂载目录
*********************************** 视觉疲劳分割线 ***********************************
- :/
root
超级用户的家目录 - :/
tmp
临时目录 - :/
sbin
命令保存目录(超级用户才能使用的目录) - :/
proc
直接写入内存 - :/sys
- :/
usr
系统软件资源目录 - :/usr/bin 系统命令(普通用户)
- :/usr/sbin 系统命令(超级用户)
- :/
var
系统相关文档内容
4. 链接命令:ln
,注意:实际的应用中实用的更多的是软链接
硬链接:ln /root/cangls /tmp/cangls.hard
特征:
- 拥有相同的I节点和block块,可以看做是同一个文件
- 可通过I节点识别
- 不能夸分区
- 不能针对目录使用
软链接:ln -s /root/cangls /tmp/cangls.soft
,注意:使用软链接时,原文件一定要用绝对路径
特征:
- 类似windows快捷键
- 软链接拥有自己的I节点和block块,但是数据块中只保存源文件的文件名和I节点号,并没有实际的文件数据
- lrwxrwxrwx,l:软链接,软链接权限都为lrwxrwxrwx,注意:真实权限都看源文件
- 修改任意文件,另一个都改变
- 删除原文件,软链接无法使用
二、文件搜索命令
- 文件搜索命令
locate
- locate [文件名],只能接文件名
- 在后台数据库中按文件名搜索,搜索速度更快
/var/lib/mlocate
- locate命令所搜索的后台命令,不是及时更新,这时可以使用updatedb命令更新
updatedb
更新数据库
/etc/updatedb.conf
配置文件
- PRUNE_BIND_MOUNTS,开启搜索限制
- PRUNEFS="",不搜索的系统文件
- PRUNENAMES="",不搜索的文件类型
- PRUNEPAEHS="",不搜索的路径
2. 命令搜索命令
whereis
[命令],搜索命令所在路径以及帮助文档所在位置
- b:只查找可执行文件
- m:只查找帮助文件
- 注意:局限性,只能搜索系统命令
which
[文件名]
- 搜索所在路径以及别名,部分命令不支持,例如:pwd,cd
find
文件搜索命令
- find [搜索范围][搜索条件]
- 例如:
find / -name install.log
- 避免大范围搜索,会非常耗费系统资源。
- find是在系统中搜索符合条件的文件名。如需匹配,使用通配符,通配符是完全匹配。
不区分大小写:find
/root -iname install.log
按照所有者搜索:find
/root -user root
查找所有者的文件:find
/root -nouser
查找10天前修改的文件:find
/var/log -mtime +10
- -10,10天内修改的文件;10,10天当天修改的文件;+10,10天前修改的文件。
atimne
,文件访问时间;ctime
,修改文件属性;mtime
,修改文件内容。
查找/etc
目录下大小为25KB的文件:find /etc -size 25k
- -25k,小于25KB的文件
- 25k,等于25KB的文件
- +25k,大于25KB的文件
查找i节点为262422的文件
find . -inum 262422
查找/etc/目录下大于20KB且小于50KB的文件
find /etc -size +20k -a -size -50k
- -a相当于and,逻辑与,两个条件都满足
- -o相当于or,逻辑或,两个条件满足一个即可
查找/etc/目录下大于20KB且小于50KB的文件,并且显示详细信息
find /etc -size +20k -a -size -50k -exec ls -lh {} \;
-exec/-ok
命令{}\;
对搜索结果执行操作
grep
字符串搜素命令
- grep [选项] 字符串 文件名,在文件当中匹配符合的字符串
- -i,忽略大小写
- -v,排除指定字符串
- 根据文件大小匹配:
grep "size" anaconda-ks.cfg
find
与grep
的区别
- find命令:在系统当中搜索符合条件的文件名,如需匹配,使用通配符,通配符是完全匹配。
- grep命令:在文件当中搜索符合条件的字符串,如需匹配,使用正则表达式进行匹配,正则表达式是包含匹配。
三、帮助命令
1. 帮助命令,man
的级别:
- 1:查看命令的帮助
- 2:查看可被内核调用的函数的帮助
- 3:查看函数和函数库的帮助
- 4:查看特殊件的帮助(主要是/dev目录下的文件)
- 5:查看配置文件的帮助
- 6:查看游戏的帮助
- 7:查看其它杂项的帮助
- 8:查看系统管理员可用命令的帮助
- 9:查看和内核相关文件的帮助
man
命令,获取指定命令的帮助
- 例如:
man ls
,查看ls的帮助
查看命令拥有哪个级别的帮助
man -f
命令相当于whatis
命令
例如:
- man -5 passwd
- man -4 null
- man -8 ifconfig
查看命令相关的所有帮助
man -k
命令,相当于apropos
命令- 例如:apropos -passwd
2. 其它帮助命令
--help
命令,获取命令选项帮助- 例如:ls --hrlp
help shell
内部命令
- 获取shell内部命令的帮助
- 例如:whereis cd,确定是否是shell内部命令
- 例如:help cd,获取内部命令帮助
info
,详细命令帮助
- 回车:进入子帮助页面(带有*号标记)
- u:进入上层页面
- n:进入下一个帮助小结
- p:进入上一个帮助小结
- q:退出
四、压缩命令
1. 压缩命令1
zip
命令
- 压缩文件:
zip
压缩文件名 源文件 - 压缩目录:
zip -r
压缩文件名 原目录 - 解压缩:
unzip
压缩文件
.gz
格式压缩,gzip
源文件
- 压缩为
.gz
格式的压缩文件,源文件会消失
gzip -c
源文件 > 压缩文件
- 压缩为
.gz
格式,源文件保留,例如:gzip -c bols > bols.gz
gzip -r
目录
- 压缩目录下所有的子文件,但不能压缩目录
.gz
格式解压缩
- gzip -d 压缩文件
- gunzip 压缩文件
.bz2
格式压缩
- bzip2 源文件
- 压缩为.bz2格式,不保留源文件
bzip2 -k
源文件
- 压缩后保留源文件
- 注意:bzip2命令不能压目录
.bz2
解压缩
bzip2 -d
压缩文件- 解压缩,加上
-k
属性保留压缩文件
bunzip2
压缩文件
- 解压缩,加上-k属性保留压缩文件
2. 压缩命令2
.tar.gz
压缩格式- 其实
.tar.gz
格式是先打包为.tar格式,在压缩为.gz格式
tar -zcvf
压缩包名.tar.gz
源文件
- -z:压缩为.tar.gz格式
tar -zxvf
压缩包名.tar.gz
源文件
- -x:解压缩.tar.gz格式
.tar.bz2
压缩格式
- tar -jcvf 压缩包名.tar.bz2 源文件
- -j:压缩为.tar.bz2格式
- tar -jxvf 压缩包名.tar.bz2 源文件
- -x:解压缩.tar.bz2格式
打包命令tar
tar -cvf
打包文件名 源文件
- -c:打包
- -v:显示过程
- -f:指定打包后的文件名
- 例如:tar -cvf bols.tar longls
解打包命令
- tar -xvf 打包文件名
- -x:解打包
- 例如:
tar -xvf bols.tar
五、关机与重启命令
了解关机与重启命令之前,首先看一下系统运行级别:
- 0:关机
- 1:单用户
- 2:不完全多用户,不含NFS服务
- 3:完全多用户
- 4:未分配
- 5:图形界面
- 6:重启
- 关机命令
shutdown
命令,shutdown
[选项] 时间
- -c:取消前一个关机命令
- -h:关机
- -r:重启
*.**********************************************分割线***********************************************1
- 其它关机命令:halt,poweroff,init 0
- 其它重启命令:
reboot
,init 6 - 注意:使用服务器时,不要随便去使用关机命令。一旦使用了,会造成不必要的麻烦。
2.重启命令
reboot
,执行命令进行重启shutdown -r
,执行命令进行重启
注意:使用logout
命令,养成良好的习惯退出登录
六、其它常用命令
- 挂载命令格式
mount
[-t 文件系统] [-o 特殊选项] 设备文件名 挂载点
-t
文件系统:加入系统文件类型来指定挂载的类型,可以是ext3
、ext4
、iso9660
等文件系统-o
特殊选项:可以指定挂载的额外选项
挂载命令,查询与自动挂载
mount
:查询系统中已经挂载的设备mount -a
:依据配置文件/etc/fstb
的内容,自动挂载
部分参数说明
atime/noatime
:更新访问时间/不更新访问时间。访问分区文件时,是否更新文件的访问时间,默认为更新。async/sync
:异步/同步,默认为异步auto/noauto
:自动/手动,执行mount -a命令时,是否会自动安装/etc/fstb文件内容挂载,默认自动。defaults
:定义默认值,相当于rw
,suid
,dev
,exec
,auto
,nouser
,async
这七个选项。exec/noexec
:执行/不执行,设定是否允许在文件系统中执行可执行文件,默认exec允许。remount
:重新挂载已挂载的文件系统,一般用于指定修改特殊权限。rw/ro
:读写/只读,文件系统挂载时,是否具有读写权限,默认rw
。suid/nosuid
:具有/不具有suid权限,设定文件系统是否具有suid和sgid的权限,默认具有。user/nouser
:允许/不允许普通用户挂载,设定文件系统是否允许普通用户挂载,默认不允许,只有root
可以挂载分区。usrquota
:写入代表文件系统支持用户磁盘配额,默认不支持。grpquota
:写入代表文件系统支持组磁盘配额,默认不支持。
挂载光盘
- 建立挂载点:
mkdir /mnt/cdrom/
- 挂载光盘:
mount -t iso9660 /dev/cdrom /mnt/cdrom/
,这里说明下:只是习惯在mnt
下建立,media
下建立也行。 mount /dev/sr0 /mnt/cdrom/
卸载命令
unmount
设备文件名或者挂载点- 例如:
unmount /mnt/cdrom/
挂载U盘
fdisk -l
:查看U盘设备文件名mount -t vfat /dev/sdb1 /mnt/usb/
注意:Linux默认不支持NTFS文件系统
2. 用户登录查看命令
查看用户登录信息,w
用户名
命令输出:
USER
:登录的用户名TTY
:登录终端FROM
:从哪个IP地址登录LOGIN@
:登录时间DILE
:用户闲置时间JCPU
:与该终端连接的所有进程占用的时间。这个时间里并不包括过去的后台作业时间,但包括当前正在运行的后台作业占用时间PCPU
:当前进程所占用时间WHAT
:当前正在运行的命令w
查询登录用户,显示系统时间和运行时间,用户个数以及平均负载。
查看登录用户信息,who
用户名
命令输出:
- 用户名,登录终端,登录时间(登录来源IP地址)
whoami
查看当前用户
查询当前登录和过去登录的用户信息,last
last
命令默认读取/var/log/wtmp
文件数据- 命令输出:用户名,登录终端,登录IP,登录时间,退出时间(在线时间)
查看所有用户最后一次登录时间,lastlog
lastlog
命令默认读取/var/log/lastlog
文件内容- 命令输出:用户名,登录终端,登录IP,最后一次登录时间
netstat
命令,查看网络状态
netstat -an | grep ESTABLISHED
七、shell基础
1.shell
概述
- shell的两种主要语法类型有
Bourne
和C
,这两种语法彼此不兼容。Bourne家族主要包括:sh、ksh、Bash、psh、zsh; - C家族主要包括:csh、tcsh
Bash
中其它特殊符号
- ‘’,单引号。在单引号中所有特殊符号,如"$“和”`"(反引号)都没有特殊含义
- “”,双引号。在双引号中所有特殊符号除"
$
"、"、"、"\
“外都无特殊含义。”$"、"、"、"“拥有"调用变量的值”、"引用命令"和"转义符"的含义 - ``,反引号。反引号括起来的是系统命令,在Bash中会优先执行它。和
$
()作用一样,推荐使用$
(),反引号容易误导。 - $(),与反引号作用相同,用来引用系统命令。
- #,在shell脚本中,#代表注释。
$
,用于调用变量的值,如果需要调用name的值时,需要使用$name获取变量的值。- \,转义符,跟在\之后的特殊符号将失去特殊含义,变为普通字符。例如:$将输出"$"符号,则不会作为变量引用。
2 .脚本执行方式
#编写一个简单的linux脚本,使用vim命令
vim /home/hello.sh
#注意你的脚本开头必须加上:#!/bin/bash
#!/bin/bash
echo "hello world" >> /root/hello.log
#赋予读和执行权限
chmod 755 /hello.sh
#使用 sh hello.sh 命令执行
3. 别名与快捷键
查看与设定别名
alias
命令,查看系统命令中所有的命令别名alias
别名 = ‘原命令’,设定命令别名,当然这样设置只会临时生效
别名永久生效与删除别名
vi ~/.bashrc
,写入环境变量配置文件unalias
别名,删除别名
命令生效顺序
- 第一顺位执行用绝对路径或相对路径执行的命令
- 第二顺位执行别名
- 第三顺位执行Bash的内部命令
- 第四顺位执行按照$PATH环境变量定义的目录查找顺序找到的第一个命令
4. 历史命令,history
[选项][历史命令保存文件]
- -c:清空历史命令
- -w:把缓存中的历史命令写入历史命令保存文件~/.bash_history
历史命令的调用
- 使用上、下箭头调用以前的历史命令
- 使用"!n"重复执行第n条命令
- 使用"!!"重复执行上一条命令
- 使用"!字符串"重复执行最后一条以该字符串开头的命令
5. 输出重定向
echo
输出命令 [选项][输出内容]
- -e:支持反斜线控制的字符转换
控制字符作用
- \a:输出警告音
- \b:退格键,向左删除
- \n:换行符
- \r:回车键
- \t:制表符,TAB键
- \v:垂直制表符
- \0nnn:按照八进制ASCII码输出字符。其中0为数字零,nnn为三位八进制数。
- \xhh:按照十六进制ASCII码输出字符。hh是两位十六进制数。
例如:echo "cangls" >> av.avi
,表示以追加形式将苍老师输出到av
文件中。
标准输出重定向:
-
命令 > 文件,以覆盖的方式,把命令的正确输出到指定的文件或设备当中
-
命令 >> 文件,以追加的方式,把命令的正确输出到指定的文件或设备当中
-
错误命令 2> 文件,以覆盖的方式,把命令的错误输出到指定的文件或设备当中
-
错误命令 2>> 文件,以追加的方式,把命令的错误输出到指定的文件或设备当中
正确输出和错误输出同时保存:
- 命令 > 文件 2>&1,以覆盖的方式,把命令的正确和错误输出保存在同一个文件中
- 命令 >> 文件 2>&1,以追加的方式,把命令的正确和错误输出保存在同一个文件中
- 命令 &> 文件,以覆盖的方式,把命令的正确和错误输出保存在同一个文件中
- 命令 &>>文件,以追加的方式,把命令的正确和错误输出保存在同一个文件中
- 命令 >> 文件1 2>> 文件2,把正确的输出到文件1中,错误的输出到文件2中
有出重定向,当然也有输入重定向,了解就行。
wc
[选项][文件名]
- -c:统计字节数
- -w:统计单词数
- -l:统计行数
最后总结出实用的几种,以追加的形式把错误和正确的结果输出到文件中:
- 命令 >> 文件 2>&1
- 命令 &>> 文件
- 命令 >> 文件1 2>> 文件2
6. 管道符
命令格式
- 命令1 | 命令2,命令1的正确输出作为命令2的操作对象
多命令顺序执行
- ;,格式1:命令2,多个命令顺序执行,命令之间没有任何逻辑关系
- &&,命令1&&命令2,逻辑与,当命令1正确执行,命令2才会执行;命令1无法正确执行,命令2不会执行
- ||,命令1||命令2,逻辑或,当命令1非正确执行,命令2才会执行;命令1正确执行,命令2不会执行
7. 通配符
linux中的通配符
*
,匹配任意内容?
,匹配任意一个字符- [],匹配任意一个中括号内的字符,例如[abc]代表匹配一个字符,可能是a,也可能是b或c。
- [-],匹配中括号里的任意一个字符,-代表一个范围,例如:[a-z]代表匹配一个小写字母。
- [ ^ ],逻辑非,匹配不是中括号里的一个字符,例如:[^0-9]代表匹配一个非数字的字符。
思来想去还是把这几个总结放在最后
安装完系统后,使用date
命令,发现虚拟机的时间不对,是不是感觉有点不舒服,强迫症得把它改回来。首先使用chkconfig --list | grep ntpdate
命令进行检查是否安装服务,chkconfig
命令是针对rpm
包安装的服务的。假如没安装,使用yum -y install ntpdate
命令安装。
使用此命令:ntpdate time.windows.com
,校对时间,值得注意的是这样只会临时生效。
这里还是写详细点,通过vim
命令编辑文件,vim
[文件名]。想编辑这个文件,会有提示按i
键插入,退出保存输入:wq
,不保存退出输入q!
。
这会有小伙伴会问了,每次开机启动都要手动执行校对时间命令岂不是很麻烦,别急嘛。这不贴心的暖男给你们找出解决方法了,编辑vim /etc/rc.local
文件 ,写入ntpdate time.windows.com
就OK了。如下图所示:
添加用户与设置密码,这里再补充一个常用的命令,有时候为了学习方便,你会去新建几个普通用户进行测试。使用useradd
命令添加用户,使用passwd
命令修改密码。
useradd
[选项]
useradd 接用户名,例如:useradd user1
,新建一个user1用户,当然useradd也可以加参数,使用man useradd
命令可查看帮助文档,后面会总结到的。如下图,你进入了帮助文档,按上下键往下翻。想退出,按q键就可以直接退出帮助文档了。
passwd
[选项]
passwd 用户名,例如:passwd user1
,修改user1的密码,同样使用上面提到的man
帮助命令可以查看帮助文档。
了解一些常用的快捷键,很实用的
- ctrl + c:强制终止当前命令
- ctrl + l:清屏
- ctrl + a:光标移动到命令行首
- ctrl + e:光标移动到命令行尾
- ctrl + u:从光标所在位置删除到行首
- ctrl + z:把命令放入后台
- ctrl + r:在历史命令中搜索
TAB
快捷键,命令与补全文件。在Bash
中,命令与文件补全是非常方便与常用的功能,只要在输入命令或文件时,按"TAB"键就会自动补全。
好了,到此为止就是此篇文章的全部内容了,能看到这的都是帅哥靓妹啊!!!祝在座的各位客官们鼠年大吉,“鼠”不尽的快乐!“鼠”不尽的收获!“鼠”不尽的钞票!“鼠”不尽的笑容!“鼠”不尽的幸福!“鼠”不尽的甜蜜!“鼠”不尽的激情!“鼠”不尽的活力!“鼠”不尽的健康!
尾声
相信小伙伴们看了这篇博客,对linux操作系统的基本命令肯定是有所了解了。centos、ubantu等等这些都是类Unix操作系统,命令使用都大同小异,基本上很多都是通用的,用啥系统都因人而异。不过也得适应公司所使用的,个人比较喜欢用centos而已。