linux - 杂项

$cal 日历
$cal 2015 指定年
$cal 7 2015 指定月
$bc 计算器node

man

$man -f socket 查看socket有多少个帮助文档linux

# man -f socket
socket               (3pm)  - load the C socket.h defines and structure manipulators
socket               (2)  - create an endpoint for communication
socket               (3p)  - create an endpoint for communication
socket               (7)  - Linux socket interface
socket               (n)  - Open a TCP network connection

$man n socket 查看对应于n的解释shell

$ sync 直接在文字接口下输入 sync , 那么在内存中还没有被更新的数据,就会被写入硬盘中!因此,这个指令在系统关机或从新开机以前, 很重要喔!最好多执行几回!(注:这个指令也只有 root 能够执行喔! )vim

shutdown

[root@linux ~]# /sbin/shutdown [-t 秒] [-arkhncfF] [时间] [警告讯息]
实例:
[root@linux ~]# /sbin/shutdown -h 10 'I will shutdown after 10 mins'
告诉你们,这部机器会在十分钟后关机!而且会显示在目前登入者的屏幕前方!

-t sec : -t 后面加秒数,亦即『过几秒后关机』的意思
-k : 不要真的关机,只是发送警告讯息出去!
-r : 在将系统的服务停掉以后就从新开机
-h : 将系统的服务停掉后,当即关机。
-n : 不通过 init 程序,直接以 shutdown 的功能来关机
-f : 关机并开机以后,强制略过 fsck 的磁盘检查
-F : 系统从新开机以后,强制进行 fsck 的磁盘检查
-c : 取消已经在进行的 shutdown 指令内容。

df

[root@linux ~]# df [-ahikHTm] [目录或文件名]
参数:
-a :列出全部的档案系统,包括系统特有的 /proc 等档案系统;
-k :以 KBytes 的容量显示各档案系统;
-m :以 MBytes 的容量显示各档案系统;
-h :以人们较易阅读的 GBytes, MBytes, KBytes 等格式自行显示;
-H :以 M=1000K 取代 M=1024K 的进位方式;
-T :连同该 partition 的 filesystem 名称 (例如 ext3) 也列出;
-i :不用硬盘容量,而以 inode 的数量来显示
范例:
范例一:将系统内全部的 partition 列出来!
[root@linux ~]# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/hda1 5952252 3012332 2632680 54% /
/dev/shm 192836 0 192836 0% /dev/shm
/dev/hda5 9492644 221604 8781060 3% /home
# 特别注意,在 Linux (FC4) 底下,若是 df 没有加任何参数,
# 那么预设会将系统内全部的 (不含特殊内存内的档案系统与 swap) 都以 Kbytes
# 的容量来列出来!至于那个 /dev/shm 是与内存有关的挂载,先不要理他!

du数组

ln

[root@linux ~]# ln [-sf] 来源文件 目标文件
参数:
-s :若是 ln 不加任何参数就进行连结,那就是hard link,至于 -s 就是symbolic link
-f :若是 目标文件 存在时,就主动的将目标文件直接移除后再创建!

mount 挂载

