Linux 入门

Linux 入门

一、Linux简介

1.Linux介绍

Linux 是一种自由和开放源码的类 UNIX 操作系统。

Linux 英文解释为 Linux is not Unix。

Linux 是在 1991 由林纳斯·托瓦兹在赫尔辛基大学上学时创立的,主要受到 Minix 和 Unix 思想的启发。

Linux 内核最初只是由芬兰人林纳斯·托瓦兹(Linus Torvalds)在赫尔辛基大学上学时出于个人爱好而编写的。

Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX 和 UNIX 的多用户、多任务、支持多线程和多 CPU 的操作系统。

Linux 能运行主要的 UNIX 工具软件、应用程序和网络协议。它支持 32 位和 64 位硬件。Linux 继承了 Unix 以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

2.Linux发行版

Linux 的发行版说简单点就是将 Linux 内核与应用软件做一个打包。

image-20220330094259608

3.Linux应用领域

今天各种场合都有使用各种 Linux 发行版,从嵌入式设备到超级计算机,并且在服务器领域确定了地位,

通常服务器使用 LAMP(Linux + Apache + MySQL + PHP)或 LNMP(Linux + Nginx+ MySQL + PHP)组合。

目前 Linux 不仅在家庭与企业中使用,并且在政府中也很受欢迎。

4.Linux vs windows

LinuxWindows
界面图形界面风格依发布版不同而不同,可能互不兼容。GNU/Linux 的终端机是从 UNIX 传承下来,基本命令和操作方法也几乎一致。界面统一,外壳程序固定所有 Windows 程序菜单几乎一致,快捷键也几乎相同
驱动程序由志愿者开发,由 Linux 核心开发小组发布,很多硬件厂商基于版权考虑并未提供驱动程序,尽管多数无需手动安装,但是涉及安装则相对复杂,使得新用户面对驱动程序问题(是否存在和安装方法)会一筹莫展。但是在开源开发模式下,许多老硬件尽管在Windows下很难支持的也容易找到驱动。HP、Intel、AMD 等硬件厂商逐步不同程度支持开源驱动,问题正在得到缓解。驱动程序丰富,版本更新频繁。默认安装程序里面一般包含有该版本发布时流行的硬件驱动程序,之后所出的新硬件驱动依赖于硬件厂商提供。对于一些老硬件,如果没有了原配的驱动有时很难支持。另外,有时硬件厂商未提供所需版本的 Windows 下的驱动,也会比较头痛。
使用图形界面使用简单,容易入门。文字界面,需要学习才能掌握使用比较简单,容易入门。图形化界面对没有计算机背景知识的用户使用十分有利。
学习系统构造简单、稳定,且知识、技能传承性好,深入学习相对容易。系统构造复杂、变化频繁,且知识、技能淘汰快,深入学习困难。
软件大部分软件都可以自由获取,同样功能的软件选择较少。每一种特定功能可能都需要商业软件的支持,需要购买相应的授权。

5.Linux系统目录结构

如图所示:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NCrNqi0d-1648987594658)(C:\Users\78523\AppData\Roaming\Typora\typora-user-images\image-20220403184556368.png)]

树状目录结构:

