灯火互联
管理员
管理员
  • 注册日期2011-07-27
  • 发帖数41778
  • QQ
  • 火币41290枚
  • 粉丝1086
  • 关注100
  • 终身成就奖
  • 最爱沙发
  • 忠实会员
  • 灌水天才奖
  • 贴图大师奖
  • 原创先锋奖
  • 特殊贡献奖
  • 宣传大使奖
  • 优秀斑竹奖
  • 社区明星
阅读:2958回复:0

linux文件与目录的基本操作命令

楼主#
更多 发布于:2011-12-15 18:36
1、Linux下的目录结构:
/:根目录,一般根目录下只存放目录,不要存放文件,/etc、/bin、/dev、/lib、/sbin应该和根目录放置在一个分区中
/bin:/usr/bin:可执行二进制文件的目录,如常用的命令ls、tar、mv、cat等。
/boot:放置linux系统启动时用到的一些文件。/boot/vmlinuz为linux的内核文件,以及/boot/gurb。建议单独分区,分区大小100M即可
/dev:存放linux系统下的设备文件,访问该目录下某个文件,相当于访问某个设备,常用的是挂载光驱mount /dev/cdrom /mnt。
/etc:系统配置文件存放的目录,不建议在此目录下存放可执行文件,重要的配置文件有/etc/inittab、/etc/fstab、/etc/init.d、/etc/X11、/etc/sysconfig、/etc/xinetd.d修改配置文件之前记得备份。
注:/etc/X11存放与x windows有关的设置。
/home:系统默认的用户家目录,新增用户账号时,用户的家目录都存放在此目录下,~表示当前用户的家目录,~test表示用户test的家目录。建议单独分区,并设置较大的磁盘空间,方便用户存放数据
/lib:/usr/lib:/usr/local/lib:系统使用的函数库的目录,程序在执行过程中,需要调用一些额外的参数时需要函数库的协助,比较重要的目录为/lib/modules。
/lost+fount:系统异常产生错误时,会将一些遗失的片段放置于此目录下,通常这个目录会自动出现在装置目录下。如加载硬盘于/disk 中,此目录下就会自动产生目录/disk/lost+found
/mnt:/media:光盘默认挂载点,通常光盘挂载于/mnt/cdrom下,也不一定,可以选择任意位置进行挂载。
/opt:给主机额外安装软件所摆放的目录。如:FC4使用的Fedora 社群开发软件,如果想要自行安装新的KDE 桌面软件,可以将该软件安装在该目录下。以前的Linux 系统中,习惯放置在/usr/local 目录下
/proc:此目录的数据都在内存中,如系统核心,外部设备,网络状态,由于数据都存放于内存中,所以不占用磁盘空间,比较重要的目录有/proc/cpuinfo、/proc/interrupts、/proc/dma、/proc/ioports、/proc/net/*等
/root:系统管理员root的家目录,系统第一个启动的分区为/,所以最好将/root和/放置在一个分区下。
/sbin:/usr/sbin:/usr/local/sbin:放置系统管理员使用的可执行命令,如fdisk、shutdown、mount等。与/bin不同的是,这几个目录是给系统管理员root使用的命令,一般用户只能"查看"而不能设置和使用。
/tmp:一般用户或正在执行的程序临时存放文件的目录,任何人都可以访问,重要数据不可放置在此目录下
/srv:服务启动之后需要访问的数据目录,如www服务需要访问的网页数据存放在/srv/www内
/usr:应用程序存放目录,/usr/bin存放应用程序,/usr/share存放共享数据,/usr/lib存放不能直接运行的,却是许多程序运行所必需的一些函数库文件。/usr/local:存放软件升级包。/usr/share/doc:系统说明文件存放目录。/usr/share/man: 程序说明文件存放目录,使用man ls时会查询/usr/share/man/man1/ls.1.gz的内容建议单独分区,设置较大的磁盘空间
/var:放置系统执行过程中经常变化的文件,如随时更改的日志文件/var/log,/var/log/message:所有的登录文件存放目录,/var/spool/mail:邮件存放的目录,/var/run:程序或服务启动后,其PID存放在该目录下。建议单独分区,设置较大的磁盘空间

2、颜色在linux下的重要性:
  蓝色:目录,
绿色:可执行文件,
天蓝色:符号文件,
白色:普通文件,
黄色:设备文件,
红色:失效文件的链接,
浅红:压缩文件或tarball文件,
粉色:图片文件
3、
[zhy@localhost root]$
[当前登陆用户名@机器名  当前目录]管理员

4、更改用户权限:
     更改用户身份su命令
1)          由普通用户更改为root
$ su
      Password:不显示
2)          由root更改为普通用户
# su zhangsan
不需要口令
5、命令

1)、cd  更改的路径名
   cd   /   根目录
   cd   ..   上级目录

2)、ls 显示文件(目录)信息
帮助信息:man   ls    ls   --help (有中文)
参数:
 -a 显示所有文件,包括以.开头的隐藏文件
 -l以长格式显示文件或子目录的详细信息
 -R 递归的显示指定目录中的各个子目录中的文件
  -S 以文件大小排序
  -s  给出每个目录项所用的块数
  -t  以文件的修改时间的先后顺序排序
  -d  如果参数是目录,只显示其名称而不显示其下的各文件,往往与1选项一起使用,已得到目录的详细信息
  -m 横向显示目录下的文件,文件名之间以逗号分隔。


Ls –l  以长格式显示

自己的权限可读可写
作者权限
所属组权限
其他人权限
文件所有者     所属的组   文件类型   d表示目录   -表示文件   l表示连接
R  w  x
4   2  1
-l:以长格式显示
       -         rwx           rw-           r--
     文件类型     作者权限    所属组权限    其他人权限
                     111          110             100
                    4+2+1=7      4+2=6            4
    r:read  读取     4
    w:write  写入    2
    x:  可执行     1

          3)、cd更改目录
cd  文件目录

           4)、   mkdir    touch(创建文件)
          语法:  mkdir [参数] 目录名[目录名]
目录加上绿色必须有x权限   能用cd命令
    文件创建之后,没有x权限
    参数:-m
              指定权限:
[root@localhost home]# mkdir dir2 -m 755
          -p
      创建多级目录,同时可创建它的子目录
[root@localhost dir2]# mkdir -p d1 d2 d3
         
                    touch
如果touch 后面紧跟的文件名称存在 就会更新为当前的时间
                          否则生成一个新的文件(相当于新建一个空文件)
[root@localhost dir2]# touch *
将当前目录下的所有文件时间修该为当前系统时间。

                         [root@localhost dir2]# touch –d 200111118 test
                          将文件test的时间修改为20011年11月18日

       
权限掩码umask  022
   设置掩码  在umask 后加上你要设置的 权限掩码422
     目录真实权限=777-umask    755
     文件真实权限=666-umask    644


    5)、rmdir    rm      
 语法:  rmdir [参数] 目录名[目录名]
      rmdir
         参数:
 -p   递归删除目录,当子目录删除后其父目录为空时,也一同被删除。

删除的必须是一个空目录 ,并且当前目录也不能为被删除的目录,或者是子目录,否则目录不能从系统中删除。
      参数:
       
      rm
         参数:
               -i询问用户是否删除,在进行删除。
              -r  递归删除
              Ctrl+c 停止删除
              -f  强制删除
     用rm删除目录时不能删除子目录,必须加上   -r   这个参数才可以 递归删除  ctrl+c 停止删除    强制删除目录  rm –f
     对于连接文件,只是删除了连接,原有文件均保持不变。


           6)、建立连接文件:  ln命令
              ln [-s]  源文件或目录   连接文件名
              参数:-s  建立软连接(或符号连接)
    7)、查看被起别名的命令:alias
         alias  命令名

    8)、临时修改权限:Chmod
 
1)      使用字母方式
U  表示user用户
分为:加、减、等于
u- (r  w  x)
u+ (r  w  x)
u=(r  w  x)
[root@localhost root]# ls -l test.html
-rw-r--r--    1 root     root           65 12月  9 08:30 test.html
[root@localhost root]# chmod u-w test.html
[root@localhost root]# ls -l test.html
-r--r--r--    1 root     root           65 12月  9 08:30 test.html              

                                                                                                                                                                                                                                                                                                                                                                                                                                           
2)      使用数字方式   chmod 权限 文件名
dir11  dir4  etc  file1  file2  shadow
[root@localhost dir1]# chmod 644 file1
[root@localhost dir1]# ls
dir11  dir4  etc  file1  file2  shadow


     9)、文件或目录复制cp  copy
 语法:  cp [参数] 源文件或目录  目标文件或目录
参数:
-f 如果目标文件或目录已经存在,不询问用户是否删除,直接删除在赋值
                    -i 如果目标文件或目录已经存在,询问用户是否删除,在进行复制。
                    -R 递归复制目录,即连同目录下的子目录和文件一起复制
                -p 在复制时保持源文件的所有者、权限和时间标志。
             *:通配符,在文件名中出现表示通配符
        cp   file1 file2 在同一个目录下表示将file1重命名为file2
        Tab  补齐文件名

10)、mv  文件移动和重命名
     语法:  mv [参数] 源文件  目标文件

           mv用于文件名的修改,或者是将文件或目录由一个目录移入另一个目录

           如果移入一个目录则原来的文件名不会变,如果目标文件也是一个文件,则源文件会改为目标文件的名称
       参数:
-f 如果目标文件或目录已经存在,不询问用户是否覆盖,直接进行覆盖操作
                    -i 如果目标文件或目录已经存在,询问用户是否覆盖原文件或目录

         [root@localhost user]# mv /tmp/a.txt .  将a.txt移动到当前目录下
         [root@localhost user]# mv mydata   myfile


    11)、cat 显示文件内容
         语法:  cat [参数] 文件名[文件名]

      将输出的内容显示等到屏幕上,如果有多个文件,则依次读取文件内容并显示,如果文件过长,会自动出现滚屏,按ctrl+s 停止滚屏,  ctrl+q 回复滚屏。
              参数:
                   -n 显示输出行的行号。
                   -s 将相连的多个空行用单一空行代替。
                   -e 在每行末尾显示$符号。
 

    12)、显示文本时用到的命令:more   less   wc   head   tail
(1)more
语法:  more[参数] 文件名
----分页显示more 文件名称  回车显示下一行   空格显示下一页  不能回滚  只能向下移动

(2)less
语法:  less[参数] 文件名
 -分页显示more 文件名称  回车显示下一行   空格显示下一页  能回滚

(3)wc 统计
-c或--bytes或--chars   只显示Bytes数。
 -l或--lines   只显示行数。
 -w或--words   只显示字数。每一个空格算一个

例题:
   [root@localhost user]# wc 3.txt  /home/user/a.php
统计3.txt  a.php  文件中分别出现的行数、单词数、字符数,以及总的结果数
3   4   65    3.txt
4   2   57    a.php
7   6   122   总用量

(4)head   显示头几行
      Head  -10  文件名
  语法:  head[参数] 文件名列表
(5)tail     显示后几行
      Tail   -10  文件名
语法:  tail[参数] 文件名列表
             [root@localhost user]#  hear -10 | tail -1  a.php
显示a文件第十行hear -10 | tail -1

13)、find查找
find 可以指定查找条件如名称,类型,时间,文件大小,权限和所有者查找,针对多个条件进行与或非的逻辑运算。我们可以控制find的查找的行为,还可以和其他命令组合使用。

find
find .
find . -print
三者等效, 查找当前目录下所有的文件和目录(递归子目录),以每行一个文件或者目录的形式列举出,不包含隐藏文件

find lib opt bin
同上,查找指定的多个目录(lib/opt/bin)

(1) 指定查找条件

1) 按名称查找

find . -name readme.txt
查找当前目录下(递归子目录)的所有名为readme.txt的文件

find . -name *.txt
find . -name "*.txt"
查找当前目录下(递归子目录)的所有名称以.txt结尾的文件,注意*号的写法,需要前面加或者放到双引号中

find . -iname *.txt
默认find是区分大小写的,如果不想区分大小写,请使用-iname替代-name,如上则"abc.TXT"将被查找到

2) 按类型查找

find . -type d
查找当前目录下(递归子目录)的所有目录

find . -type f
查找当前目录下(递归子目录)的所有文件

find . -type l
查找当前目录下(递归子目录)的所有符号链接

3) 按时间查找

1. 以小时为单位的时间
find 命令三个选项用于按照时间查找,单位都是小时:

mtime — 文件内容上次修改时间
atime — 文件被读取或访问的时间
ctime — 文件状态变化时间

这三个选项都需要配置一个n值使用,可以是-n / n / +n:
-n 小于n
n 正好与n 相等
+n 大于n

find . -mtime -1
查找当前目录下(递归子目录)的所有1小时内修改的文件和目录
find . -mtime +1
查找当前目录下(递归子目录)的所有修改时间超过1小时的文件和目录
find . -mtime 1
查找当前目录下(递归子目录)的所有恰好在1小时前修改的文件和目录

2. 以分钟为单位的时间
用法和*time类似,mmin、amin和cmin 的不同在于单位时间是分钟,用于查找在不到1小时的时间内变化了的文件和目录

find . -mmin -10
查找当前目录下(递归子目录)的所有10分钟内修改的文件和目录

find . -mmin +20
查找当前目录下(递归子目录)的所有20分钟外1小时内修改的文件和目录

3. 与特定的文件比较
-newer,-anewer和-cnewer选项用于查找与特定的文件比较的已修改或访问过的文件,类似mtime,atime和ctime
-newer 指内容最近被修改的文件
-anewer 指最近被读取过的文件
-cnewer 指状态最近发生变化的文件

find . -newer a.txt
查找当前目录下(递归子目录)的所有修改时间在a.txt之后(所以文件更新)的文件和目录


4) 按文件大小查找

1. -size 选项用于查找满足指定的大小条件的文件(注意不查找目录), +表示大于, -表示小于, 没有+1表示正好等于。文件大小的单位可以是字节(用c表示), kb(用k表示)。

find . -size -100c
查找当前目录下(递归子目录)的所有文件大小小于100字节的文件

find . -size +100k
查找当前目录下(递归子目录)的所有文件大小大于100k的文件

find . -size 0
查找当前目录下(递归子目录)的所有文件大小为0的文件

2. -empty 查找空文件和空文件夹, 和-size 0不同的在于-size 0 只查找空文件,或者说-empty -type f 等同于-size 0 :

find . -empty
查找当前目录下(递归子目录)的所有文件大小为0的文件和空文件夹

find . -empty -type f
查找当前目录下(递归子目录)的所有文件大小为0的文件

find . -empty -type d
查找当前目录下(递归子目录)的所有空目录


5) 按权限和所有者查找

find . -perm 777
查找当前目录下(递归子目录)的所有权限为777的文件和目录

find . -perm -u=rwx
查找当前目录下(递归子目录)的所有user权限为rwx的文件和目录

find . -perm -ug=x
查找当前目录下(递归子目录)的所有user和group权限为x的文件和目录

find . -user sky
查找当前目录下(递归子目录)的所有user为sky的文件和目录

find . -group users
查找当前目录下(递归子目录)的所有group为users的文件和目录

(2) 查找条件的逻辑运算

1. 逻辑与
find . -name "*.java" -size -mmin -10
find . -name "*.java" -a -size -mmin -10
查找当前目录下(递归子目录)的所有名为*.java并且修改时间在10分钟之内的文件,-a是默认选项

2. 逻辑或
find . -name "*.class" -o -name "*.jar"
查找当前目录下(递归子目录)的所有名为*.class或者*.jar的文件和目录

3. 逻辑非

find . ! -user sky
查找当前目录下(递归子目录)的所有user不是sky的文件和目录

(3) 控制查找的行为

find . -maxdepth 3 -name "*.txt"
查找当前目录下(递归子目录)的所有名为*.txt的文件,目录深度不超过3层

find . -maxdepth 1 -name "*.txt"
查找当前目录下(不递归子目录,因为maxdepth为1)的所有名为*.txt的文件

find . -mindepth 3 -name "*.txt"
查找当前目录下(递归子目录)的所有名为*.txt的文件,目录深度不低于3层

find . -mindepth 1 -name "*.txt"
查找当前目录下的子目录中(递归子目录)的所有名为*.txt的文件,不包含当前目录

find . -depth -name "*.txt"
查找当前目录下(递归子目录)的所有名为*.txt的文件,每个目录都是先在目录中进行查找,然后才继续查找其子目录

(4) find和其他命令的组合

find . -name "*.jar" -exec ls -l {} ;
find . -name "*.jar" -ls
查找当前目录下(递归子目录)的所有*.jar文件并使用ls -l列出详细信息

find . -name "*.java" -exec grep HashMap {} ;
查找当前目录下(递归子目录)的所有的含有"HashMap"字样的*.java文件

find . -name "*.sh" -exec mv {} backup ;
查找当前目录下(递归子目录)的所有的*.sh文件并移动到backup目录中

14)、locate 查找
         [root@localhost user]# Locate   file1
 Locate: 在文件名数据库中查找文件和目录,速度比find命令快(不存在库就会查不到)
    需要注意的是 如果用locate查找必须先执行它Updatedb,保证查找的准确性
15)、grep 查找
语  法:grep [-abcEFGhHilLnqrsvVwxy][-A<显示列数>][-B<显示列数>][-C<显示列数>][-d<进行动作>][-e<范本样式>][-f<范本文件>][--help][范本样式][文件或目录...]

参  数:
 -a或--text   不要忽略二进制的数据。
 -A<显示列数>或--after-context=<显示列数>   除了显示符合范本样式的那一列之外,并显示该列之后的内容。
 -b或--byte-offset   在显示符合范本样式的那一列之前,标示出该列第一个字符的位编号。
 -B<显示列数>或--before-context=<显示列数>   除了显示符合范本样式的那一列之外,并显示该列之前的内容。
 -c或--count   计算符合范本样式的列数。
 -C<显示列数>或--context=<显示列数>或-<显示列数>   除了显示符合范本样式的那一列之外,并显示该列之前后的内容。
 -d<进行动作>或--directories=<进行动作>   当指定要查找的是目录而非文件时,必须使用这项参数,否则grep指令将回报信息并停止动作。
 -e<范本样式>或--regexp=<范本样式>   指定字符串做为查找文件内容的范本样式。
 -E或--extended-regexp   将范本样式为延伸的普通表示法来使用。
 -f<范本文件>或--file=<范本文件>   指定范本文件,其内容含有一个或多个范本样式,让grep查找符合范本条件的文件内容,格式为每列一个范本样式。
 -F或--fixed-regexp   将范本样式视为固定字符串的列表。
 -G或--basic-regexp   将范本样式视为普通的表示法来使用。
 -h或--no-filename   在显示符合范本样式的那一列之前,不标示该列所属的文件名称。
 -H或--with-filename   在显示符合范本样式的那一列之前,表示该列所属的文件名称。
 -i或--ignore-case   忽略字符大小写的差别。
 -l或--file-with-matches   列出文件内容符合指定的范本样式的文件名称。
 -L或--files-without-match   列出文件内容不符合指定的范本样式的文件名称。
 -n或--line-number   在显示符合范本样式的那一列之前,标示出该列的列数编号。
 -q或--quiet或--silent   不显示任何信息。
 -r或--recursive   此参数的效果和指定“-d recurse”参数相同。
 -s或--no-messages   不显示错误信息。
 -v或--revert-match   反转查找。
 -V或--version   显示版本信息。
 -w或--word-regexp   只显示全字符合的列。
 -x或--line-regexp   只显示全列符合的列。
 -y   此参数的效果和指定“-i”参数相同。
 --help   在线帮助。

使用
如果预料到有许多输出,您可以通过 管道将其转到‘less’上阅读:feedom.net
$ grep magic /usr/src/linux/Documentation/* | less
这样,您就可以更方便地阅读。
有一点要注意,您必需提供一个文件过滤方式(搜索全部文件的话用*)。如果您忘了,‘grep’会一直等着,直到该程序被中断。如果您遇到了这样的情况,按<CTRL c> ,然后再试。
下面是一些有意思的命令行参数:
·         grep -i pattern files :不区分大小写地搜索。默认情况区分大小写,
·         grep -l pattern files :只列出匹配的文件名,
·         grep -L pattern files :列出不匹配的文件名,
·         grep -w pattern files :只匹配整个单词,而不是字符串的一部分(如匹配‘magic’,而不是‘magical’),
·         grep -C number pattern files :匹配的上下文分别显示[number]行,
·         grep pattern1 | pattern2 files :显示匹配pattern1 或pattern2 的行,
·         grep pattern1 files | grep pattern2 :显示既匹配pattern1 又匹配pattern2 的行。
这里还有些用于搜索的特殊符号:
·         < 和> 分别标注单词的开始与结尾。
例如:
o        grep man * 会匹配 ‘Batman’、‘manic’、‘man’等,
o        grep '<man' * 匹配‘manic’和‘man’,但不是‘Batman’,
o        grep '<man>' 只匹配‘man’,而不是‘Batman’或‘manic’等其他的字符串。
·         '^':指匹配的字符串在行首,
·         '$':指匹配的字符串在行尾,
·         如果您不习惯命令行参数,可以试试图形界面的‘grep’,如reXgrep 。这个软件提供AND、OR、NOT 等语法,还有漂亮的按钮:-) 。如果您只是需要更清楚的输出,不妨试试fungrep 。

.grep 搜索字符串
命令格式:
grep string filename
寻找字串的方法很多,比如说我想找所有以M开头的行.此时必须引进pattern的观
念.以下是一些简单的□例,以及说明:
^M 以M开头的行,^表示开始的意思
M$ 以M结尾的行,$表示结束的意思
^[0-9] 以数字开始的行,[]内可列举字母
^[124ab] 以1,2,4,a,或b开头的行

* 星号表示0个以上的字母(可以没有)
+ 加号表示1个以上的字母
/ 斜线可以去掉特殊意义

16)、重定向和管道符号(|)> 覆盖  >>追加   cat (读取文件)
>定向 把要输出到屏幕的内容保存下来,定向到一个指定的文件中 ,发生覆盖      
  ls > file1          将显示的内容写入file1里
Cat file1 > file3   读取file1到file3里
    cat file1 显示内容
      >>重定向  到另一个地方 不会发生覆盖,会在尾部追加。

Cat file2 >> file3   将file2里德内容追加到file3中
Cat file3


17)、Tar  命令(归档、备份(也可压缩))
Tar 压缩文件  相当于归档(不完全是压缩)有*.tar.zp
压缩文件  *.Z  *.c  *.gz  *.Zip等

参数
-c  create创建归档文件
-t   list显示归档文件的内容
-x   恢复(显示)归档文件
-C   保存归档文件到外部的存储设备
-f  file 指定归档文件的名称
-F  force
-v  berbose  显示执行过程中的详细信息
-z 压缩

1、创建归档文件(备份)
      整合需要的文件和文件夹(不等于压缩)
      Tar –cvf  /etc  自定义的归档文件名称.tar  需要归档的文件或文件夹名称(多个之间用空格分开)
2、查看归档文件内容(多个归档文件共存)
      当passwd  huo shadow 被损坏时
[root@bogon home]# tar  -tvf  user.tar(归档文件名)
3、释放归档文件(需要还原系统)
      从外部设备拷贝到系统mnt挂载点
      释放归档文件
             Tar  -xvf  (归档文件名)


18)、压缩:zip  unzip
语法:zip[参数]  压缩文件名  被压缩的文件或目录
  参数:
    -D 不在zip文件中存储文件的目录信息
    -g 将文件压缩后添加到zip文件中
    -m 将特定文件移入zip文件中,并且删除特定文件
    -r  递归压缩
  [root@bogon home]# zip   test.zip  test/*
    将test目录下的所有文件压缩为test.zip

解压:unzip  [参数]  (指定要被解压的文件名)
    -d 将解压后的文件存放到指定的文件夹下。
    -v  查看压缩文件目录,但不解压。
    -n  不覆盖已经存在的文件
    -o  覆盖已经存在的文件,但是不需要用户确认
    -j  不重建文档的目录结构,把所有文件解压到同一目录下。


    19)、gzip  gunzip

         Linux系统中常见的压缩和解压缩的命令,文件名以“.Gz“为后缀。压缩后,默认情况下源文件被压缩后的文件所取代。

      语法:gzip[参数]  压缩  (解压缩) 的文件

      参数:
          -c 将输出写到标准输出上,并保留源文件。
          -d  将压缩文件解压
          -l  对每个压缩文件,显示压缩文件的大小,未压缩文件的大小,压缩比等信息。
          -v 对每一个压缩和解压的文件,显示文件名和压缩比。
          -r  递归式的查找指定目录并压缩其中的所有文件或者是解压缩。
     
     [root@bogon home]# gzip  -v  ls.txt
      [root@bogon home]# gzip  -dv  ls.txt.gz   解压   -d
      [root@bogon home]# gunzip  ls.txt.gz      解压    gunzip


20)、vi编辑器
1、用vi打开一个已经编辑过的文件  vi  test.html
内容为:qqqqqqq
现在:(注意:必须是已经编辑完的文件并且都要在命令状态下(ESC))
Esc退出
按键:
  小写a  此时输出的内容在光标所处地之后输出
  小写i  此时输出的内容在光标所处地之前输出
小写o  此时输出的内容在光标所处的行之后另起一行输出

大写a  此时输出的内容在光标所处的行尾输出
  大写i  此时输出的内容在光标所处的行首输出
大写o  此时输出的内容在光标所处的行之前另起一行输出

2、ESC命令后  由编辑状态到命令状态
退出  :q    保存退出:shift+Z+Z     强制保存退出:wq!

3、加上行号set nu(number) 加行号
  取消行号set nonu

4、Ctrl+d 强制结束输入
Ctrl+Z
Ctrl+C强制结束执行


5、合并两个文件的内容
File1    aaaaaaa
File2    bbbbbbb
现在将file1的内容读入到file2中
首先打开file1 在命令状态下(ESC或者进来什么都没有操作的情况下)
Shift+:read  file2    ->  enter   这时就会把file2中的内容复制到光标所在地
6、执行外部命令::r  !  命令
    命令状态下:
           :r  !date
           :r  !ls –l  同样会把应当显示到屏幕上的内容保存到该文件中

7、gg      文件第一行
  Shift+g  文件尾行
  H      当前页第一行(header)
  L       当前页尾行  (lower)
  M       当前页中间行(middle)
:set  ic 不区分大小写的查找
 按照行号查找
:先要设置行号:set nu
:行号 (12)

8、替换  s
   1):s/要替换的内容/替换成什么/
2):s/要替换的内容/替换成什么/g  
g表示替换当前行中的所有出现的要替换的内容

3) 多行替换:
     :2,34s/要替换的内容/替换成什么/ [g]

10、复制yy  yy前无数字表示复制一行  像这样:3yy复制3行(复制包括当前光标在向下数3-1行)
   粘贴  p

u撤销   d删除
11、 删除
    X    按照字符删除  x    nx
    dd   按照段落删除
    ndd  多段删除
    r     替换一次(光标上的那个)  abcdefg
    R     替换多次abcdefg

12、在文件里写命令
# 表示注释,
但是在#!  bin/bash这条语句中不是,他代表要用那种shell
     在这里可以写任意的命令
不过要把它的权限设置为可执行文件
用到的时候就去执行这个文件,他会把里面的命令全部执行,比如可以做一个定时执行的东西
注意:只有在该文件为绿色的时候才能被执行,修改它的权限的方法是chmod  数字权限  文件名

21)、清屏
  Clear


喜欢0 评分0
游客

返回顶部