[root@linux ~]# mount -a
[root@linux ~]# mount [-tonL] 装置名称代号 挂载点
参数:
-a :依照 /etc/fstab 的内容将全部相关的磁盘都挂上来!
-n :通常来讲,当咱们挂载档案系统到 Linux 上头时, Linux 会主动的将
目前的 partition 与 filesystem 还有对应的挂载点,都记录到 /etc/mtab
那个档案中。不过,有些时刻 (例如不正常关机致使一些问题,而进入单人模式)
系统没法写入 /etc/mtab 时,就能够加上 -n 这个参数来略过写入 mtab 的动做。
-L :系统除了利用装置名称代号 (例如 /dev/hda1) 以外,还能够利用 partition
的表头名称 ( Label ) 来进行挂载喔!因此,最好为您的 partition 取一个
在您系统当中独一无二的名称吧!
-t :您的 Linux 支持的档案格式,就写在这里吧!举例来讲,咱们在上面创建
/dev/hdb5 是 ext3 档案系统,那么要挂载时,就得要加上 -t ext3
来告知系统,用 ext3 的档案格式来挂载该 partition 呢!
至于系统支持的 filesystem 类型在 /lib/modules/`uname -r`/kernel/fs 当中。
常见的有:
ext2, ext3, reiserfs, 等 Linux 惯用 filesystem
vfat, msdos 等 Windows 常见 filesystem
iso9660 为光盘片的格式
nfs, smbfs 等为网络相关档案系统。这部分将来咱们会在网络方面说起!
若 mount 后面没有加 -t 档案系统格式时,则 Linux 在预设的状况下,
会主动以 /etc/filesystems 这个档案内规范的档案系统格式
来尝试主动的挂载喔!
-o :后面能够接一些挂载时,额外加上的参数喔!比方说帐号、密码、读写权限等:
ro, rw: 此 partition 为只读(ro) 或可擦写(rw)
async, sync: 此 partition 为同步写入 (sync) 或异步 (async),这个与咱们
以前提到的档案系统运做方式有关,预设是 async
auto, noauto: 容许此 partition 被以 mount -a 自动挂载(auto)
dev, nodev: 是否容许此 partition 上,可创建装置档案? dev 为可容许
suid, nosuid: 是否容许此 partition 含有 suid/sgid 的档案格式?
exec, noexec: 是否容许此 partition 上拥有可执行 binary 档案?
user, nouser: 是否容许此 partition 让 user 执行 mount ?通常来讲,
mount 仅有 root 能够进行,但下达 user 参数,则可以让
通常 user 也可以对此 partition 进行 mount 。
defaults: 默认值为:rw, suid, dev, exec, auto, nouser, and async
remount: 从新挂载,这在系统出错,或从新更新参数时,颇有用!
范例:
范例一:将刚刚创建的 /dev/hdb5 挂载到 /mnt/hdb5 上面!
[root@linux ~]# mkdir /mnt/hdb5
[root@linux ~]# mount -t ext3 /dev/hdb5 /mnt/hdb5
[root@linux ~]# df
Filesystem 1K-blocks Used Available Use% Mounted on
....中间省略.....
/dev/hdb5 700144 20664 643336 4% /mnt/hdb5
范例二:挂载光盘!
[root@linux ~]# mount -t iso9660 /dev/cdrom /mnt/cdrom
[root@linux ~]# mount /dev/cdrom
# 上面的参数当中提到,若是没有加上 -t 这个参数时,系统会主动的以
# /etc/filesystems 里面规范的内容给他测试一下是否挂载~另外,
# 由于咱们的 /etc/fstab 里面会规范 /dev/cdrom 应该挂载到那个挂载点,
# 所以,直接下达 mount /dev/cdrom 也是能够的喔!(固然要看/etc/fstab设定啦!)
-范例三:挂载 Window fat 软盘!
[root@linux ~]# mount -t vfat /dev/fd0 /mnt/floppy
范例四:将 / 从新挂载,并加入参数为 rw !
[root@linux ~]# mount -o remount,rw /
范例五:将 Label 名为 logical 的 partition 挂载到 /mnt/hdb5 中
[root@linux ~]# mount -t ext3 -L logical /mnt/hdb5
范例六:将系统全部的以挂载的 partition 数据列出来
[root@linux ~]# mount
/dev/hda1 on / type ext3 (rw)
/dev/proc on /proc type proc (rw)
/dev/shm on /dev/shm type tmpfs (rw)
/dev/hda5 on /home type ext3 (rw)
/dev/hdb5 on /mnt/hdb5 type ext3 (rw)
# 嗯!不加任何参数,则 mount 会将目前系统的全部 partition
# 与相关对应的 filesystem 及 mount point 都列出来!

umount

范例二:将 /tmp/home 卸载:
[root@linux ~]# umount /tmp/home
[root@linux ~]# umount 装置代号或挂载点
[root@linux ~]# umount /dev/hdb5
[root@linux ~]# umount /mnt/hdb5

