文章目录
1 Shell
1.1 Shell概述
操作系统的核心功能就是管理和控制计算机硬件、软件资源,以尽量合理、有效的方法组织多个用户共享各种资源,而Shell则是介于使用者和操作系统核心程序(Kernel)间的一个接口。在各种Linux发行版中,目前虽然已经提供了丰富的图形化接口,但是Shell仍然是一种非常方便、灵活的途径。
Linux中的Shell又被称为命令行,在这个命令行窗口中,用户输入指令,操作系统执行指令并将结果回显在屏幕上。
1.2 Shell的使用
1.2.1 打开终端窗口
两种方式:
- 右击桌面后选择“在终端中打开”;
- 打开系统菜单”应用程序”—>”工具” —>”终端”。
1.2.2 切换账户方式
在进入linux系统时如果是用普通用户账号登录,进入终端窗口时命令行提示符以“$”结尾;
如果是超级用户root则是以“#”结尾的。
可以使用su命令在终端窗口中切换账户:
- su root 切换到root账户
- su 切换到root账户
- su (普通用户名称) 切换到该普通用户
注意:超级用户切换到普通用户时,不需要输入密码,普通用户切换到超级用户或普通用户时,需要输入密码。
1.2.3 使用Shell提示符
在Linux系统启动的最后定义了6个虚拟终端,可以供用户随时切换,切换时用Ctrl+Alt+F1~Ctrl+Alt+F6组合键可以打开其中任意一个。不过,此时需要重新登录。
返回原来的图形桌面环境:Ctrl+Alt+F7
1.2.4 Shell中的文件及目录管理命令
1.拷贝文件——cp [-f -i -r] 源文件 目标文件
- -f 表示直接覆盖
- -r 递归复制该目录及其子目录下的文件(拷目录)
- -i 表示要征求用户的意见(用户同意按y才覆盖,按n不覆盖)
例:
命令 | 选项 | 源文件 | 目标文件 |
---|---|---|---|
cp | /etc/passwd | /tmp | |
cp | -r | /etc/yum | /tmp |
cp | *.c | /home/sjh |
2.移动文件——mv [-f、-i] 源文件 目标文件
命令 | 选项 | 源文件 | 目标文件 |
---|---|---|---|
mv | /tmp/passwd | /etc | |
mv | /tmp/yum | /etc | |
mv | *.c | /home/sjh | |
mv | test.txt | test222.txt |
mv test.txt test222.txt 可以实现重命名操作
3.文件和目录列表——ls [-a -A -d -l -i ]
- -a 显示包括隐藏文件在内的所有文件
- -A 显示除隐藏文件“.”和“…”以外的所有文件列表
- -d 显示目录自身的信息
- -l 以长格式显示文件或目录的信息
- -i 显示文件索引节点号(inode)
命令 | 选项 | 文件名或目录名 |
---|---|---|
ls | ||
ls | -l | |
ls | - a | /root |
ls | -dil /root |
4.删除文件或目录——rm [-i f r] 文件名或目录名
- -f 直接删除
- -i 询问删除
- -r 加上可以删除目录
命令 | 选项 | 文件名或目录名 |
---|---|---|
rm | /tmp/* | |
rm | -rf | /tmp |
5.创建目录——mkdir [-p] 目录名
- -p 创建多级空目录
命令 | 选项 | 目录名 |
---|---|---|
mkdir | foo | |
mkdir | -p | zzti/cs/wl16 |
6.删除空目录——rmdir [-p] 目录名
- -p 删除多级空目录
命令 | 选项 | 目录名 |
---|---|---|
rmdir | foo | |
rmdir | –p | zzti/cs/wl16 |
注意:删除非空目录用命令 rm -r
7.查看当前工作目录——pwd
8.切换目录——cd
- cd 等价于 cd ~ 进入当前用户的主目录
- cd … 进入当前目录的上一级目录,即当前目录的父目录
- cd / 进入根目录
- cd /root 进入/root
- cd - 返回刚才的工作目录
9.查找文件或目录——find <指定目录> <指定条件> <指定动作>
find是最常见和最强大的查找命令,你可以使用它找到任何 你想要的文件。
- <指定目录>:所要搜索的目录及其所有子目录。默认为当前目录。
- <指定条件>:所要搜索的文件的特征。
- <指定动作>:对搜索结果进行特定的处理。
如果什么参数也不加,find默认搜索当前目录及其子目录,并且不过滤任何结果(也就是返回所有文件),将它们全都显示在屏幕上。
find / –name wl11.txt
在根目录中查找名称为wl11.txt的文件。
find . -name 'my*' -ls
搜索当前目录(含子目录)中,所有文件名以my开头的文件,并列出详细信息。
find / -user sjh
在根目录中查找所有者为sjh的文件。
find / -perm +4000
find /etc -newer /etc/passwd
10.查找文件或目录——locate [-i] keyword
locate命令其实是“find -name”的另一种写法,但是要比后者快得多,原因在于它不搜索具体目录,而是搜索一个数据库。
(
/var/lib/mlocate/mlocate.db
),这个数据库中含有本地所有文件信息。Linux系统自动创建这个数据库,并且每天自动更新一次,所以使用locate命令查不到最新变动过的文件。为了避免这种情况,可以在使用locate之前,先使用updatedb命令,手动更新数据库。
$ locate | /etc/sh | //搜索etc目录下所有以sh开头的文件。 | |
---|---|---|---|
$ locate | ~/m | //搜索用户主目录下,所有以m开头的文件。 | |
$ locate | -i | ~/m | //搜索用户主目录下,所有以m开头的文件,并且忽略大小写。 |
11.寻找“执行文件”——which [-a] command
根据PATH这个环境变量所规范的路径去查询“执行文件”的文件名。
例如:which ls
which ifconfig
which cd(找不着cd的原因是cd是bash内置的命令,使用type cd试试)
注意:which后面接的是完整文件名。
12.寻找特定文件——whereis [-b、-m、-s、-u] 文件或目录名
- -b:只找二进制格式的文件
- -m:只找在说明文件manual路径下的文件
- -s:只找source源文件
- -u:查找不在上述三个选项当中的其他特殊文件
whereis | ifconfig |
---|---|
whereis | passwd |
13.查询命令的作用——whatis 相当于man –f
例如:whatis ls(等价于man -f ls)
14.查看文件的类型——file
例如:file /bin/ls
file /etc/passwd
2 Linux常用快捷键
快捷键 | 功能 |
---|---|
【Tab】 | ①命令补全;②文件名或目录名补全;③连续按下两次【Tab】,显示以输入字符开头的所有命令 |
【Ctrl】+c | ①结束目前正在运行的程序;②取消当前命令行的编辑 |
【Ctrl】+d | ①结束键盘的输入;②让用户离开文字界面,相当于输入exit;③在命令行中向右删除,相当于按下Del键 |
【Ctrl】+l | 终端清屏 |
【Ctrl】+z | 将正在运行的程序送到后台 |
【Ctrl】+r | 搜索历史命令 |
【Ctrl】+a | 移动光标到所在行的行首 |
【Ctrl】+e | 移动光标到所在行的行尾 |
【Ctrl】+u | 输入了错误的命令,使用该快捷键会擦除从当前光标位置到行首的全部内容 |
【Ctrl】+k | 输入了错误的命令,使用该快捷键会擦除从当前光标位置到行尾的全部内容 |
【Ctrl】+w | 擦除光标位置前的单词(以空格划分);如果光标在一个单词本身上,它将擦除从光标位置到该单词词首的全部字母 |
【Ctrl】+y | 粘贴使用Ctrl+w,Ctrl+u和Ctrl+k快捷键擦除的文本 |
3 Linux运行级别
Linux系统中定义的7种运行级别:
级别号 | 类型 | 是否常用 |
---|---|---|
0 | halt(系统关机) | |
1 | Single user mode(单用户模式) | |
2 | Multiuser,without NFS | |
3 | Full Multiuser mode (多用户状态) | √ |
4 | unused | |
5 | X11 (登录图形界面) | √ |
6 | Reboot(重启) |
从纯命令行模式进入图形用户界面的命令:startx
在/etc/inittab文件中 id:3:initdefault:
运行级别3默认不启动X window图形界面服务;
默认级别5默认启动X window。
- 运行级别的原理:
1、在目录/etc/rc.d/init.d下有许多服务器脚本程序,一般称为服务(service);
2、在/etc/rc.d下有7个名为rcN.d(N的取值为0-6)的目录,对应系统的7个运行级别;
3、rcN.d目录下都是一些符号链接文件,这些链接文件都指向init.d目录下的service脚本文件,这些链接文件的命名规则为K+nn+服务名或S+nn+服务名,其中nn为两位数字;
4、系统会根据指定的运行级别进入对应的rcN.d目录,并按照文件名顺序检索目录下的链接文件:对于以K(Kill)开头的文件,系统将终止对应的服务;对于以S(Start)开头的文件,系统将启动对应的服务。 - 与运行级别有关的命令:
查看运行级别:runlevel
进入其它运行级别:init N
(N的取值为0 1 2 34 5 6)
init 1 进入单用户模式
init 3 进入多用户模式
init 5 登录图形界面
init 0 系统关机
Init 6 系统重启
CentOS7.3中设置运行级别的命令:
查看运行级别:systemctl get-default
修改为运行级别3:
systemctl set-default multi-user.target
修改为运行级别5:
systemctl set-default graphical.target
4 Vim
4.1 Vim概述
vi是Visual Editor的缩写,它是一种命令行界面的文本编辑器。而vim则代表了Vi IMproved(增强版vi)。vim不但可以用不同颜色显示文字内容,还能够进行诸如shell脚本,c等程序编辑功能,你可以将vim视为一种程序编辑器。
4.2 Vim的工作模式
-
一般模式(也叫指令模式):光标移动、删除、复制粘贴、查找替换。
-
编辑模式:编辑文本,进行文本的插入或者替换等。
-
命令行模式:保存文件,离开vi,读入文件,显示行号等。
运行vim
vim filename
如果有该文件,则打开文件;如果没有,则新建文件,因此,该命令无论什么时候都不会报错。
4.3 Vim常用命令
4.3.1 编辑模式
vim刚启动的时候,一般处于指令模式,可以利用以下命令进入编辑模式。
①插入模式(insert):i, I
②插入模式(append):a , A
③插入模式(open): o , O
④替换模式(replace):r, R
注意:按【Esc】键退出编辑模式,回到一般模式中。
从一般模式(指令模式)进入编辑模式
指令 | 功能 |
---|---|
i | 在光标前插入字符 |
I | 在光标所在行的行首插入字符 |
a | 在光标后插入字符 |
A | 在光标所在行的行末插入字符 |
o | 在光标所在行下插入新的一行 |
O | 在光标行所在行上插入新的一行 |
r | 替换光标所在的字符,只替换一次 |
R | 一直替换光标所在行的字符,直到按下Esc键 |
4.3.2 一般模式(指令模式)
一般模式下移动光标:
指令 | 功能 |
---|---|
h或者←(向左方向键) | 光标向左移动一个字符 |
j或者↓(向下方向键) | 光标向下移动一个字符 |
k或者↑(向上方向键) | 光标向上移动一个字符 |
l或者→(向右方向键) | 光标向右移动一个字符 |
Ctrl+f或者PgDn | 屏幕向文件尾移动 |
Ctrl+b或者PgUp | 屏幕向文件头移动一页 |
n空格(n=1、2…) | 按下数字n然后按空格,则光标向右移动n个字符,如果该行字符数小于n,则光标继续从下一行开始向右移动,一直到n |
0(数字0)或者Home | 移动到本行行首 |
$ 或者End | 移动到本行行尾 |
H | 光标移动到当前屏幕的最顶行 |
M | 光标移动到当前屏幕的最中央那一行 |
L | 光标移动到当前屏幕的最底行 |
G | 光标移动到当前文本的最末行 |
nG(n=1、2、…) | 光标移动到文本的第n行 |
gg | 光标移动到文本的首行 |
n回车(n=1、2、…) | 光标向下移动n行 |
一般模式下删除、复制、粘贴:
操作 | 功能 |
---|---|
/word | 向光标之后寻找word的字符串,当找到第一个word后,按下“n”继续查找后一个,按下“N”,反方向查找下一个。 |
?word | 向光标之前寻找word的字符串,当找到第一个word后,按下“n”继续查找后一个,按下“N”,反方向查找下一个。 |
:n1,n2s/word1/word2/g | 在n1和n2之间查找word1字符串并替代成word2 |
:1,$s/word1/word2/gc | 在第一行和最末行之间查找word1,替换为word2之前需要用户确认 |
4.3.3 命令行模式
操作 | 功能 |
---|---|
:w | 保存文本 |
:w! | 如果文件属性为只读时,强制保存 |
:q | 退出vim |
:q! | 强制退出vim,不管编辑还是未编辑都不保存退出 |
:wq | 保存之后退出 |
:e! | 将文档还原成最原始状态 |
ZZ | 等价于:wq |
:w [filename] | 将文档另存为filename |
:r[filename] | 在光标所在行的下面读入filename文档的内容 |
:set nu | 在每行的行首设置行号 |
:set nonu | 取消行号 |
:n1,n2 w [filename] | 将n1到n2行的内容另存为filename文件中 |
:! command | 暂时离开vim,执行某个Linux命令,例如::! ls/home 暂时列出/home下的文件,然后会提示按回车返回vim |