img

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GUCIXUho-1648987594658)(C:\Users\78523\AppData\Roaming\Typora\typora-user-images\image-20220403185517968.png)]

  • /:根目录,一般根目录下只存放目录,在Linux下有且只有一个根目录。所有的东西都是从这里开始。当你在终端里输入“/home”,你其实是在告诉电脑,先从/(根目录)开始,再进入到home目录。

  • /bin: bin 是 Binaries (二进制文件) 的缩写, 这个目录存放着最经常使用的命令。

  • /usr/bin: 可执行二进制文件的目录,如常用的命令ls、tar、mv、cat等。

  • /boot: 这里存放的是启动 Linux 时使用的一些核心文件,包括一些连接文件以及镜像文件,如Linux的内核文件:/boot/vmlinuz,系统引导管理器:/boot/grub。

  • /dev: dev 是 Device(设备) 的缩写, 存放linux系统下的设备文件,访问该目录下某个文件,相当于访问某个设备,常用的是挂载光驱 mount /dev/cdrom /mnt。

  • /etc:etc 是 Etcetera(等等) 的缩写,系统配置文件存放的目录,不建议在此目录下存放可执行文件,重要的配置文件有 /etc/inittab、/etc/fstab、/etc/init.d、/etc/X11、/etc/sysconfig、/etc/xinetd.d。

  • /home:系统默认的用户家目录,新增用户账号时,用户的家目录都存放在此目录下,表示当前用户的家目录,edu 表示用户 edu 的家目录。

  • /lib: /usr/lib: /usr/local/lib:系统使用的函数库的目录,程序在执行过程中,需要调用一些额外的参数时需要函数库的协助。

  • /lost+fount:系统异常产生错误时,会将一些遗失的片段放置于此目录下。

  • /mnt: /media:光盘默认挂载点,通常光盘挂载于 /mnt/cdrom 下,也不一定,可以选择任意位置进行挂载。

  • /opt: opt 是 optional(可选) 的缩写,这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。

  • /proc: proc 是 Processes(进程) 的缩写,此目录的数据都在内存中,如系统核心,外部设备,网络状态,由于数据都存放于内存中,所以不占用磁盘空间,比较重要的目录有 /proc/cpuinfo、/proc/interrupts、/proc/dma、/proc/ioports、/proc/net/* 等。

  • /root:系统管理员root的家目录,也称作超级权限者的用户主目录。

  • /sbin: s 就是 Super User 的意思,是 Superuser Binaries (超级用户的二进制文件) 的缩写。

  • /usr/sbin: /usr/local/sbin:放置系统管理员使用的可执行命令,如fdisk、shutdown、mount 等。与 /bin 不同的是,这几个目录是给系统管理员 root使用的命令,一般用户只能"查看"而不能设置和使用。

  • /tmp: tmp 是 temporary(临时) 的缩写,一般用户或正在执行的程序临时存放文件的目录,任何人都可以访问,重要数据不可放置在此目录下。

  • /srv:服务启动之后需要访问的数据目录,如 www 服务需要访问的网页数据存放在 /srv/www 内。

  • /sys:

    这是 Linux2.6 内核的一个很大的变化。该目录下安装了 2.6 内核中新出现的一个文件系统 sysfs 。

    sysfs 文件系统集成了下面3种文件系统的信息:针对进程信息的 proc 文件系统、针对设备的 devfs 文件系统以及针对伪终端的 devpts 文件系统。

    该文件系统是内核设备树的一个直观反映。

    当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中被创建。

  • /usr: usr 是 unix shared resources(共享资源) 的缩写,应用程序存放目录,/usr/bin 存放应用程序,/usr/share 存放共享数据,/usr/lib 存放不能直接运行的,却是许多程序运行所必需的一些函数库文件。/usr/local: 存放软件升级包。/usr/share/doc: 系统说明文件存放目录。/usr/share/man: 程序说明文件存放目录。

  • /var:: var 是 variable(变量) 的缩写,放置系统执行过程中经常变化的文件,如随时更改的日志文件 /var/log,/var/log/message:所有的登录文件存放目录,/var/spool/mail:邮件存放的目录,/var/run:程序或服务启动后,其PID存放在该目录下。

  • /run: 是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。如果你的系统上有 /var/run 目录,应该让它指向 run。

    !!!注意!!!

    在 Linux 系统中,有几个目录是比较重要的,平时需要注意不要误删除或者随意更改内部文件。

    /etc: 上边也提到了,这个是系统中的配置文件,如果你更改了该目录下的某个文件可能会导致系统不能启动。

    /bin, /sbin, /usr/bin, /usr/sbin: 这是系统预设的执行文件的放置目录,比如 ls 就是在 /bin/ls 目录下的。

    值得提出的是 /bin、/usr/bin 是给系统用户使用的指令(除 root 外的通用用户),而/sbin, /usr/sbin 则是给 root 使用的指令。

    /var: 这是一个非常重要的目录,系统上跑了很多程序,那么每个程序都会有相应的日志产生,而这些日志就被记录到这个目录下,具体在 /var/log 目录下,另外 mail 的预设放置也是在这里。

二、Linux基本命令

pwd:

位当前所在位置
lhz@lhz-deepin:~$
用户lhz登录lhz-deepin这台主机上
~代表当前位置处于当前用户主目录或者称之为当前用户家目录
/home/lhz

sudo

以超级管理员的身份临时执行某条命令
sudo ls		#以管理员权限执行ls命令,需要提示输入当前用户的密码

ls

查看或者显示
ls -l 以列表方式显示当前目录下的目录和文件的相关信息
ls -a 显示所有目录和文件包含隐藏的 在linux中不论是目录还是文件前缀加点代表隐藏 
ls -al 多个参数可以联合使用
ls-l命令
chmod  777  filename 更改文件权限
ls-l可以查看文件/夹的详细信息
-rw-r--r--@  1 peter  staff   295 Jul  8 18:10 SortPro.java
drwxr-xr-x   4 peter  staff   128 May 20 13:34 go

常见快捷键

shutdown	#关闭计算机命令
sudo shutdown now	#立刻关闭计算机
reboot		#重新启动计算机
Tab			#命令/目录补全功能
Ctrl+C      #中止当前命令的执行
Ctrl+D      #表示文件结束,类似Java中的EOF。如:cat > file
history		#查看历史命令
clear		#清空屏幕内容
uname -a 	#显示系统内核信息,-a是参数。Linux中绝大多数参数用-开头
date 		#显示时间
cal			#显示日历
	cal 05 2018 #显示2018年5月日历, #是注释
	cal 2018 	#显示2018全年日历
	cal			#显示当月日历
echo		#输出命令

文件(类型)和文件夹

每行的第一个字母表示类型:
-表示这是一个普通文件
d表示这是一个文件夹(目录)
后面紧跟的9个字符分为三组,每组3个字符。这些字符可能是:
r可读,我们为其分配数字编号4
w可写,我们为其分配数字编号2
x可执行,我们为其分配数字编号1
-无权限,我们为其分配数字编号0

其中:
第一组表示当前用户对这个文件/夹的权限
第二组表示当前组对这个文件/夹的权限
第三组表示其它用户对这个文件/夹的权限

例子
-rw-r--r--	
第一个字母表示这是一个文件
第一组的rw-表示当前用户对这个文件可读可写,他的编号之和是6
第二组的r--表示同组用户对这个文件只能读,他的编号之和是4
第三组的r--表示其它用户对这个文件只能读,他的编号之和是4

文件/夹的所属用户和所属组

用户和组
sudo命令只能被授权用户才能使用。新建立的用户是不能使用的。
新建用户
sudo adduser tom	#新建立用户tom,注意新建立用户的同时也会
建立一个同名的组
为新用户设置密码
sudo passwd tom #为tom用户修改密码
新建组
sudo groupadd staff	#建立一个叫做staff的组
建立用户的同时为其指定一个组
sudo useradd -g staff tom	#建立一个用户tom,同时将其加入组staff。需要组staff先存在
-g后跟的是组名

将用户加入一个组
sudo usermod -G staff tom	#将用户tom加入staff组
删除用户
sudo userdel tom	#删除用户tom
如果使用adduser命令建立了tom,其自动建立的组也会被自动删除
删除组
sudo groupdel staff #删除组staff

该命令不能删除使用adduser建立用户时自动建立的同名组
查看所有用户和组
sudo cat /etc/passwd

sudo cat /etc/group
权限
chgrp
sudo chgrp staff file	#将文件file的所属组改为staff组所有
chown
sudo chown tom:staff file	#将文件file的所属组改为staff,所有者改为tom

sudo chown tom file		#将文件file的所有者改为tom用户
sudo chown tom: file	#将文件file的所有者改为tom用户
sudo chown :staff file	#将文件file的所属组改为staff
chomd
chmod 744 file	#将文件file的权限改为744,即rwxr--r--
权限的另一种设置
u=user表示当前用户,即第一组
g=group表示和当前用户的同组用户,即第2组
o=other表示其它用户,即第3组
a=all(u+g+o),即所有组
+表示增加权限
-表示去掉权限:+和-是保持原有权限不变,在其上添加或删除权限
=表示设置权限:是将原有权限都删除,重新设置为=所标记的权限
chmod a=rw file #将所有组的权限都变为rw-,即rw-rw-rw-
chmod a+rw file
chmod u=rwx,g=rw file 	#rwxrw-第三组不变
chmod ug=rw,o+r file 	#第一组和第二组rw-,第三组加r

文件夹的权限说明
r:表示能否查看文件夹中的内容,即ls命令
w:能够对文件夹中的内容做修改(删除,建立等)
x:表示能否进入文件夹,即cd命令
mkdir dir
chmod a=- dir	 #此时该文件夹没有任何权限,不能进入,不能使用ls查看内容
chmod a+r dir #此时只能使用ls dir命令查看文件夹中内容,但是无法进入(cd命令)
chmod a+x dir #此时可以进入文件夹中,即cd dir
chmod a+w dir #此时可以在文件夹中进行操作,如mkdir dir/child

clear

clear 清屏

ctrl + l 清屏 ctrl + u 清空当前行内容

cd

change directory 目录切换
绝对路径与相对路径
相对路径参数:
./ 当前目录 在当前目录./可以省略
../ 父级目录
- 返回上一级目录 从哪儿来回哪儿去
~ 返回当前用户主目录

mkdir

# make directory 创建目录
mkdir /home/lhz/aa
# 可以同时创建多个目录
mkdir /home/lhz/aa/a1 mkdir /home/lhz/aa/a2
# 递归创建 -p
mkdir -p /home/lhz/a/a1 /home/lhz/a/a2 /home/lhz/b/b1 /home/lhz/b/b2

rmdir

# remove directory 删除空目录
rmdir /home/lhz/a/a1
rmdir /home/lhz/b/b1 /home/lhz/b/b2
rmdir /home/lhz/b
rmdir /home/lhz/a
# rmdir: 删除 '/home/lhz/a' 失败: 目录非空

touch

touch	新建一个空白文件   (新建一个空白文档)
touch file	#建立一个叫做file的空白文件 

rm

remove 删除文件

-f 删除文件不会提示确认信息

-r 递归删除

rm -rf 可以删除文件也可以递归删除目录

注意:禁止在root权限下使用 rm -rf 
touch b c
rm b 
rm -f c
mkdir -p a/a1 a/a2
rm a
# rm: 无法删除'a': 是一个目录
rm -rf a

cp

copy 拷贝

cp 源文件路径 目标文件路径

-v 显示拷贝过程 -r 递归复制目录及其子目录内的所有内容
mkdir a b
touch a/a.txt
cp a/a.txt b
# 目标文件与源文件同名 注意 如果存在目标文件存在同名文件则覆盖目标同名文件
cp -f a/a.txt b
cp a/a.txt b/b.txt

mv

move 移动

实现类似 剪切和重命名的效果

当源文件和目标文件在同一目录下 表现效果如同重命名
cp -r  opt/maven/ ~/
mv ~/maven/ ~/Documents/	#将当前maven文件移动到Documents文件夹里
mv ~/Documents/maven/ ~/Documents/mvn  #将当前maven文件移动到Documents文件夹里并改名为mvn

cat

cat(英文全拼:concatenate)命令用于连接文件并打印到标准输出设备上。

参数说明: -n 或 --number:由 1 开始对所有输出的行数编号。

-b 或 --number-nonblank:和 -n 相似,只不过对于空白行不编号。

-s 或 --squeeze-blank:当遇到有连续两行以上的空白行,就代换为一行的空白行。

-v 或 --show-nonprinting:使用 ^ 和 M- 符号,除了 LFD 和 TAB 之外。

-E 或 --show-ends : 在每行结束处显示 $。

-T 或 --show-tabs: 将 TAB 字符显示为 ^I。

-A, --show-all:等价于 -vET。

-e:等价于"-vE"选项;

-t:等价于"-vT"选项;
cat settings.xml
cat -n settings.xml
cat -b settings.xml
cat -s settings.xml
cat -sn settings.xml
cat -sb settings.xml

输出重定向和管道

输出重定向
输出重定向是将命令的输出结果转存到文件中。
date > file	#替换file中的原有内容
date >> file	#在file的后面追加内容
管道/ 管道符|
输出重定向一定是命令和文件之间,但是管道的两侧都是命令。将第一个命令的输出传递给第二个命令作为输入。
nl file | more
nl file 显示文件 | more 分页
grep
ps -aux | tomcat
kill -9 id
tar
tar -cvf aa.tar a.txt b.txt 
tar -tvf aa.tar 
tar -rvf aa.tar c.txt 
rm -f *.txt
tar -xvf aa.tar
tar -zcvf aa.tar.gz a.txt b.txt c.txt 
rm -f *.txt
tar -zxvf aa.tar.gz

tar -jxvf FileZilla_3.58.0_i686-linux-gnu.tar.bz2 -C /home/lhz/opt
zip|unzip
zip aa.zip a.txt b.txt c.txt 
rm -f *.txt
unzip aa.zip

more

Linux more 命令类似 cat ,不过会以一页一页的形式显示,更方便使用者逐页阅读,

而最基本的指令就是按空白键(space)就往下一页显示,按 b 键就会往回(back)一页显示,

而且还有搜寻字串的功能(与 vi 相似),使用中的说明文件,请按 h 
参数:
-num 一次显示的行数
-d 提示使用者,在画面下方显示 [Press space to continue, 'q' to quit.] ,如果使用者按错键,则会显示 [Press 'h' for instructions.] 而不是 '哔' 声
-l 取消遇见特殊字元 ^L时会暂停的功能
-f 计算行数时,以实际上的行数,而非自动换行过后的行数(有些单行字数太长的会被扩展为两行或两行以上)
-p 不以卷动的方式显示每一页,而是先清除萤幕后再显示内容
-c 跟 -p 相似,不同的是先显示内容再清除其他旧资料
-s 当遇到有连续两行以上的空白行,就代换为一行的空白行
-u 不显示下引号 (根据环境变数 TERM 指定的 terminal 而有所不同)
+/pattern 在每个文档显示前搜寻该字串(pattern),然后从该字串之后开始显示
+num 从第 num 行开始显示
fileNames 欲显示内容的文档,可为复数个数
常用操作命令:
Enter 向下n行,需要定义。默认为1行
Ctrl+F 向下滚动一屏
空格键 向下滚动一屏
Ctrl+D 向下滚动半屏
Ctrl+B 返回上一屏
= 输出当前行的行号
:f 输出文件名和当前行的行号
V 调用vi编辑器
!命令 调用Shell,并执行命令
q 退出more

less

less 与 more 类似,less 可以随意浏览文件,支持翻页和搜索,支持向上翻页和向下翻页。

参数说明:

-b <缓冲区大小> 设置缓冲区的大小
-e 当文件显示结束后,自动离开
-f 强迫打开特殊文件,例如外围设备代号、目录和二进制文件
-g 只标志最后搜索的关键词
-i 忽略搜索时的大小写
-m 显示类似more命令的百分比
-N 显示每行的行号
-o <文件名> 将less 输出的内容在指定文件中保存起来
-Q 不使用警告音
-s 显示连续空行为一行
-S 行过长时间将超出部分舍弃
-x <数字> 将"tab"键显示为规定的数字空格
/字符串:向下搜索"字符串"的功能
?字符串:向上搜索"字符串"的功能
n:重复前一个搜索(与 / 或 ? 有关)
N:反向重复前一个搜索(与 / 或 ? 有关)
b 向上翻一页
d 向后翻半页
h 显示帮助界面
Q 退出less 命令
u 向前滚动半页
y 向前滚动一行
空格键 滚动一页
回车键 滚动一行
[pagedown]: 向下翻动一页
[pageup]: 向上翻动一页
1.全屏导航

ctrl + F - 向前移动一屏
ctrl + B - 向后移动一屏
ctrl + D - 向前移动半屏
ctrl + U - 向后移动半屏
2.单行导航

j - 下一行
k - 上一行
3.其它导航

G - 移动到最后一行
g - 移动到第一行
q / ZZ - 退出 less 命令
4.其它有用的命令

v - 使用配置的编辑器编辑当前文件
h - 显示 less 的帮助文档
&pattern - 仅显示匹配模式的行,而不是整个文件
5.标记导航

当使用 less 查看大文件时,可以在任何一个位置作标记,可以通过命令导航到标有特定标记的文本位置:

ma - 使用 a 标记文本的当前位置
'a - 导航到标记 a 处

tail

tail 命令可用于查看文件的内容,有一个常用的参数 **-f*F常用于查阅正在改变的日志文件。

tail -F filename 会把 filename 文件里的最尾部的内容显示在屏幕上,并且不断刷新,只要 filename 更新就可以看到最新的文件内容。

-q 不显示处理信息
-v 显示详细的处理信息
-c<数目> 显示的字节数
-n<行数> 显示文件的尾部 n 行内容
--pid=PID 与-f合用,表示在进程ID,PID死掉之后结束
-q, --quiet, --silent 从不输出给出文件名的首部
-s, --sleep-interval=S 与-f合用,表示在每次反复的间隔休眠S秒
tail -F catalina.out

head

head 命令可用于查看文件的开头部分的内容,有一个常用的参数 -n 用于显示行数,默认为 10,即显示 10 行的内容。

参数:

-q 隐藏文件名
-v 显示文件名
-c<数目> 显示的字节数。
-n<行数> 显示的行数。

vi/vim

所有的 Unix Like 系统都会内建 vi 文本编辑器,其他的文本编辑器则不一定会存在。

但是目前我们使用比较多的是 vim 编辑器。

vim 具有程序编辑的能力,可以主动的以字体颜色辨别语法的正确性,方便程序设计。

vim 是从 vi 发展出来的一个文本编辑器。代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。

简单的来说, vi 是老式的文本处理器,不过功能已经很齐全了,但是还是有可以进步的地方。

vim 则可以说是程序开发者的一项很好用的工具。

vim键盘图

image-20220331082853729

vi/vim的使用

基本上 vi/vim 共分为三种模式,分别是命令模式(Command mode),输入模式(Insert mode)和底线命令模式(Last line mode)。 这三种模式的作用分别是:
命令模式:
用户刚刚启动 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 保存文件
按ESC键可随时退出底线命令模式。

简单的说,我们可以将这三个模式想成底下的图标来表示:

img

vi/vim 按键说明

除了上面简易范例的 i, Esc, :wq 之外,其实 vim 还有非常多的按键可以使用。

第一部分:一般模式可用的光标移动、复制粘贴、搜索替换等

yy 拷贝光标所在行

nyy 光标所在行向下拷贝n行 包括光标所在行

p 粘贴yy的内容

数字n p粘贴n次yy的内容

移动光标的方法
h 或 向左箭头键(←)光标向左移动一个字符
j 或 向下箭头键(↓)光标向下移动一个字符
k 或 向上箭头键(↑)光标向上移动一个字符
l 或 向右箭头键(→)光标向右移动一个字符
如果你将右手放在键盘上的话,你会发现 hjkl 是排列在一起的,因此可以使用这四个按钮来移动光标。 如果想要进行多次移动的话,例如向下移动 30 行,可以使用 “30j” 或 “30↓” 的组合按键, 亦即加上想要进行的次数(数字)后,按下动作即可!
[Ctrl] + [f]屏幕『向下』移动一页,相当于 [Page Down]按键 (常用)
[Ctrl] + [b]屏幕『向上』移动一页,相当于 [Page Up] 按键 (常用)
[Ctrl] + [d]屏幕『向下』移动半页
[Ctrl] + [u]屏幕『向上』移动半页
+光标移动到非空格符的下一行
-光标移动到非空格符的上一行
n那个 n 表示『数字』,例如 20 。按下数字后再按空格键,光标会向右移动这一行的 n 个字符。例如 20 则光标会向后面移动 20 个字符距离。
0 或功能键[Home]这是数字『 0 』:移动到这一行的最前面字符处 (常用)
$ 或功能键[End]移动到这一行的最后面字符处(常用)
H光标移动到这个屏幕的最上方那一行的第一个字符
M光标移动到这个屏幕的中央那一行的第一个字符
L光标移动到这个屏幕的最下方那一行的第一个字符
G移动到这个档案的最后一行(常用)
nGn 为数字。移动到这个档案的第 n 行。例如 20G 则会移动到这个档案的第 20 行(可配合 :set nu)
gg移动到这个档案的第一行,相当于 1G 啊! (常用)
nn 为数字。光标向下移动 n 行(常用)
搜索替换
/word向光标之下寻找一个名称为 word 的字符串。例如要在档案内搜寻 vbird 这个字符串,就输入 /vbird 即可! (常用)
?word向光标之上寻找一个字符串名称为 word 的字符串。
n这个 n 是英文按键。代表重复前一个搜寻的动作。举例来说, 如果刚刚我们执行 /vbird 去向下搜寻 vbird 这个字符串,则按下 n 后,会向下继续搜寻下一个名称为 vbird 的字符串。如果是执行 ?vbird 的话,那么按下 n 则会向上继续搜寻名称为 vbird 的字符串!
N这个 N 是英文按键。与 n 刚好相反,为『反向』进行前一个搜寻动作。 例如 /vbird 后,按下 N 则表示『向上』搜寻 vbird 。
使用 /word 配合 n 及 N 是非常有帮助的!可以让你重复的找到一些你搜寻的关键词!
拷贝光标所在行:n1,n2s/word1/word2/gn1 与 n2 为数字。在第 n1 与 n2 行之间寻找 word1 这个字符串,并将该字符串取代为 word2 !举例来说,在 100 到 200 行之间搜寻 vbird 并取代为 VBIRD 则: 『:100,200s/vbird/VBIRD/g』。(常用)
:1,$s/word1/word2/g:%s/word1/word2/g从第一行到最后一行寻找 word1 字符串,并将该字符串取代为 word2 !(常用)
:1,$s/word1/word2/gc:%s/word1/word2/gc从第一行到最后一行寻找 word1 字符串,并将该字符串取代为 word2 !且在取代前显示提示字符给用户确认 (confirm) 是否需要取代!(常用)
删除、复制与贴上
x, X在一行字当中,x 为向后删除一个字符 (相当于 [del] 按键), X 为向前删除一个字符(相当于 [backspace] 亦即是退格键) (常用)
nxn 为数字,连续向后删除 n 个字符。举例来说,我要连续删除 10 个字符, 『10x』。
dd剪切游标所在的那一整行(常用),用 p/P 可以粘贴。
nddn 为数字。剪切光标所在的向下 n 行,例如 20dd 则是剪切 20 行(常用),用 p/P 可以粘贴。
d1G删除光标所在到第一行的所有数据
dG删除光标所在到最后一行的所有数据
d$删除游标所在处,到该行的最后一个字符
d0那个是数字的 0 ,删除游标所在处,到该行的最前面一个字符
yy复制游标所在的那一行(常用)
nyyn 为数字。复制光标所在的向下 n 行,例如 20yy 则是复制 20 行(常用)
y1G复制游标所在行到第一行的所有数据
yG复制游标所在行到最后一行的所有数据
y0复制光标所在的那个字符到该行行首的所有数据
y$复制光标所在的那个字符到该行行尾的所有数据
p, Pp 为将已复制的数据在光标下一行贴上,P 则为贴在游标上一行! 举例来说,我目前光标在第 20 行,且已经复制了 10 行数据。则按下 p 后, 那 10 行数据会贴在原本的 20 行之后,亦即由 21 行开始贴。但如果是按下 P 呢? 那么原本的第 20 行会被推到变成 30 行。 (常用)
J将光标所在行与下一行的数据结合成同一行
c重复删除多个数据,例如向下删除 10 行,[ 10cj ]
u复原前一个动作。(常用)
[Ctrl]+r重做上一个动作。(常用)
这个 u 与 [Ctrl]+r 是很常用的指令!一个是复原,另一个则是重做一次~ 利用这两个功能按键,你的编辑,嘿嘿!很快乐的啦!
.不要怀疑!这就是小数点!意思是重复前一个动作的意思。 如果你想要重复删除、重复贴上等等动作,按下小数点『.』就好了! (常用)
第二部分:一般模式切换到编辑模式的可用的按钮说明
进入输入或取代的编辑模式
i, I进入输入模式(Insert mode): i 为『从目前光标所在处输入』, I 为『在目前所在行的第一个非空格符处开始输入』。 (常用)
a, A进入输入模式(Insert mode): a 为『从目前光标所在的下一个字符处开始输入』, A 为『从光标所在行的最后一个字符处开始输入』。(常用)
o, O进入输入模式(Insert mode): 这是英文字母 o 的大小写。o 为在目前光标所在的下一行处输入新的一行; O 为在目前光标所在的上一行处输入新的一行!(常用)
r, R进入取代模式(Replace mode): r 只会取代光标所在的那一个字符一次;R会一直取代光标所在的文字,直到按下 ESC 为止;(常用)
上面这些按键中,在 vi 画面的左下角处会出现『–INSERT–』或『–REPLACE–』的字样。 由名称就知道该动作了吧!!特别注意的是,我们上面也提过了,你想要在档案里面输入字符时, 一定要在左下角处看到 INSERT 或 REPLACE 才能输入喔!
[Esc]退出编辑模式,回到一般模式中(常用)
第三部分:一般模式切换到指令行模式的可用的按钮说明
指令行的储存、离开等指令
:w将编辑的数据写入硬盘档案中(常用)
:w!若文件属性为『只读』时,强制写入该档案。不过,到底能不能写入, 还是跟你对该档案的档案权限有关啊!
:q离开 vi (常用)
:q!若曾修改过档案,又不想储存,使用 ! 为强制离开不储存档案。
注意一下啊,那个惊叹号 (!) 在 vi 当中,常常具有『强制』的意思~
:wq储存后离开,若为 :wq! 则为强制储存后离开 (常用)
ZZ这是大写的 Z 喔!如果修改过,保存当前文件,然后退出!效果等同于(保存并退出)
ZQ不保存,强制退出。效果等同于 :q!
:w [filename]将编辑的数据储存成另一个档案(类似另存新档)
:r [filename]在编辑的数据中,读入另一个档案的数据。亦即将 『filename』 这个档案内容加到游标所在行后面
:n1,n2 w [filename]将 n1 到 n2 的内容储存成 filename 这个档案。
:! command暂时离开 vi 到指令行模式下执行 command 的显示结果!例如 『:! ls /home』即可在 vi 当中察看 /home 底下以 ls 输出的档案信息!
vim 环境的变更
:set nu显示行号,设定之后,会在每一行的前缀显示该行的行号
:set nonu与 set nu 相反,为取消行号!

特别注意,在 vi/vim 中,数字是很有意义的!数字通常代表重复做几次的意思! 也有可能是代表去到第几个什么什么的意思。

举例来说,要删除 50 行,则是用 『50dd』 对吧! 数字加在动作之前,如我要向下移动 20 行呢?那就是『20j』或者是『20↓』即可。

ps

> ps (英文全拼:process status)命令用于显示当前进程的状态,类似于 windows 的任务管理器。
>
> ps 的参数非常多, 在此仅列出几个常用的参数并大略介绍含义 -A 列出所有的进程 -w 显示加宽可以显示较多的资讯 -au 显示较详细的资讯 -aux 显示所有包含其他使用者的行程

​```
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
​```

> - USER: 行程拥有者
> - PID: pid
> - %CPU: 占用的 CPU 使用率
> - %MEM: 占用的记忆体使用率
> - VSZ: 占用的虚拟记忆体大小
> - RSS: 占用的记忆体大小
> - TTY: 终端的次要装置号码 (minor device number of tty)
> - STAT: 该行程的状态:
>   - D: 无法中断的休眠状态 (通常 IO 的进程)
>   - R: 正在执行中
>   - S: 静止状态
>   - T: 暂停执行
>   - Z: 不存在但暂时无法消除
>   - W: 没有足够的记忆体分页可分配
>   - <: 高优先序的行程
>   - N: 低优先序的行程
>   - L: 有记忆体分页分配并锁在记忆体内 (实时系统或捱A I/O)
> - START: 行程开始时间
> - TIME: 执行的时间
> - COMMAND:所执行的指令
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值