cd 特殊符号表明的目录

. 表明此层目录
.. 表明上一层目录
- 表明前一个工做目录
~ 表明『目前使用者身份』所在的家目录
~account 表明 account 这个使用者的家目录

文件查看

• cat 由第一行开始显示档案内容
• tac 从最后一行开始显示,能够看出 tac 是 cat 的倒着写!
• nl 显示的时候,顺道输出行号!
• more 一页一页的显示档案内容
• less 与 more 相似,可是比 more 更好的是,他能够往前翻页!
• head 只看头几行
• tail 只看尾巴几行
• od 以二进制的方式读取档案内容!

文件隐藏属性

[root@linux ~]# chattr [+-=][ASacdistu] 档案或目录名称
参数:
+ :增长某一个特殊参数,其它本来存在参数则不动。
- :移除某一个特殊参数,其它本来存在参数则不动。
= :设定必定,且仅有后面接的参数
A :当设定了 A 这个属性时,这个档案(或目录)的存取时间 atime (access)
将不可被修改,可避免例如手提式计算机容易有磁盘 I/O 错误的状况发生!
S :这个功能有点相似 sync 的功能!就是会将数据同步写入磁盘当中!
能够有效的避免数据流失!
a :当设定 a 以后,这个档案将只能增长数据,而不能删除,只有 root
才能设定这个属性。
c :这个属性设定以后,将会自动的将此档案『压缩』,在读取的时候将会自动解压缩,
可是在储存的时候,将会先进行压缩后再储存(看来对于大档案彷佛蛮有用的!)
d :当dump(备份)程序被执行的时候,设定 d 属性将可以使该档案(或目录)不具备dump功能
i :这个 i 可就很厉害了!他可让一个档案『不能被删除、更名、设定连结也没法写入
或新增资料!』对于系统安全性有至关大的帮助!
j :当使用 ext3 这个档案系统格式时,设定 j 属性将会使档案在写入时先记录在
journal 中!可是当 filesystem 设定参数为 data=journalled 时,因为已经设定了
日志了,因此这个属性无效!
s :当档案设定了 s 参数时,他将会被彻底的移除出这个硬盘空间。
u :与 s 相反的,当使用 u 来设定档案时,则数据内容其实还存在磁盘中,
可使用来 undeletion.
注意:这个属性设定上面,比较常见的是 a 与 i 的设定值,并且不少设定值必需要身为
root 才可以设定的喔!
范例:
[root@linux ~]# cd /tmp
[root@linux tmp]# touch attrtest
[root@linux tmp]# chattr +i attrtest
[root@linux tmp]# rm attrtest
rm: remove write-protected regular empty file `attrtest'? y
rm: cannot remove `attrtest': Operation not permitted
# 看到了吗?呼呼!连 root 也没有办法将这个档案删除呢!赶忙解除设定!
[root@linux tmp]# chattr -i attrtest

lsattr缓存

[root@linux ~]# lsattr [-aR] 档案或目录
参数:
-a :将隐藏文件的属性也秀出来;
-R :连同子目录的数据也一并列出来!
范例:
[root@linux tmp]# chattr +aij attrtest
[root@linux tmp]# lsattr
----ia---j--- ./attrtest

locate filename 在缓存中查询文件 缓存文件在 /var/lib/slocate/安全

find

