一文件查看、权限:
1,文件的查看
ls -al :显示详细信息隐藏文件
权限 连接数 所有者 组 容量 组后被修改时间 名称
drwxr-xr-x 15 root root 272 Jan 20 13:11 ..
第一个字符代表这个文件是:
d目录,
-文件, (纯文本档, 二进制文件, 数据格式文件-某些特定格式的文件)
l连接档, 类似 Windows 系统底下的快捷方式
b为装置文件里面的可供储存的接口设备(可随机存取装置, 区块(block)设备档-硬软盘, ),
c为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置,字符设备文件-串行端口),
s资料接口文件(常在/run 或/tmp 目录中),通常被用在网络上的数据承接了。可以启动一个程序来监听客户端的要求, 而客户端就可以透过这个 socket 来进行数据的沟通了。
p数据输送文件(FIFO, pipe), 解决多个程序同时存取一个文件所造成的错误问题
权限三个为一组(所有者,所属组,其他),『rwx』读写执行
r:4
w:2
x:1
-rwsr-xr-x. 1 root root 27832 Aug 5 2019 /usr/bin/passwd
s: SUID:4 的特殊权限,当 s 这个标志出现在文件拥有者的 x 权限上时称为 Set UID
SUID 权限仅对二进制程序(binary program)有效;不能够用在 shell script 上面!
执行者对于该程序需要具有 x 的可执行权限;
本权限仅在执行该程序的过程中有效 (run-time);
执行者将具有该程序拥有者 (owner) 的权限。
---------- 1 root root 892 Jan 23 19:02 /etc/shadow 这个文件仅有 root 可读且仅有 root 可以强制写入
1. dmtsai 对于自己的 /usr/bin/passwd 这个程序来说是具有 x 权限的,表示 dmtsai 能执行 passwd;
2. passwd 的拥有者是 root 这个账号;
3. dmtsai 执行 passwd 的过程中,会『暂时』获得 root 的权限;
4. /etc/shadow 就可以被 dmtsai 所执行的 passwd 所修改。
SGID:2 的特殊权限,s 在群组的 x 时则称为 Set GID,
SGID 可以针对文件或目录来设定
SGID 对二进制程序有用;
程序执行者对于该程序来说,需具备 x 的权限;
执行者在执行的过程中将会获得该程序群组的支持!
当一个目录设定了 SGID 的权限后,他将具有如下的功能:
用户若对于此目录具有 r 与 x 的权限时,该用户能够进入此目录;
用户在此目录下的有效群组(effective group)将会变成该目录的群组;
用途:若用户在此目录下具有 w 的权限(可以新建文件),则使用者所建立的新文件,该新文件的群组与此目录的群组相同。
SBIT:1 目前只针对目录有效,对于文件已经没有效果,Sticky Bit,
当用户对于此目录具有 w, x 权限,亦即具有写入的权限时;
当用户在该目录下建立文件或目录时,仅有自己与 root 才有权力删除该文件
建空文件: touch
设置权限:chmod -R rwxr-xr-x 文件或目录
chmod -R 755 文件或目录
特殊权限:
chmod -R 4755 文件或目录
chmod -R 6755 文件或目录
chmod -R 7755 文件或目录
chown -R mysql.mysql_user1 /var/mysql -R进行递归(recursive)的持续变更
ls -al --full-time : --full-time完整的呈现文件的修改时间
2,所有组: /etc/group 用户: /etc/passwd
groupadd 祖名
groupdel 祖名
groups 用户 : 显示用户所属的用户组
gpasswd -d 用户名 用户组名 :从组中删除某帐号
useradd 用户 -g 初始用户组 -G 其他用户组
useradd test_1 -G test1 ---> (test1:x:1000:test_1
test_1:x:1001:)
passwd 用户
usermod 参数 用户名 :修改用户
-g 组名 初始用户组
-e 过期日期 格式:YYYY-MM-DD
-G 组名 其他用户组
-l 修改用户名
-L 锁定账号(在/etc/shadow文件中用户对应密码密码串的前面加上两个叹号(!!))
-U 解锁
userdel -r 用户 : -r删除用户home目录
3,修改文件所属,权限,连接
chgrp -R 组名 文件名 : -R递归改变
chown -R 用户.用户组 文件名
chmod u=rwx,go=rx 文件或目录
去掉用户权限
chmod (u g o a) (+ - =) (r w x[s/S,s/S,t/T]) 文件或目录, 特殊权限大写没有 x 这个可执行的标志
chmod g-x 文件或目录
ln [参数][源文件或目录][目标文件或目录]
必要参数:
-b 删除,覆盖以前建立的链接
-d 允许超级用户制作目录的硬链接
-f 强制执行
-i 交互模式,文件存在则提示用户是否覆盖
-n 把符号链接视为一般目录
*-s 软链接(符号链接)
-v 显示详细的处理过程
选择参数:
-S "-S<字尾备份字符串> "或 "--suffix=<字尾备份字符串>"
-V "-V<备份方式>"或"--version-control=<备份方式>"
--help 显示帮助信息
--version 显示版本信息
软链接:类似于 Windows 的快捷方式,实际上是一个文本文件,其中包含的有另一文件的位置信息
1.软链接,以路径的形式存在。类似于Windows操作系统中的快捷方式
2.软链接可以 跨文件系统 ,硬链接不可以
3.软链接可以对一个不存在的文件名进行链接
4.软链接可以对目录进行链接
硬链接:通过索引节点来进行连接,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index)
作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以防止“误删”的功能。
删除其中任何一个都不会影响另外一个的访问,真正删除的条件是与之相关的所有硬连接文件均被删除。
1.硬链接,以文件副本的形式存在。但不占用实际空间。
2.不允许给目录创建硬链接
3.硬链接只有在同一个文件系统中才能创建
unlink linkName
4,文件后缀
单一文件或目录的最大容许文件名为 255bytes,128 个中文,避免特殊字符* ? > < ; & ! [ ] | \ ' " ` ( ) { }
.开头为隐藏文件
*.sh : 脚本或批处理文件
*Z, *.tar, *.tar.gz, *.zip, *.tgz: 经过打包的压缩文件。
*.html, *.php:网页相关文件
观察文件类型:file 可以简单的先判断这个文件的格式,也可以用来判断使用 tar包裹时,该 tarball 文件是使用哪一种压缩功能
二文件隐藏、查找、删除、添加、属性修改:
1,目录,路径(/开头-绝对路径,相对路径相对于当前目录)
. : 代表此层目录
.. : 代表上一层目
- : 代表前一个工作目录
~ : 代表『目前用户身份』所在的家目录
~root : 代表 root 用户的家目录
pwd : 列出当前所在目录绝对路径
mkdir -p test1/test2/test3 :-p 递归建立目录,默认权限755
mkdir -m 777 test4 : -m = chmod 赋予所有用户全部权限
rmdir -p test1/test2/test3
2,环境变量
系统级:/etc/profile 用户级(这些文件处于家目录下):~/.profile
不同身份使用者预设的 PATH 不同,默认能够随意执行的指令也不同(如 root 与 user1)
指令应该要放置到正确的目录下,执行才会比较方便;
echo $PATH
添加 : PATH="${PATH}:/root" 为了安全起见,不建议将『.』加入 PATH 的搜寻目录中
3,cp
cp [-adfilprsu] 来源文件(source) 目标文件(destination
cp [options] source1 source2 source3 .... dir
选项与参数:
*-a :相当于 -dr --preserve=all 的意思,至于 dr 请参考下列说明;(常用)
-d :若来源文件为链接文件的属性(link file),则复制链接文件属性而非文件本身;
-f :为强制(force)的意思,若目标文件已经存在且无法开启,则移除后再尝试一次;
*-i :若目标文件(destination)已经存在时,在覆盖时会先询问动作的进行(常用)
-l :进行硬式连结(hard link)的连结档建立,而非复制文件本身;
*-p :连同文件的属性(权限、用户、时间)一起复制过去,而非使用默认属性(备份常用);
*-r :递归持续复制,用于目录的复制行为;(常用),文件与目录的权限可能会被改变
-s :复制成为符号链接文件 (symbolic link),亦即『快捷方式』文件;文件夹不行。
-u :destination 比 source 旧才更新 destination,或 destination 不存在的情况下才复制。
--preserve=all :除了 -p 的权限相关参数外,还加入 SELinux 的属性, links, xattr 等也复制了。
最后需要注意的,如果来源档有两个以上,则最后一个目的文件一定要是『目录』才行!
cp /var/log/wtmp . <==想要复制到当前目录,最后的 . 不要忘
cp -r /etc/ /tmp(cp -a /etc /tmp 来下达指令喔!尤其是在备份的情况下!)
cp -u ~/.bashrc /tmp/bashr 若 ~/.bashrc 比 /tmp/bashrc 新才复制过来
4,rm
rm [-fir] 文件或目录
选项与参数:
-f :就是 force 的意思,忽略不存在的文件,不会出现警告讯息;
-i :互动模式,在删除前会询问使用者是否动作
-r :递归删除啊!最常用在目录的删除了!这是非常危险的选项!!!
\rm -r /tmp/etc # 在指令前加上反斜杠,可以忽略掉 alias 的指定选项
单纯的使用『 rm -aaa- 』系统的指令就会误判,rm -- -aaa-
删除软连接 ;unlink linkName, rm linkName
5,mv
mv [-fiu] source destination
mv [options] source1 source2 source3 .... direct
选项与参数:
-f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖;
-i :若目标文件 (destination) 已经存在时,就会询问是否覆盖!
-u :若目标文件已经存在,且 source 比较新,才会更新 (update)
注意到这边,如果有多个来源文件或目录,则最后一个目标文件一定是『目录!
取得路径的文件名与目录名称 : basename , dirname
6,文件内容查阅
cat 由第一行开始显示文件内容
选项与参数:
-A :相当于 -vET 的整合选项,可列出一些特殊字符而不是空白而已;
*-b :列出行号,仅针对非空白行做行号显示,空白行不标行号!
-E :将结尾的断行字符 $ 显示出来;
-n :打印出行号,连同空白行也会有行号,与 -b 的选项不同;
-T :将 [tab] 按键以 ^I 显示出来;
-v :列出一些看不出来的特殊字符
tac 从最后一行开始显示,可以看出 tac 是 cat 的倒着写!
nl 显示的时候,顺道输出行号!
选项与参数:
-b :指定行号指定的方式,主要有两种:
-b a :表示不论是否为空行,也同样列出行号(类似 cat -n);
*-b t :如果有空行,空的那一行不要列出行号(默认值);
-n :列出行号表示的方法,主要有三种:
-n ln :行号在屏幕的最左方显示;
-n rn :行号在自己字段的最右方显示,且不加 0 ;
-n rz :行号在自己字段的最右方显示,且加 0 ;
-w :行号字段的占用的字符数。
more 一页一页的显示文件内容
*空格键 (space):代表向下翻一页;
Enter :代表向下翻『一行』;
*/字符串 :代表在这个显示的内容当中,向下搜寻『字符串』这个关键词;
*:f :立刻显示出文件名以及目前显示的行数;
q :代表立刻离开 more ,不再显示该文件内容。
*b 或 [ctrl]-b :代表往回翻页,不过这动作只对文件有用,对管线无用。
less 与 more 类似,但是比 more 更好的是,他可以往前翻页!
*空格键 :向下翻动一页;
[pagedown]:向下翻动一页;
[pageup] :向上翻动一页;
/字符串 :向下搜寻『字符串』的功能;
?字符串 :向上搜寻『字符串』的功能;
*n :重复前一个搜寻 (与 / 或 ? 有关!)
*N :反向的重复前一个搜寻 (与 / 或 ? 有关!)
*g :前进到这个资料的第一行去;
*G :前进到这个数据的最后一行去 (注意大小写);
q :离开 less 这个程序;
head 只看头几行 -n :后面接数字,代表显示几行默认10
tail 只看尾巴几行 -n :后面接数字,代表显示几行默认10,
-f :表示持续侦测后面所接的档名,要等到按下[ctrl]-c 才会结束 tail 的侦测
od 以二进制的方式读取文件内容!
选项或参数:
-t :后面可以接各种『类型 (TYPE)』的输出,例如:
a :利用默认的字符来输出;
c :使用 ASCII 字符来输出
C : ASCII 的对照表
d[size] :利用十进制(decimal)来输出数据,每个整数占用 size bytes ;
f[size] :利用浮点数(floating)来输出数据,每个数占用 size bytes ;
o[size] :利用八进制(octal)来输出数据,每个整数占用 size bytes ;
x[size] :利用十六进制(hexadecimal)来输出数据,每个整数占用 size bytes ;
6,修改文件时间或建置新档: touch
--time=atime : 当『该文件的内容被取用』时,就会更新这个读取时间 (access)。我们使用 cat 去读取/etc/man_db.conf , 就会更新该文件的 atime 了
--time=ctime : 当该文件的『状态 (status)』改变时,就会更新这个时间,权限与属性被更改了,都会更新这个时间啊
mtime : 当该文件的『内容数据』变更时,就会更新这个时间!内容数据指的是文件的内容,而不是文件的属性或权限
touch [-acdmt] 文件
选项与参数:
-a :仅修订 access time;
-c :仅修改文件的时间,若该文件不存在则不建立新文件;
-d :后面可以接欲修订的日期而不用目前的日期,也可以使用 --date="日期或时间"
-m :仅修改 mtime ;
-t :后面可以接欲修订的时间而不用目前的时间,格式为[YYYYMMDDhhmm]
touch -d "2 days ago" bash 修改案例二的 bashrc 文件,将日期调整为两天
touch -t 201406150202 bash 范例的 bashrc 日期改为 2014/06/15 2:02
日期在 atime 与 mtime 都改变了,但是 ctime 则是记录目前的时间
7,文件隐藏属性
chattr 指令只能在Ext2/Ext3/Ext4/xfs 的 Linux 传统文件系统上面完整生效
chattr [+-=][ASacdistu] 文件或目录名称
选项与参数:
+ :增加某一个特殊参数,其他原本存在参数则不动。
- :移除某一个特殊参数,其他原本存在参数则不动。
= :设定一定,且仅有后面接的参
A :当设定了 A 这个属性时,若你有存取此文件(或目录)时,他的访问时间 atime 将不会被修改,
可避免 I/O 较慢的机器过度的存取磁盘。(目前建议使用文件系统挂载参数处理这个项目)
S :一般文件是异步写入磁盘的(原理请参考前一章 sync 的说明),如果加上 S 这个属性时,
当你进行任何文件的修改,该更动会『同步』写入磁盘中。
*a :当设定 a 之后,这个文件将只能增加数据,而不能删除也不能修改数据,只有 root 才能设定这属性
*c :这个属性设定之后,将会自动的将此文件『压缩』,在读取的时候将会自动解压缩,
但是在储存的时候,将会先进行压缩后再储存(看来对于大文件似乎蛮有用的!)
d :当 dump 程序被执行的时候,设定 d 属性将可使该文件(或目录)不会被 dump 备份
*i :这个 i 可就很厉害了!他可以让一个文件『不能被删除、改名、设定连结也无法写入或新增数据!』
对于系统安全性有相当大的帮助!只有 root 能设定此属性
s :当文件设定了 s 属性时,如果这个文件被删除,他将会被完全的移除出这个硬盘空间,
所以如果误删了,完全无法救回来了喔!
u :与 s 相反的,当使用 u 来配置文件案时,如果该文件被删除了,则数据内容其实还存在磁盘中,
可以使用来救援该文件喔!
注意 1:属性设定常见的是 a 与 i 的设定值,而且很多设定值必须要身为 root 才能设定
注意 2:xfs 文件系统仅支援 AadiS 而
lsattr [-adR] 文件或目录
选项与参数:
-a :将隐藏文件的属性也秀出来;
-d :如果接的是目录,仅列出目录本身的属性而非目录内的文件名;
-R :连同子目录的数据也一并列出来!
8,指令与文件的搜寻
which [-a] command 预设是找 PATH 内所规范的目录,多用寻找执行文档
或参数:
-a :将所有由 PATH 目录中可以找到的指令均列出,而不止第一个被找到的指令名称
whereis [-bmsu] 文件或目录名
选项与参数:
-l :可以列出 whereis 会去查询的几个主要目录而已
-b :只找 binary 格式的文件
-m :只找在说明文件 manual 路径下的文件
-s :只找 source 来源文件
-u :搜寻不在上述三个项目当中的其他特殊文件
搜寻的速度会比 find 快,只找几个特定的目录而已~并没有全系统去查询,主要是针
对 /bin /sbin 底下的执行档, 以及 /usr/share/man 底下的 man page 文件,跟几个比较特定的目录来
处理
find [PATH] [option] [action]
选项与参数:
1,与时间有关的选项:共有 -atime, -ctime 与 -mtime ,以 -mtime 说明
-mtime n :n 为数字,意义为在 n 天之前的『一天之内』被更动过内容的文件;
-mtime +n :列出在 n 天之前(不含 n 天本身)被更动过内容的文件档名;
*-mtime -n :列出在 n 天之内(含 n 天本身)被更动过内容的文件档名。
-newer file :file 为一个存在的文件,列出比 file 还要新的文件档名
find / -mtime 0 : 将过去系统上面 24 小时 内 有更动过内容 (mtime) 的文件列出, 0 代表目前的时间,
4 天内被更动过的文件档名 : find /var -mtime -4
4 天前的那一天 : find /var -mtime 4
4 天前被更动过的文件档名(+4 代表大于等于 5 天前的檔名) : find /var -mtime +4
find /etc -newer /etc/passwd: 寻找 /etc 底下的文件,如果文件日期比 /etc/passwd 新就列出
2,与使用者或组名有关的参数:
-uid n :n 为数字,这个数字是用户的账号 ID,亦即 UID ,这个 UID 是记录在/etc/passwd 里面与账号名称对应的数字。这方面我们会在第四篇介绍。
-gid n :n 为数字,这个数字是组名的 ID,亦即 GID,这个 GID 记录在/etc/group,
-user name :name 为使用者账号名称 (要找出任何一个用户在系统当中的所有文件时)
-group name:name 为组名喔
*-nouser :寻找文件的拥有者不存在 /etc/passwd 的人 (找出那些不太正常的文件。如果有找到不属于系统任何人的文件时,有时候是正常的,尤其是你曾经以原始码自行编译软件时)
-nogroup :寻找文件的拥有群组不存在于 /etc/group 的文件!当你自行安装软件时,很可能该软件的属性当中并没有文件拥有者,这是可能的!在这个时候,就可以使用 -nouser 与 -nogroup 搜寻。
3,与文件权限及名称有关的参数:
*-name filename:搜寻文件名为 filename 的文件;
find / -name "*passwd*" 默认是完整文件名,如果想要找关键词
-size [+-]SIZE:搜寻比 SIZE 还要大(+)或小(-)的文件。
这个 SIZE 的规格有:
c: 代表 byte,
k: 代表 1024bytes。要找比 50KB 还要大的文件,就是『 -size +50k 』
找出 /etc 底下,文件大小介于 50K 到 60K 之间的文件,并且将权限完整的列出 (ls -l):
find /etc -size +50k -a -size -60k -exec ls -l {} \;
注意到 -a ,那个 -a 是 and 的意思,为符合两者才算成功
找出 /etc 底下,文件容量大于 50K 且文件所属人不是 root 的档名,且将权限完整的列出 (ls -l);
find /etc -size +50k -a ! -user root -exec ls -ld {} \;
find /etc -size +50k -a ! -user root -type f -exec ls -l {} \;
上面两式均可!注意到 ! ,那个 ! 代表的是反向选择,亦即『不是后面的项目』之意
找出 /etc 底下,容量大于 1500K 以及容量等于 0 的文件:
find /etc -size +1500k -o -size 0
相对于 -a ,那个 -o 就是或 (or) 的意思啰!
*-type TYPE :搜寻文件的类型为 TYPE 的,
类型主要有:
一般正规文件 (f),
装置文件 (b, c),
目录 (d),
连结档 (l),
socket (s),
及 FIFO (p) 等属性。
-perm mode :搜寻文件权限『刚好等于』 mode 的文件,这个 mode 为类似 chmod的属性值,举例来说, -rwsr-xr-x 的属性为 4755 !
-perm -mode :搜寻文件权限『必须要全部囊括 mode 的权限』的文件,举例来说,
我们要搜寻 -rwxr--r-- ,亦即 0744 的文件,使用 -perm -0744,当一个文件的权限为 -rwsr-xr-x ,亦即 4755 时,也会被列出来,因为 -rwsr-xr-x 的属性已经囊括了 -rwxr--r-- 的属性了。因为 -rwsr-xr-x 的属性已经囊括了 -rwxr--r-- 的属性了。
-perm /mode :搜寻文件权限『包含任一 mode 的权限』的文件,举例来说,我们搜寻
-rwxr-xr-x ,亦即 -perm /755 时,但一个文件属性为 -rw-------
也会被列出来,因为他有 -rw.... 的属性存在!
4,额外可进行的动作:
-exec command :command 为其他指令,-exec 后面可再接额外的指令来处理搜寻到的结果。
-print :将结果打印到屏幕上,这个动作是预设动作!
find /usr/bin /usr/sbin -perm /7000 -exec ls -l {} \; : -exec 后面的 ls -l 就是额外的指令,指令不支持命令别名ll
(未安装)locate [-ir] keyword
要找的文件是具有特殊属性的,例如 SUID 、文件拥有者、文件大小等等, 那么利用 locate是没有办法搜寻
选项与参数:
-i :忽略大小写的差异;
-c :不输出档名,仅计算找到的文件数量
-l :仅输出几行的意思,例如输出五行则是 -l 5
-S :输出 locate 所使用的数据库文件的相关信息,包括该数据库纪录的文件/目录数量等
-r :后面可接正规表示法的显示方式
locate -l 5 passwd :找出系统中所有与 passwd 相关的档名,且只列出 5 个
locate -S : locate 查询所使用的数据库文件之文件名与各数据数量
使用 locate 来寻找数据的时候特别的快, 这是因为 locate 寻找的数据是由『已建立的数据库 /var/lib/mlocate/』 里面的数据所搜寻到的,
所以不用直接在去硬盘当中存取数据
updatedb:根据 /etc/updatedb.conf 的设定去搜寻系统硬盘内的文件名,并更新 /var/lib/mlocate 内的数据库文件;
locate:依据 /var/lib/mlocate 内的数据库记载,找出用户输入的关键词文件名。
三压缩、解压、编辑:
1,tar
tar [-z|-j|-J] [cv] [-f 待建立的新檔名] filename... <==打包与压缩
tar [-z|-j|-J] [tv] [-f 既有的 tar 檔名] <==察看檔
tar [-z|-j|-J] [xv] [-f 既有的 tar 檔名] [-C 目录] <==解压缩
选项与参数:
-c :建立打包文件,可搭配 -v 来察看过程中被打包的档名(filename)
-t :察看打包文件的内容含有哪些档名,重点在察看『档名』就是了;
-x :解打包或解压缩的功能,可以搭配 -C (大写) 在特定目录解开
特别留意的是, -c, -t, -x 不可同时出现在一串指令列中。
-z :透过 gzip 的支持进行压缩/解压缩:此时档名最好为 *.tar.gz
-j :透过 bzip2 的支持进行压缩/解压缩:此时档名最好为 *.tar.bz2
-J :透过 xz 的支持进行压缩/解压缩:此时档名最好为 *.tar.xz
特别留意, -z, -j, -J 不可以同时出现在一串指令列中
-v :在压缩/解压缩的过程中,将正在处理的文件名显示出来!
-f filename:-f 后面要立刻接要被处理的档名!建议 -f 单独写一个选项啰!(比较不会忘记)
-C 目录 :这个选项用在解压缩,若要在特定目录解压缩,可以使用这个选项。
其他后续练习会使用到的选项介绍:
-p(小写) :保留备份数据的原本权限与属性,常用于备份(-c)重要的配置文件
-P(大写) :保留绝对路径,亦即允许备份数据中含有根目录存在之意;
--exclude=FILE:在压缩的过程中,不要将 FILE 打包!
tar -zcvf filename 压缩
tar -zxvf filename -C pathname 解压
仅解开单一文件的方法
tar -jtv -f /root/etc.tar.bz2 | grep 'shadow' :查看
tar -jxv -f /root/etc.tar.bz2 etc/shadow : 解压,此时只会解开一个文件而已
2,vi/vim
编辑模式:按下『i, I, a, A, o, O, r, R』,按下『Esc』退出
[Page Down]按键 (常用):屏幕『向下』移动一页,相当于
[Page Up] 按键 (常用):屏幕『向上』移动一页,相当于
[Home](常用): 移动到这一列的最前面字符处
[End](常用): 移动到这一列的最后面字符处
指令列模式
:w [filename] 将编辑的数据储存成另一个文件(类似另存新档)
:r [filename] 在编辑的数据中,读入另一个文件的数据
:n1,n2 w [filename] 将 n1 到 n2 的内容储存成 filename 这个文件
:! command 暂时离开 vi 到指令列模式下执行 command 的显示结果!例如
『:! ls /home』即可在 vi 当中察看 /home 底下以 ls 输出的文件信息!
:set nu/nonu
一般模式
x, X 在一列字当中,x 为向后删除一个字符 X向前删
ndd n 为数字。删除光标所在的向下 n 列,例如 20dd 则是删除 20 列 (常用)
nyy n 为数字。复制光标所在的向下 n 列,例如 20yy 则是复制 20 列(常用)
p, P p 为将已复制的数据在光标下一列贴上,P 则为贴在游标上一列
一直按『 u 』回复到原始状态
n<Enter> n 为数字。光标向下移动 n 列
G 移动到这个文件的最后一列(常用)
gg 移动到这个文件的第一列,相当于 1G 啊! (常用)
/word 向光标之下寻找一个名称为 word 的字符串
?word 向光标之上寻找
n 重复前一个搜寻的动作
N 与 n 刚好相反,为『反向』进行前一个搜寻动作
:100,200s/vbird/VBIR/g 在 100 到 200 列之间搜寻 vbird 并取代为 VBIRD
:1,$s/word1/word2/gc 从第一列到最后一列寻找 word1 字符串,并将该字符串取代为 word2
C提示字符给用户确认 (confirm) 是否需要取代!(常用)
区块选择的按键意义:
v 字符选择,会将光标经过的地方反白选择!
V 列选择,会将光标经过的列反白选择!
[Ctrl]+v 区块选择,可以用长方形的方式选择资料
y 将反白的地方复制起来
d 将反白的地方删除掉
p 将刚刚复制的区块,在游标所在处贴上!
:n 编辑下一个文件
:N 编辑上一个文件
:files 列出目前这个 vim 的开启的所有文件
:sp [filename] 开启一个新窗口,如果有加 filename, 表示在新窗口开启一个新文件,否则表示两个窗口
为同一个文件内容(同步显示)。
[ctrl]+w+↓/↑ 窗口切换