目录
1. 前言
Shell是用户和Linux操作系统之间的接口。Linux中有多种shell,其中缺省使用的是Bash。
Shell的定义:Linux系统的shell作为操作系统的外壳,为用户提供使用操作系统的接口。它是命令语言、命令解释程序及程序设计语言的统称。
Shell处于操作系统内核与应用成语之间,与文件系统、系统程序/库共处在同一级别。下图是Linux的系统结构。
- 我们常使用的Linux命令就是通过Shell与操作系统进行交互的。
2. Linux命令格式
命令字 [-选项...] [参数...]
- 命令字:命令本身(功能)
- 选项:调整命令功能的
- 短选项:-l -a -d -h(单个字符),短选项可以合并使用:-lad -lh
- 长选项:--help(单词),长选项通常是不能合并使用的
- 参数:命令的执行对象,文件/目录/程序等
- []:可选的
- ...:可以同时有多个选项或参数
3. Linux目录与文件辨别
Linux的核心思想就是一切皆文件,在Liunx系统中我们看到的相关后缀其实只是为了方便我们进行辨识,对于系统来说都是一样的文件,同时为了便于操作,会用不同的颜色去代表不同类型的文件。
文件颜色 | 描述 |
蓝色 | 表示目录(类似windows系统里的文件夹) |
白色 | 表示文件 |
浅蓝色 | 表示链接文件(类似于windows系统的快捷方式) |
绿色 | 表示可执行文件(如脚本,命令程序文件) |
红色 | 表示压缩文件 |
黄色 | 表示设备文件(硬盘、键盘、鼠标、网卡、CPU硬件设备都是以文件的形式存在的) |
红色 | 闪动文件——>表示链接文件不可用 |
4. Shell命令行编辑技巧
键盘上下键调出历史命令
Ctrl + c:废弃当前命令行中的命令,取消当前执行的命令,例如ping
Ctrl + l,clear:清屏
tab建自动补齐:可补齐命令、参数、文件路径、软件名
esc + . :将上一条命令参数变成当前命令的执行对象
Ctrl + a:将当前光标移动至行首
Ctrl + e:将当前光标移动至行尾
Ctrl + u 清空至行首
Ctrl + w 删除一个单词
exit,logout:退出系统
5. Shell常用命令
5.1. 帮助命令
1.man 命令
- man 命令用于查看系统命令的帮助信息,包括使用方法、选项、使用例子等,对比--help ,man 输出的信息更加详细
- 命令格式:man [-选项] 命令
- 常用快捷操作
-
- 向下键向下移一行
- 向上键向上移一行
- [Page Down] 向下翻一页
- [Page Up] 向上翻一页
- /关键字 #搜索关键字,配合n(向下查询)、N(向上查询)
- q 退出
2.help命令
- help命令用于查看shell内部命令的帮助信息,包括使用方法、选项等…
- 命令格式:help [选项] 命令
5.2. 文件和目录操作常用命令
1.cd 命令
cd 命令,用于切换当前目录,它的参数是要切换到的目录的路径,可以是绝对路径,也可以是相对路径。
cd /home 进入 '/ home' 目录
cd .. 返回上一级目录
cd ../.. 返回上两级目录
cd 进入个人的主目录
cd ~user1 进入个人的主目录
cd - 返回上次所在的目录
2.pwd 命令
pwd 命令,显示工作路径
[root@mailvip ~]# pwd
/root
3.ls 命令
ls 命令,查看文件与目录的命令,list的意思
ls 查看目录中的文件
ls -l 显示文件和目录的详细资料
ls -a 列出全部文件,包含隐藏文件
ls -R 连同子目录的内容一起列出(递归列出),等于该目录下的所有文件都会显示出来
ls [0-9] 显示包含数字的文件名和目录名
4.cp 命令
cp 命令,用于复制文件,copy 的意思,它还可以把多个文件一次性地复制到一个目录下
-a :将文件的特性一起复制
-p :连同文件的属性一起复制,而非使用默认方式,与-a相似,常用于备份
-i :若目标文件已经存在时,在覆盖时会先询问操作的进行
-r :递归持续复制,用于目录的复制行为 //经常使用递归复制
-u :目标文件与源文件有差异时才会复制
使用示例: cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
5.mv 命令
mv 命令,用于移动文件、目录或更名,move 的意思
-f :force强制的意思,如果目标文件已经存在,不会询问而直接覆盖
-i :若目标文件已经存在,就会询问是否覆盖
-u :若目标文件已经存在,且比目标文件新,才会更新
使用示例: mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup //将CentOS-Base.repo更名为CentOS-Base.repo.backup
6.rm 命令
rm 命令,用于删除文件或目录,remove的意思
-f :就是force的意思,忽略不存在的文件,不会出现警告消息
-i :互动模式,在删除前会询问用户是否操作
-r :递归删除,最常用于目录删除,它是一个非常危险的参数
5.3. 文件查看常用命令
cat 命令,用于查看文本文件的内容,后接要查看的文件名,通常可用管道与 more 和 less一起使用
cat file1 从第一个字节开始正向查看文件的内容
tac file1 从最后一行开始反向查看一个文件的内容
cat -n file1 标示文件的行数
more file1 查看一个长文件的内容
head -n 2 file1 查看一个文件的前两行
tail -n 2 file1 查看一个文件的最后两行
tail -n +1000 file1 从1000行开始显示,显示1000行以后的
cat filename | head -n 3000 | tail -n +1000 显示1000行到3000行
cat filename | tail -n +3000 | head -n 1000 从第3000行开始,显示1000(即显示3000~3999行)
5.4. 文件编辑常用命令
常用的文件编辑命令有vi vim nano等,根据个人习惯进行选择自己使用舒服的即可,这里主要介绍vi与vim。
vi/vim命令共分为三种模式,分别是命令模式,输入模式和底线命令模式。
命令模式:
用户刚刚启动 vi/vim,便进入了命令模式。
此状态下敲击键盘动作会被Vim识别为命令,而非输入字符。比如我们此时按下 i ,进入输入模式,但是 i 这个字符并不会被输入至文档中,而是被当作了一个命令执行。
以下是常用的几个命令:
i -------切换到输入模式,以输入字符。
x -------删除当前光标所在处的字符。
: -------切换到底线命令模式,以在最底一行输入命令。
若想要编辑文本:启动Vim,进入了命令模式,按下i,切换到输入模式。
命令模式只有一些最基本的命令,因此仍要依靠底线命令模式输入更多命令。
输入模式:
在命令模式下按下i就进入了输入模式。
在输入模式中,可以使用以下按键:
字符按键以及Shift组合,输入字符
ENTER,回车键 --------换行
BACK SPACE,退格键 -------删除光标前一个字符
DEL,删除键 -------删除光标后一个字符
方向键 -------在文本中移动光标
HOME/END -------移动光标到行首/行尾
Page Up/Page Down -------上/下翻页
Insert -------切换光标为输入/替换模式,光标将变成竖线/下划线
ESC -------退出输入模式,切换到命令模式
底线命令模式:
在命令模式下按下 :(英文冒号)就进入了底线命令模式。
底线命令模式可以输入单个或多个字符的命令,可用的命令非常多。
在底线命令模式中,基本的命令有(已经省略了冒号):
q -------退出程序
w -------保存文件
wq -------保存并退出文件
q! -------不保存并退出文件
按ESC键可随时退出底线命令模式。
5.5. 文件搜索命令
find 命令用于在指定目录下查找文件和目录。它可以使用不同的选项来过滤和限制查找的结果。
find / -name file1 从 '/' 开始进入根文件系统搜索文件和目录
find / -user user1 搜索属于用户 'user1' 的文件和目录
find /usr/bin -type f -atime +100 搜索在过去100天内未被使用过的执行文件
find /usr/bin -type f -mtime -10 搜索在10天内被创建或者修改过的文件
5.6. 文件权限命令
1.chmod 命令
作用:改变文件 / 文件夹权限
权限说明:
示例:-rw-r--r--
该权限需要拆分成四个部分 - 为第一部分 ;rw- 为第二部分 ;r-- 为第三部分;r-- 为第四部分
-【标识文件类型】
rw-【该文件的用户权限,从左往右依次为读、写、执行;r为读,w为写,x为执行,-代表没有该权限】
r-- 【该文件的所属组权限,从左往右依次为读、写、执行;r为读,w为写,x为执行,-代表没有该权限】
r-- 【该文件的其他用户权限,从左往右依次为读、写、执行;r为读,w为写,x为执行,-代表没有该权限】
除第一部分外,其余三个部分可以通过数字来标识其权限。定义如下:
0代表--- 1代表--x 2代表-w- 3代表-wx 4代表r-- 5代表r-x
6代表rw- 7代表rwx
所以我们常使用的777就是为该文件的用户、用户组、其他用户赋予该文件的读、写与执行权限。
- 文件权限修改方法一:
我们可以通过我们实际情况进行灵活修改,比如,我们为该文件用户提供全部权限,所属组提供读写权限,其他用户仅有读权限,那么我们就可以用该命令进行修改 chmod 764 {文件名称}
- 文件权限修改方法二:
文件所属用户权限用 u 表示;文件所属用户组权限用 g 表示;文件其他用户权限用 o 表示。
以上的权限赋予方法还可以用该命令进行修改chmod u+x,g+w {文件名称}
2.chown 命令
chown 命令,改变文件的所有者
chown user1 file1 改变一个文件的所有人属性
chown -R user1 directory1 改变一个目录的所有人属性并同时改变改该目录下所有文件的属性
chown user1:group1 file1 改变一个文件的所有人和群组属性
3.chgrp 命令
chgrp 命令,改变文件所属用户组
chgrp group1 file1 改变文件的群组
usr/bin -type f -mtime -10 搜索在10天内被创建或者修改过的文件
5.7. 系统开关机命令
shutdown -h now 关闭系统(1)
init 0 关闭系统(2)
telinit 0 关闭系统(3)
shutdown -h hours:minutes & 按预定时间关闭系统
shutdown -c 取消按预定时间关闭系统
shutdown -r now 重启(1)
reboot 重启(2)
logout 注销
time 测算一个命令(即程序)的执行时间