[root@linux ~]# find [PATH] [option] [action]
参数:
1. 与时间有关的参数:
-atime n :n 为数字,意义为在 n 天以前的『一天以内』被 access 过的档案;
-ctime n :n 为数字,意义为在 n 天以前的『一天以内』被 change 过状态的档案;
-mtime n :n 为数字,意义为在 n 天以前的『一天以内』被 modification 过的档案;
-newer file :file 为一个存在的档案,意思是说,只要档案比 file 还要新,
就会被列出来~
2. 与使用者或群组名称有关的参数:
-uid n :n 为数字,这个数字是使用者的帐号 ID,亦即 UID ,这个 UID 是记录在
/etc/passwd 里面与帐号名称对应的数字。这方面咱们会在第四篇介绍。
-gid n :n 为数字,这个数字是群组名称的 ID,亦即 GID,这个 GID 记录在
/etc/group,相关的介绍咱们会第四篇说明~
-user name :name 为使用者帐号名称喔!例如 dmtsai
-group name:name 为群组名称喔,例如 users ;
-nouser :寻找档案的拥有者不存在 /etc/passwd 的人!
-nogroup :寻找档案的拥有群组不存在于 /etc/group 的档案!
当您自行安装软件时,极可能该软件的属性当中并无档案拥有者,
这是可能的!在这个时候,就可使用 -nouser 与 -nogroup 搜寻。
3. 与档案权限及名称有关的参数:
-name filename:搜寻文件名称为 filename 的档案;
-size [+-]SIZE:搜寻比 SIZE 还要大(+)或小(-)的档案。这个 SIZE 的规格有:
c: 表明 byte, k: 表明 1024bytes。因此,要找比 50KB
还要大的档案,就是『 -size +50k 』
-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-- 的属性了。
-perm +mode :搜寻档案属性『包含任一 mode 的属性』的档案,举例来讲,咱们搜寻
-rwxr-xr-x ,亦即 -perm +755 时,但一个档案属性为 -rw-------
也会被列出来,由于他有 -rw.... 的属性存在!
4. 额外可进行的动做:
-exec command :command 为其它指令,-exec 后面可再接额外的指令来处理搜寻到
的结果。
-print :将结果打印到屏幕上,这个动做是预设动做!
范例:
范例一:将过去系统上面 24 小时内有更动过内容 (mtime) 的档案列出
[root@linux ~]# find / -mtime 0
# 那个 0 是重点!0 表明目前的时间,因此,从如今开始到 24 小时前,
# 有变更过内容的档案都会被列出来!那若是是三天前的 24 小时内?
# find / -mtime 3 ,意思是说今天以前的 3*24 ~ 4*24 小时之间
# 有变更过的档案都被列出的意思!同时 -atime 与 -ctime 的用法相同。
范例二:寻找 /etc 底下的档案,若是档案日期比 /etc/passwd 新就列出
[root@linux ~]# find /etc -newer /etc/passwd
# -newer 用在分辨两个档案之间的新旧关系是颇有用的!
范例三:搜寻 /home 底下属于 dmtsai 的档案
[root@linux ~]# find /home -user dmtsai
# 这个东西也颇有用的~当咱们要找出任何一个使用者在系统当中的全部档案时,
# 就能够利用这个指令将属于某个使用者的全部档案都找出来喔!
范例四:搜寻系统中不属于任何人的档案
[root@linux ~]# find / -nouser
# 透过这个指令,能够轻易的就找出那些不太正常的档案。
# 若是有找到不属于系统任何人的档案时,不要太紧张,
# 那有时候是正常的~尤为是您曾经以原始码自行编译软件时。
范例五:找出档名为 passwd 这个档案
[root@linux ~]# find / -name passwd
# 利用这个 -name 能够搜寻档名啊!
范例六:搜寻档案属性为 f (通常档案) 的档案
[root@linux ~]# find /home -type f
# 这个 -type 的属性也颇有帮助喔!尤为是要找出那些怪异的档案,
# 例如 socket 与 FIFO 档案,能够用 find /var -type p 或 -type s 来找!
范例七:搜寻档案当中含有 SGID/SUID/SBIT 的属性
[root@linux ~]# find / -perm +7000
# 所谓的 7000 就是 ---s--s--t ,那么只要含有 s 或 t 的就列出,
# 因此固然要使用 +7000 ,使用 -7000 表示要含有 ---s--s--t 的全部三个权限,
# 所以,就是 +7000 ~瞭乎?
范例八:将上个范例找到的档案使用 ls -l 列出来~
[root@linux ~]# find / -perm +7000 -exec ls -l {} \;
# 注意到,那个 -exec 后面的 ls -l 就是额外的指令,
# 而那个 {} 表明的是『由 find 找到的内容』的意思~因此, -exec ls -l {}
# 就是将前面找到的那些档案以 ls -l 列出长的数据!至于 \; 则是表示
# -exec 的指令到此为止的意思~意思是说,整个指令其实只有在
# -exec (里面就是指令下达) \;
# 也就是说,-exec 最后必定要以 \; 结束才行!这样了解了吗?!
范例九:找出系统中,大于 1MB 的档案
[root@linux ~]# find / -size +1000k
# 虽然在 man page 提到可使用 M 与 G 分别表明 MB
# 不过,俺却试不出来这个功能~因此,目前应该是仅支持到 c 与 k 吧!

tar

[root@linux ~]# tar [-cxtzjvfpPN] 档案与目录 ....
参数:
-c :创建一个压缩档案的参数指令(create 的意思);
-x :解开一个压缩档案的参数指令!
-t :查看 tarfile 里面的档案!
特别注意,在参数的下达中, c/x/t 仅能存在一个!不可同时存在!
由于不可能同时压缩与解压缩。
-z :是否同时具备 gzip 的属性?亦便是否须要用 gzip 压缩?
-j :是否同时具备 bzip2 的属性?亦便是否须要用 bzip2 压缩?
-v :压缩的过程当中显示档案!这个经常使用,但不建议用在背景执行过程!
-f :使用档名,请留意,在 f 以后要当即接档名喔!不要再加参数!
例如使用『 tar -zcvfP tfile sfile』就是错误的写法,要写成
『 tar -zcvPf tfile sfile』才对喔!
-p :使用原档案的原来属性(属性不会依据使用者而变)
-P :可使用绝对路径来压缩!
-N :比后面接的日期(yyyy/mm/dd)还要新的才会被打包进新建的档案中!
--exclude FILE:在压缩的过程当中,不要将 FILE 打包!
范例:
范例一:将整个 /etc 目录下的档案所有打包成为 /tmp/etc.tar
[root@linux ~]# tar -cvf /tmp/etc.tar /etc <==仅打包,不压缩!
[root@linux ~]# tar -zcvf /tmp/etc.tar.gz /etc <==打包后,以 gzip 压缩
[root@linux ~]# tar -jcvf /tmp/etc.tar.bz2 /etc <==打包后,以 bzip2 压缩
# 特别注意,在参数 f 以后的档案档名是本身取的,咱们习惯上都用 .tar 来做为辨识。
# 若是加 z 参数,则以 .tar.gz 或 .tgz 来表明 gzip 压缩过的 tar file ~
# 若是加 j 参数,则以 .tar.bz2 来做为附档名啊~
# 上述指令在执行的时候,会显示一个警告讯息:
# 『tar: Removing leading `/' from member names』那是关于绝对路径的特殊设定。
范例二:查阅上述 /tmp/etc.tar.gz 档案内有哪些档案?
[root@linux ~]# tar -ztvf /tmp/etc.tar.gz
# 因为咱们使用 gzip 压缩,因此要查阅该 tar file 内的档案时,
# 就得要加上 z 这个参数了!这很重要的!
范例三:将 /tmp/etc.tar.gz 档案解压缩在 /usr/local/src 底下
[root@linux ~]# cd /usr/local/src
[root@linux src]# tar -zxvf /tmp/etc.tar.gz
# 在预设的状况下,咱们能够将压缩档在任何地方解开的!以这个范例来讲,
# 我先将工做目录变换到 /usr/local/src 底下,而且解开 /tmp/etc.tar.gz ,
# 则解开的目录会在 /usr/local/src/etc 呢!另外,若是您进入 /usr/local/src/etc
# 则会发现,该目录下的档案属性与 /etc/ 可能会有所不一样喔!
范例四:在 /tmp 底下,我只想要将 /tmp/etc.tar.gz 内的 etc/passwd 解开而已
[root@linux ~]# cd /tmp
[root@linux tmp]# tar -zxvf /tmp/etc.tar.gz etc/passwd
# 我能够透过 tar -ztvf 来查阅 tarfile 内的文件名称,若是单只要一个档案,
# 就能够透过这个方式来下达!注意到! etc.tar.gz 内的根目录 / 是被拿掉了!
范例五:将 /etc/ 内的全部档案备份下来,而且保存其权限!
[root@linux ~]# tar -zcvpf /tmp/etc.tar.gz /etc
# 这个 -p 的属性是很重要的,尤为是当您要保留本来档案的属性时!
范例六:在 /home 当中,比 2005/06/01 新的档案才备份
[root@linux ~]# tar -N '2005/06/01' -zcvf home.tar.gz /home
范例七:我要备份 /home, /etc ,但不要 /home/dmtsai
[root@linux ~]# tar --exclude /home/dmtsai -zcvf myfile.tar.gz /home/* /etc
范例八:将 /etc/ 打包后直接解开在 /tmp 底下,而不产生档案!
[root@linux ~]# cd /tmp
[root@linux tmp]# tar -cvf - /etc | tar -xvf -
# 这个动做有点像是 cp -r /etc /tmp 啦~依旧是有其有用途的!
# 要注意的地方在于输出档变成 - 而输入档也变成 - ,又有一个 | 存在~
# 这分别表明 standard output, standard input 与管线命令啦!
# 这部分咱们会在 Bash shell 时,再次提到这个指令跟你们再解释啰!

vim

通常模式: 移动光标的方法
h 或 向左方向键(←)
光标向左移动一个字符
j 或 向下方向键(↓)
光标向下移动一个字符
k 或 向上方向键(↑)
光标向上移动一个字符
l 或 向右方向键(→)
光标向右移动一个字符
若是想要进行屡次移动的话,例如向下移动 30 行,可使用 "30j" 或 "30↓" 的组合按键, 亦即加上想要进行的次数(数字)后,按下动做便可!
[Ctrl] + [f]
屏幕『向下』移动一页,至关于 [Page Down]按键 (经常使用)
[Ctrl] + [b]
屏幕『向上』移动一页,至关于 [Page Up] 按键 (经常使用)
[Ctrl] + [d]
屏幕『向下』移动半页
[Ctrl] + [u]
屏幕『向上』移动半页
+
光标移动到非空格符的下一列
-
光标移动到非空格符的上一列
n<space>
那个 n 表示『数字』,例如 20 。按下数字后再按空格键,光标会向右移动这一行的 n 个字符。例如 20<space> 则光标会向后面移动 20 个字符距离。
0
这是数字『 0 』:移动到这一行的最前面字符处 (经常使用)
$
移动到这一行的最后面字符处(经常使用)
H
光标移动到这个屏幕的最上方那一行
M
光标移动到这个屏幕的中央那一行
L
光标移动到这个屏幕的最下方那一行
G
移动到这个档案的最后一行(经常使用)
nG
n 为数字。移动到这个档案的第 n 行。例如 20G 则会移动到这个档案的第 20 行(可配合 :set nu)
gg
移动到这个档案的第一行,至关于 1G 啊! (经常使用)
n<Enter>
n 为数字。光标向下移动 n 行(经常使用)
通常模式: 搜寻与取代
/word
向光标之下寻找一个字符串名称为 word 的字符串。例如要在档案内搜寻 vbird 这个字符串,就输入 /vbird 便可! (经常使用)
?word
向光标之上寻找一个字符串名称为 word 的字符串。
n
这个 n 是英文按键。表明『重复前一个搜寻的动做』的意思。举例来讲, 若是刚刚咱们执行 /vbird 去向下搜寻 vbird 这个字符串,则按下 n 后,会向下继续搜寻下一个名称为 vbird 的字符串。若是是执行 ?vbird 的话,那么按下 n 则会向上继续搜寻名称为 vbird 的字符串!
N
这个 N 是英文按键。与 n 恰好相反,为『反向』进行前一个搜寻动做。 例如 /vbird 后,按下 N 则表示『向上』搜寻 vbird 。
:n1,n2s/word1/word2/g
n1 与 n2 为数字。在第 n1 与 n2 行之间寻找 word1 这个字符串,并将该字符串取代为 word2 !举例来讲,在 100 到 200 行之间搜寻 vbird 并取代为 VBIRD 则: 『:100,200s/vbird/VBIRD/g』。(经常使用)
:1,$s/word1/word2/g
从第一行到最后一行寻找 word1 字符串,并将该字符串取代为 word2 !(经常使用)
:1,$s/word1/word2/gc
从第一行到最后一行寻找 word1 字符串,并将该字符串取代为 word2 !且在取代前显示提示字符给使用者确认 (conform) 是否须要取代!(经常使用)
通常模式: 删除、复制与贴上
x, X
在一行字当中,x 为向后删除一个字符 (至关于 [del] 按键), X 为向前删除一个字符(至关于 [backspace] 亦便是退格键) (经常使用)
nx
n 为数字,连续向后删除 n 个字符。举例来讲,我要连续删除 10 个字符, 『10x』。
dd
删除游标所在的那一整列(经常使用)
ndd
n 为数字。删除光标所在的向下 n 列,例如 20dd 则是删除 20 列 (经常使用)
d1G
删除光标所在到第一行的全部数据
dG
删除光标所在到最后一行的全部数据
d$
删除游标所在处,到该行的最后一个字符
d0
那个是数字的 0 ,删除游标所在处,到该行的最前面一个字符
yy
复制游标所在的那一行(经常使用)
nyy
n 为数字。复制光标所在的向下 n 列,例如 20yy 则是复制 20 列(经常使用)
y1G
复制光标所在列到第一列的全部数据
yG
复制光标所在列到最后一列的全部数据
y0
复制光标所在的那个字符到该行行首的全部数据
y$
复制光标所在的那个字符到该行行尾的全部数据
p, P
p 为将已复制的数据在光标下一行贴上,P 则为贴在游标上一行! 举例来讲,我目前光标在第 20 行,且已经复制了 10 行数据。则按下 p 后, 那 10 行数据会贴在本来的 20 行以后,亦即由 21 行开始贴。但若是是按下 P 呢? 那么本来的第 20 行会被推到变成 30 行。 (经常使用)
J
将光标所在列与下一列的数据结合成同一列
c
重复删除多个数据,例如向下删除 10 行,[ 10cj ]
u
复原前一个动做。(经常使用)
[Ctrl]+r
重作上一个动做。(经常使用)
这个 u 与 [Ctrl]+r 是很经常使用的指令!一个是复原,另外一个则是重作一次~ 利用这两个功能按键,您的编辑,嘿嘿!很快乐的啦!
.
不要怀疑!这就是小数点!意思是重复前一个动做的意思。 若是您想要重复删除、重复贴上等等动做,按下小数点『.』就行了! (经常使用)
进入编辑模式
i, I
插入:在目前的光标所在处插入输入之文字,已存在的文字会向后
退; 其中, i 为『从目前光标所在处插入』, I 为『在目前所在行的第一个非空格符处开始插入』。 (经常使用)
a, A
a 为『从目前光标所在的下一个字符处开始插入』, A 为『从光标所在行的最后一个字符处开始插入』。(经常使用)
o, O
这是英文字母 o 的大小写。o 为『在目前光标所在的下一行处插入新的一行』; O 为在目前光标所在处的上一行插入新的一行!(经常使用)
r, R
取代:r 会取代光标所在的那一个字符;R会一直取代光标所在的文字,直到按下 ESC 为止;(经常使用)
上面这些按键中,在 vi 画面的左下角处会出现『--INSERT--』或『--REPLACE--』的字样。 由名称就知道该动做了吧!!特别注意的是,咱们上面也提过了,你想要在档案里面输入字符时, 必定要在左下角处看到 INSERT/REPLACE 才能输入喔!
Esc
退出编辑模式,回到通常模式中(经常使用)
指令列命令模式
:w
将编辑的数据写入硬盘档案中(经常使用)
:w!
若档案属性为『只读』时,强制写入该档案。不过,到底能不能写入, 仍是跟您对该档案的档案权限有关啊!
:q
离开 vi (经常使用)
:q!
若曾修改过档案,又不想储存,使用 ! 为强制离开不储存档案。
注意一下啊,那个惊叹号 (!) 在 vi 当中,经常具备『强制』的意思~
:wq
储存后离开,若为 :wq! 则为强制储存后离开 (经常使用)
:e!
将档案还原到最原始的状态!
ZZ
若档案没有更动,则不储存离开,若档案已经通过更动,则储存后离开!
:w [filename]
将编辑的数据储存成另外一个档案(相似另存新档)
:r [filename]
在编辑的数据中,读入另外一个档案的数据。亦即将 『filename』 这个档案内容加到游标所在行后面
:n1,n2 w [filename]
将 n1 到 n2 的内容储存成 filename 这个档案。
:! command
暂时离开 vi 到指令列模式下执行 command 的显示结果!例如 『:! ls /home』便可在 vi 当中察看 /home 底下以 ls 输出的档案信息!
:set nu
显示行号,设定以后,会在每一行的前缀显示该行的行号
:set nonu
与 set nu 相反,为取消行号!

vi /etc/sysconfig/i18n 更改语言系bash

变量设置

[root@linux ~]# declare [-aixr] variable
参数:
-a :将后面的 variable 定义成为数组 (array)
-i :将后面接的 variable 定义成为整数数字 (integer)
-x :用法与 export 同样,就是将后面的 variable 变成环境变量;
-r :将一个 variable 的变量设定成为 readonly ,该变量不可被更改内容,也不能 unset
范例:
范例一:让变量 sum 进行 100+300+50 的加总结果
[root@linux ~]# sum=100+300+50
[root@linux ~]# echo $sum
100+300+50 <==咦!怎么没有帮我计算加总?由于这是文字型态的变量属性啊!
[root@linux ~]# declare -i sum=100+300+50
[root@linux ~]# echo $sum
450 <==瞭乎??
范例二:将 sum 变成环境变量
[root@linux ~]# declare -x sum
范例三:让 sum 变成只读属性,不可更动!
[root@linux ~]# declare -r sum
[root@linux ~]# sum=tesgting
-bash: sum: readonly variable <==老天爷~不能改这个

split分割文件

[root@linux ~]# split [-bl] file PREFIX
参数:
-b :后面可接欲分割成的档案大小,可加单位,例如 b, k, m 等;
-l :以行数来进行分割。
范例:
范例一:个人 /etc/termcap 有七百多K,若想要分红 300K 一个档案时?
[root@linux ~]# cd /tmp; split -b 300k /etc/termcap termcap
[root@linux tmp]# ls -l termcap*
-rw-rw-r-- 1 root root 307200 8月 17 00:25 termcapaa
-rw-rw-r-- 1 root root 307200 8月 17 00:25 termcapab
-rw-rw-r-- 1 root root 184848 8月 17 00:25 termcapac
# 那个档名能够随意取的啦!咱们只要写上前导文字,小档案就会以
# xxxaa, xxxab, xxxac 等方式来创建小档案的!
范例二:如何将上面的三个小档案合成一个档案,档名为 termcapback
[root@linux tmp]# cat termcap* >> termcapback
# 很简单吧?就用数据流重导向就好啦!简单!
范例三:使用 ls -al / 输出的信息中,每十行记录成一个档案
[root@linux tmp]# ls -al / | split -l 10 - lsroot
# 重点在那个 - 啦!通常来讲,若是须要 stdout/stdin 时,但恰恰又没有档案,*斜体文字*
# 有的只是 - 时,那么那个 - 就会被当成 stdin 或 stdout ~
相关文章
相关标签/搜索