Linux学习笔记

    xiaoxiao2026-04-20  4

    学习笔记

    学习鸟哥Linux的笔记

    一.文件权限

    1.文件属性

    [root@www ~]# ls -al total 156 drwxr-x--- 4 root root 4096 Sep 8 14:06 . drwxr-xr-x 23 root root 4096 Sep 8 14:21 .. -rw------- 1 root root 1474 Sep 4 18:27 anaconda-ks.cfg -rw------- 1 root root 199 Sep 8 17:14 .bash_history -rw-r--r-- 1 root root 24 Jan 6 2007 .bash_logout -rw-r--r-- 1 root root 191 Jan 6 2007 .bash_profile -rw-r--r-- 1 root root 176 Jan 6 2007 .bashrc -rw-r--r-- 1 root root 100 Jan 6 2007 .cshrc drwx------ 3 root root 4096 Sep 5 10:37 .gconf <=范例说明处 drwx------ 2 root root 4096 Sep 5 14:09 .gconfd -rw-r--r-- 1 root root 42304 Sep 4 18:26 install.log <=范例说明处 -rw-r--r-- 1 root root 5661 Sep 4 18:25 install.log.syslog [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 权限 ] [连结] [拥有者][群组] [文件容量][ 修改日期 ][ 檔名 ] 第一栏:权限

    第一个字符代表这个文件是『目录、文件或链接文件等等』:

    意义当为[ d ]则是目录,例如上表档名为『.gconf』的那一行;当为[ - ]则是文件,例如上表档名为『install.log』那一行;若是[ l ]则表示为连结档(link file);若是[ b ]则表示为装置文件里面的可供储存的接口设备(可随机存取装置);若是[ c ]则表示为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)。

    接下来的字符中,以三个为一组,且均为『rwx』 的三个参数的组合。

    意义[ r ]代表可读(read)[ w ]代表可写(write)[ x ]代表可执行(execute)

    要注意的是,这三个权限的位置不会改变,如果没有权限,就会出现减号[ - ]。

    意义第一组为『文件拥有者的权限』,以『install.log』那个文件为例, 该文件的拥有者可以读写,但不可执行;第二组为『同群组的权限』;第三组为『其他非本群组的权限』。 第二栏:连结节点(i-node):

    每个文件都会将他的权限与属性记录到文件系统的i-node中,不过,我们使用的目录树却是使用文件名来记录, 因此每个档名就会连结到一个i-node。这个属性记录的,就是有多少不同的档名连结到相同的一个i-node号码。

    第三栏表:拥有者账号

    第四栏:所属群组

    在Linux系统下,你的账号会附属于一个或多个的群组中。举刚刚我们提到的例子,class1, class2, class3均属于projecta这个群组,假设某个文件所属的群组为projecta,且该文件的权限如所示(-rwxrwx—), 则class1, class2, class3三人对于该文件都具有可读、可写、可执行的权限(看群组权限)。 但如果是不属于projecta的其他账号,对于此文件就不具有任何权限了。

    第五栏:容量大小,默认单位为bytes;

    第六栏:建档日期或最近修改日期.

    第七栏:文件的档名

    这个字段就是档名。比较特殊的是:如果档名之前多一个『 . 』,则代表这个文件为『隐藏档』。

    2.权限表示

    drwxr-xr-x 各字母的意义 符号含义数值[ r ]代表可读(read)4[ w ]代表可写(write)2[ x ]代表可执行(execute)1 每组的意义 意义第一组为『文件拥有者的权限』,以『install.log』那个文件为例, 该文件的拥有者可以读写,但不可执行;第二组为『同群组的权限』;第三组为『其他非本群组的权限』。

    3.权限操作

    chgrp 改变所属群组

    [root@www ~]# chgrp [-R] dirname/filename ...

    选项与参数:

    -R : 进行递归(recursive)的持续变更,亦即连同次目录下的所有文件、目录都更新成为这个群组之意。常常用在变更某一目录内所有的文件之情况。

    chown 改变文件拥有者

    [root@www ~]# chown [-R] 账号名称 文件或目录 [root@www ~]# chown [-R] 账号名称:组名 文件或目录

    选项与参数:

    -R : 进行递归(recursive)的持续变更,亦即连同次目录下的所有文件都变更

    chmod 改变权限

    第一种:

    [root@www ~]# chmod [-R] xyz 文件或目录

    选项与参数:

    符号意义xyz就是刚刚提到的数字类型的权限属性,为 rwx 属性数值的相加。-R进行递归(recursive)的持续变更,亦即连同次目录下的所有文件都会变更

    第二种:

    [root@www ~]# chmod [augo][operator][permission] 文件或目录

    选项与参数:

    augo用户组a所有用户u文件拥有者g同群组用户0其他非本群组用户 operator符号+增加权限。-取消权限。=设定权限。 permission权限.r读权限。w写权限。x执行权限。s文件属主和组s e t - I D。t粘性位*。l给文件加锁,使其他用户无法访问。 [root@www ~]# chmod u=rwx,go=rx .bashrc # u=rwx,go=rx 是连在一起的 [root@www ~]# ls -al .bashrc -rwxr-xr-x 1 root root 395 Jul 4 11:45 .bashrc

    二.目录操作

    cd 变换目录

    cd是Change Directory的缩写,这是用来变换工作目录的命令。

    [root@www ~]# cd [相对路径或绝对路径] # 最重要的就是目录的绝对路径与相对路径 [root@www ~]# cd ~vbird # 代表去到 vbird 这个使用者的home目录,亦即 /home/vbird [root@www vbird]# cd ~ # 表示回到自己的home目录,亦即是 /root 这个目录 [root@www ~]# cd # 没有加上任何路径,也还是代表回到自己home目录 [root@www ~]# cd .. # 表示去到目前的上一级目录 [root@www /]# cd - # 表示回到刚刚的那个目录 [root@www ~]# cd /var/spool/mail # 这个就是绝对路径的写法 [root@www mail]# cd ../mqueue # 这个是相对路径的写法,我们由/var/spool/mail 去到/var/spool/mqueue

    pwd 显示目前所在的目录

    [root@www ~]# pwd [-P]

    选项与参数:

    -P :显示出确实的路径,而非使用连结 (link) 路径。

    范例:显示出实际的工作目录,而非连结档本身的目录名而已

    [root@www mail]# pwd /var/mail <==列出目前的工作目录 [root@www mail]# pwd -P /var/spool/mail <==有没有加 -P 差很多~ [root@www mail]# ls -ld /var/mail lrwxrwxrwx 1 root root 10 Sep 4 17:54 /var/mail -> spool/mail # 看到这里应该知道为啥了吧?因为 /var/mail 是连结档,连结到 /var/spool/mail # 所以,加上 pwd -P 的选项后,会不以连结档的数据显示,而是显示正确的完整路径

    mdkir 创建目录

    –>make directory

    [root@www ~]# mkdir [-mp] 目录名称

    选项与参数:

    符号意义-m配置文件的权限喔!直接配置,不需要看默认权限 (umask) 的脸色~-p帮助你直接将所需要的目录(包含上一级目录)递回创建起来!

    范例:

    [root@www ~]# mkdir test <==创建一名为 test 的新目录 [root@www ~]# mkdir test1/test2/test3/test4 mkdir: cannot create directory `test1/test2/test3/test4': No such file or directory <== 没办法直接创建此目录 [root@www ~]# mkdir -p test1/test2/test3/test4 # 加了这个 -p 的选项,可以自行帮你创建多层目录

    rmdir 删除『空』的目录

    [root@www ~]# rmdir [-p] 目录名称

    选项与参数:

    -p :连同上一级『空的』目录也一起删除

    范例:将范例中创建的目录删除掉!

    [root@www tmp]# rmdir test <==可直接删除掉,没问题 [root@www tmp]# rmdir test1 <==因为尚有内容,所以无法删除! rmdir: 'test1': Directory not empty [root@www tmp]# rmdir -p test1/test2/test3/test4 # 利用 -p 这个选项,立刻就可以将 test1/test2/test3/test4 一次删除~ # rmdir 仅能『删除空的目录』

    ls 文件与目录检视

    [root@www ~]# ls [-aAdfFhilnrRSt] 目录名称 [root@www ~]# ls [--color={never,auto,always}] 目录名称 [root@www ~]# ls [--full-time] 目录名称

    选项与参数:

    符号意义-a全部的文件,连同隐藏档( 开头为 . 的文件) 一起列出来 –>(常用)-d仅列出目录本身,而不是列出目录内的文件数据 –>(常用)-l长数据串列出,包含文件的属性与权限等等数据; –>(常用)-A全部的文件,连同隐藏档,但不包括 . 与 .. 这两个目录-f直接列出结果,而不进行排序 (ls 默认会以档名排序!)-F根据文件、目录等资讯,给予附加数据结构,例如:*:代表可运行档; /:代表目录; =:代表 socket 文件;-h将文件容量以人类较易读的方式(例如 GB, KB 等等)列出来;-i列出 inode 号码,inode 的意义下一章将会介绍;-n列出 UID 与 GID 而非使用者与群组的名称 (UID与GID会在帐号管理提到!)-r将排序结果反向输出,例如:原本档名由小到大,反向则为由大到小;-R连同子目录内容一起列出来,等於该目录下的所有文件都会显示出来;-S以文件容量大小排序,而不是用档名排序;-t依时间排序,而不是用档名。–color=never不要依据文件特性给予颜色显示;–color=always显示颜色–color=auto让系统自行依据配置来判断是否给予颜色–full-time以完整时间模式 (包含年、月、日、时、分) 输出–time={atime,ctime}输出 access 时间或改变权限属性时间 (ctime) 而非内容变更时间 (modification time)

    df

    列出文件系统的整体磁盘使

    [root@www ~]# df [-ahikHTm] [目录或文件名]

    参数:

    命令意义-a列出所有的文件系统,包括系统特有的 /proc 等文件系统;-k以 KBytes 的容量显示各文件系统;-m以 MBytes 的容量显示各文件系统;-h以人们较易阅读的 GBytes, MBytes, KBytes 等格式自行显示;-H以 M=1000K 取代 M=1024K 的进位方式;-T连同该 partition 的 filesystem 名称 (例如 ext3) 也列出;-i不用硬盘容量,而以 inode 的数量来显示

    范例一:将系统内所有的 filesystem 列出来!

    [root@www ~]# df

    范例二:将容量结果以易读的容量格式显示出来

    [root@www ~]# df -h # 不同于范例一,这里会以 G/M 等容量格式显示出来,比较容易看

    范例四:将 /etc 底下的可用的磁盘容量以易读的容量格式显示

    [root@www ~]# df -h /etc Filesystem Size Used Avail Use% Mounted on /dev/hdc2 9.5G 3.7G 5.4G 41% / # 在 df 后面加上目录或者是文件时, df # 会自动的分析该目录或文件所在的 partition ,并将该 #partition 的容量显示出来

    du

    评估文件系统的磁盘使用量(常用在推估目录所占容量)

    [root@www ~]# du [-ahskm] 文件或目录名称

    选项与参数:

    命令意义-a列出所有的文件与目录容量,因为默认仅统计目录底下的文件量而已。-h以人们较易读的容量格式 (G/M) 显示;-s列出总量而已,而不列出每个各别的目录占用容量;-S不包括子目录下的总计,与 -s 有点差别。-k以 KBytes 列出容量显示;-m以 MBytes 列出容量显示;

    范例一:列出目前目录下的所有文件容量

    [root@www ~]# du 8 ./test4 <==每个目录都会列出来 8 ./test2 ....中间省略.... 12 ./.gconfd <==包括隐藏文件的目录 220 . <==这个目录(.)所占用的总量 # 直接输入 du 没有加任何选项时,则 du 会分析『目前所在目录』 # 的文件与目录所占用的硬盘空间。但是,实际显示时,仅会显示目录容量(不含文件), # 此外,输出的数值数据为 1K 大小的容量单位。

    范例二:同范例一,但是将文件的容量也列出来

    [root@www ~]# du -a 12 ./install.log.syslog <==有文件的列表了 8 ./.bash_logout 8 ./test4 8 ./test2 ....中间省略.... 12 ./.gconfd 220 .

    范例三:检查根目录底下每个目录所占用的容量

    [root@www ~]# du -sm /* 7 /bin 6 /boot .....中间省略.... 0 /proc .....中间省略.... 1 /tmp 3859 /usr <==系统初期最大就是他 77 /var # 这是个很常被使用的功能~利用通配符 * 来代表每个目录, # 如果想要检查某个目录下,哪个次目录占用最大的容量,可以用这个方法找出来 # 值得注意的是,如果刚刚安装好 Linux 时,那么整个系统容量最大的应该是 /usr # 而 /proc 虽然有列出容量,但是那个容量是在内存中,不占硬盘空间。

    文件操作

    vi 创建文件

    [root@www ~]# vi [+n /pattern -r] filename

    选项与参数: 

    语句意义vi filename打开或新建文件,并将光标置于第一行首vi +n filename打开文件,并将光标置于第n行首vi + filename打开文件,并将光标置于最后一行首vi +/pattern filename打开文件,并将光标置于第一个与pattern匹配的串处vi -r filename在上次正用vi编辑时发生系统崩溃,恢复filenamevi filename….filename打开多个文件,依次进行编辑

    touch

    修改文件时间戳,或者新建一个不存在的文件。

    [root@www ~]# touch [选项] filename

    选项与参数:

    符号意义-a 或–time=atime或–time=access或–time=use只更改存取时间。-c 或–no-create不建立任何文档。-d使用指定的日期时间,而非现在的时间。-f此参数将忽略不予处理,仅负责解决BSD版本touch指令的兼容性问题。-m 或–time=mtime或–time=modify只更改变动时间。-r把指定文档或目录的日期时间,统统设成和参考文档或目录的日期时间相同。-t使用指定的日期时间,而非现在的时间。

    cp 复制文件或目录

    [root@www ~]# cp [-adfilprsu] 来源档(source) 目标档(destination) [root@www ~]# cp [options] source1 source2 source3 .... directory

    选项与参数:

    符号意义-a相当於 -pdr 的意思,(常用)-i若目标档(destination)已经存在时,在覆盖时会先询问动作的进行(常用)-r递回持续复制,用於目录的复制行为;(常用)-p连同文件的属性一起复制过去,而非使用默认属性(备份常用)-d若来源档为连结档的属性(link file),则复制连结档属性而非文件本身;-f为强制(force)的意思,若目标文件已经存在且无法开启,则移除后再尝试一次;-l进行硬式连结(hard link)的连结档创建,而非复制文件本身;-s复制成为符号连结档 (symbolic link),亦即『捷径』文件;-u若 destination 比 source 旧才升级 destination !

    最后需要注意的,如果来源档有两个以上,则最后一个目的档一定要是『目录』才行

    范例一:用root身份,将家目录下的 .bashrc 复制到 /tmp 下,并更名为 bashrc

    [root@www ~]# cp ~/.bashrc /tmp/bashrc [root@www ~]# cp -i ~/.bashrc /tmp/bashrc cp: overwrite `/tmp/bashrc'? n <==n不覆盖,y为覆盖 # 重复作两次动作,由於 /tmp 底下已经存在 bashrc 了,加上 -i 选项后, # 则在覆盖前会询问使用者是否确定!可以按下 n 或者 y 来二次确认呢!

    范例二:变换目录到/tmp,并将/var/log/wtmp复制到/tmp且观察属性:

    [root@www ~]# cd /tmp [root@www tmp]# cp /var/log/wtmp . <==想要复制到目前的目录,最后的 . 不要忘 [root@www tmp]# ls -l /var/log/wtmp wtmp -rw-rw-r-- 1 root utmp 96384 Sep 24 11:54 /var/log/wtmp -rw-r--r-- 1 root root 96384 Sep 24 14:06 wtmp

    注意上面的特殊字体,在不加任何选项的情况下,文件的某些属性/权限会改变; 那如果你想要将文件的所有特性都一起复制可以加上 -a

    如下所示:

    [root@www tmp]# cp -a /var/log/wtmp wtmp_2 [root@www tmp]# ls -l /var/log/wtmp wtmp_2 -rw-rw-r-- 1 root utmp 96384 Sep 24 11:54 /var/log/wtmp -rw-rw-r-- 1 root utmp 96384 Sep 24 11:54 wtmp_2 # 这就是 -a 的特性!

    范例三:复制 /etc/ 这个目录下的所有内容到 /tmp 底下

    [root@www tmp]# cp /etc/ /tmp cp: omitting directory `/etc' <== 如果是目录则不能直接复制,要加上 -r 的选项 [root@www tmp]# cp -r /etc/ /tmp # -r 是可以复制目录,但是,文件与目录的权限可能会被改变 # 所以,也可以利用『 cp -a /etc /tmp 』尤其是在备份的情况下

    范例四:将范例一复制的 bashrc 创建一个连结档 (symbolic link)

    [root@www tmp]# ls -l bashrc -rw-r--r-- 1 root root 176 Sep 24 14:02 bashrc <==先观察一下文件情况 [root@www tmp]# cp -s bashrc bashrc_slink [root@www tmp]# cp -l bashrc bashrc_hlink [root@www tmp]# ls -l bashrc* -rw-r--r-- 2 root root 176 Sep 24 14:02 bashrc <==与原始文件不太一样 -rw-r--r-- 2 root root 176 Sep 24 14:02 bashrc_hlink lrwxrwxrwx 1 root root 6 Sep 24 14:20 bashrc_slink -> bashrc

    rm 删除文件或目录

    [root@www ~]# rm [-fir] 文件或目录

    选项与参数:

    符号意义–time就是 force 的意思,忽略不存在的文件,不会出现警告信息;-i互动模式,在删除前会询问使用者是否动作-r递回删除!最常用在目录的删除!这是非常危险的选项!!! 该目录或文件『肯定』会被 root 杀掉 [root@www tmp]# rm -i bashrc* # 注意那个星号,代表的是 0 到无穷多个任意字节!

    范例二:将 cp 范例中所创建的 /tmp/etc/ 这个目录删除掉

    [root@www tmp]# rmdir /tmp/etc rmdir: etc: Directory not empty <== 删不掉啊!因为这不是空的目录! [root@www tmp]# rm -r /tmp/etc rm: descend into directory `/tmp/etc'? y ....(中间省略).... # 因为身份是 root ,默认已经加入了 -i 的选项,所以你要一直按 y 才会删除! # 如果不想要继续按 y ,可以按下『 [ctrl]-c 』来结束 rm 的工作。 # 这是一种保护的动作,如果确定要删除掉此目录而不要询问,可以这样做: [root@www tmp]# \rm -r /tmp/etc

    mv 移动文件与目录,或更名

    [root@www ~]# mv [-fiu] source(源文件) destination(目标档) [root@www ~]# mv [options] source1 source2 source3 .... directory

    选项与参数:

    符号意义-fforce 强制的意思,如果目标文件已经存在,不会询问而直接覆盖;-i若目标文件 (destination) 已经存在时,就会询问是否覆盖!-u若目标文件已经存在,且 source 比较新,才会升级 (update)

    范例一:复制一文件,创建一目录,将文件移动到目录中

    [root@www ~]# cd /tmp [root@www tmp]# cp ~/.bashrc bashrc [root@www tmp]# mkdir mvtest [root@www tmp]# mv bashrc mvtest # 将某个文件移动到某个目录去

    范例二:将刚刚的目录名称更名为 mvtest2

    [root@www tmp]# mv mvtest mvtest2 <== 这样就更名了!简单~ # 其实在 Linux 底下还有命令,名称为 rename , # 该命令专职进行多个档名的同时更名,并非针对单一档名变更,与mv不同。请man rename。

    范例三:再创建两个文件,再全部移动到 /tmp/mvtest2 当中

    [root@www tmp]# cp ~/.bashrc bashrc1 [root@www tmp]# cp ~/.bashrc bashrc2 [root@www tmp]# mv bashrc1 bashrc2 mvtest2 # 注意到这边,如果有多个来源文件或目录,则最后一个目标档一定是『目录』 # 意思是说,将所有的数据移动到该目录的意思

    文件搜索

    whereis

    –>寻找特定文件

    [root@www ~]# whereis [-bmsu] 文件或目录名

    选项与参数:

    符号意义-b只找 binary 格式的文件-m只找在说明档 manual 路径下的文件-s只找 source 来源文件-u搜寻不在上述三个项目当中的其他特殊文件

    locate

    –>可以部分名称搜索

    [root@www ~]# locate [-ir] keyword

    选项与参数:

    符号意义-i忽略大小写的差异;-r后面可接正规表示法的显示方式

    find

    [root@www ~]# find [PATH] [option] [action]

    选项与参数:

    与时间有关的选项:共有 -atime, -ctime 与 -mtime ,以 -mtime 说明 符号意义-mtime nn 为数字,意义为在 n 天之前的『一天之内』被更动过内容的文件;-mtime +n列出在 n 天之前(不含 n 天本身)被更动过内容的文件档名;-mtime -n列出在 n 天之内(含 n 天本身)被更动过内容的文件档名。-newer filefile 为一个存在的文件,列出比 file 还要新的文件档名

    范例一:将过去系统上面 24 小时内有更动过内容 (mtime) 的文件列出

    [root@www ~]# find / -mtime 0 # 那个 0 是重点!0 代表目前的时间,所以,从现在开始到 24 小时前, # 有变动过内容的文件都会被列出来!那如果是三天前的 24 小时内? # find / -mtime 3 有变动过的文件都被列出的意思!

    范例二:寻找 /etc 底下的文件,如果文件日期比 /etc/passwd 新就列出

    [root@www ~]# find /etc -newer /etc/passwd # -newer 用在分辨两个文件之间的新旧关系是很有用的! 与使用者或群组名称有关的参数: 符号意义-uid nn 为数字,这个数字是使用者的帐号 ID,亦即 UID ,这个 UID 是记录在/etc/passwd 里面与帐号名称对应的数字。这方面我们会在第四篇介绍。-gid nn 为数字,这个数字是群组名称的 ID,亦即 GID,这个 GID 记录在/etc/group,相关的介绍我们会第四篇说明~-user namename 为使用者帐号名称喔!例如 dmtsai-group namename 为群组名称喔,例如 users ;-nouser寻找文件的拥有者不存在 /etc/passwd 的人!-nogroup寻找文件的拥有群组不存在於 /etc/group 的文件!

    范例三:搜寻 /home 底下属於 vbird 的文件

    [root@www ~]# find /home -user vbird # 当我们要找出任何一个使用者在系统当中的所有文件时,就可以利用这 #命令将属於某个使用者的所有文件都找出来

    范例四:搜寻系统中不属於任何人的文件

    [root@www ~]# find / -nouser # 透过这个命令,可以轻易的就找出那些不太正常的文件。 # 如果有找到不属於系统任何人的文件时,不要太紧张, # 那有时候是正常的~尤其是你曾经以原始码自行编译软件时。 与文件权限及名称有关的参数: 符号意义-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…. 的属性存在! 额外可进行的动作: 符号意义-exec commandcommand 为其他命令,-exec 后面可再接额外的命令来处理搜寻到的结果。-print将结果列印到萤幕上,这个动作是默认动作!

    范例五:找出档名为 passwd 这个文件

    [root@www ~]# find / -name passwd # 利用这个 -name 可以搜寻档名!

    范例六:找出 /var 目录下,文件类型为 Socket 的档名有哪些

    [root@www ~]# find /var -type s # 这个 -type 的属性也很有帮助!尤其是要找出那些怪异的文件, # 例如 socket 与 FIFO 文件,可以用 find /var -type p 或 -type s 来找!

    范例七:搜寻文件当中含有 SGID 或 SUID 或 SBIT 的属性

    [root@www ~]# find / -perm +7000 # 所谓的 7000 就是 ---s--s--t ,那么只要含有 s t 的就列出, # 所以当然要使用 +7000 ,使用 -7000 表示要含有 ---s--s--t 的所有三个权限, # 因此,就是 +7000

    范例八:将上个范例找到的文件使用 ls -l 列出来~

    [root@www ~]# find / -perm +7000 -exec ls -l {} \; # 注意到,那个 -exec 后面的 ls -l 就是额外的命令,命令不支持命令别名, # 所以仅能使用 ls -l 不可以使用 ll !

    文件内容操作

    cat 直接查阅一个文件

    [root@www ~]# cat [-AbEnTv]

    选项与参数:

    符号意义-A相当於 -vET 的整合选项,可列出一些特殊字符而不是空白而已;-b列出行号,仅针对非空白行做行号显示,空白行不标行号!-E将结尾的断行字节 $ 显示出来;-n列印出行号,连同空白行也会有行号,与 -b 的选项不同;-T将 [tab] 按键以 ^I 显示出来;-v列出一些看不出来的特殊字符

    tac反向列示

    与cat功能相同,但是是反向打印,最后一行–》第一行。

    more 按页查阅文件

    (一页一页翻动)

    符号意义空白键 (space)代表向下翻一页;Enter代表向下翻『一行』;/字串代表在这个显示的内容当中,向下搜寻『字串』这个关键字;:f立刻显示出档名以及目前显示的行数;q代表立刻离开 more ,不再显示该文件内容。b 或 [ctrl]-b代表往回翻页,不过这动作只对文件有用,对管线无用。

    less 按页查阅文件

    (一页一页翻动) 在 more 的时候,我们并没有办法向前面翻, 只能往后面看,但若使用了 less 就可以使用 [pageup] [pagedown] 等按键的功能来往前往后翻看文件

    符号意义空白键向下翻动一页;[pagedown]向下翻动一页;[pageup]向上翻动一页;/字串向下搜寻『字串』的功能;?字串向上搜寻『字串』的功能;n重复前一个搜寻 (与 / 或 ? 有关!)N反向的重复前一个搜寻 (与 / 或 ? 有关!)q离开 less 这个程序;

    head 取出前面几行

    默认10行

    [root@www ~]# head [-n number] 文件

    选项与参数:

    ---n后面接数字,代表显示几行的意思 [root@www ~]# head /etc/man.config # 默认的情况中,显示前面十行!若要显示前 20 行,就得要这样: [root@www ~]# head -n 20 /etc/man.config

    tail 取出后面几行

    默认10行

    [root@www ~]# tail [-n number] 文件

    选项与参数:

    ---n后面接数字,代表显示几行的意思-f表示持续侦测后面所接的档名,要等到按下[ctrl]-c才会结束tail的侦测 [root@www ~]# tail /etc/man.config # 默认的情况中,显示最后的十行若要显示最后的 20 行,就得要这样: [root@www ~]# tail -n 20 /etc/man.config

    压缩与打包

    几种压缩方式

    后缀名压缩方式*.Zcompress 程序压缩的文件;*.gzgzip 程序压缩的文件;*.bz2bzip2 程序压缩的文件;*.tartar 程序打包的数据,并没有压缩过;*.tar.gztar 程序打包的文件,其中并且经过 gzip 的压缩*.tar.bz2tar 程序打包的文件,其中并且经过 bzip2 的压缩

    gzip

    [root@www ~]# gzip [-cdtv#] 档名 [root@www ~]# zcat 档名.gz

    选项与参数:

    符号意义-c将压缩的数据输出到萤幕上,可透过数据流重导向来处理;-d解压缩的参数;-t可以用来检验一个压缩档的一致性~看看文件有无错误;-v可以显示出原文件/压缩文件的压缩比等资讯;-#压缩等级,-1 最快,但是压缩比最差、-9 最慢,但是压缩比最好!默认是 -6

    gzip 压缩文件默认不保留原文件

    范例:若保留原本的文件

    [root@www tmp]# gzip man.config > man.config.gz

    zcat为 显示压缩中的文档。

    bzip2

    用法同gzip

    [root@www ~]# bzip2 [-cdkzv#] 档名 [root@www ~]# bzcat 档名.bz2

    选项与参数:

    符号意义-c将压缩的过程产生的数据输出到萤幕上!-d解压缩的参数-k保留原始文件,而不会删除原始的文件喔!-z压缩的参数-v可以显示出原文件/压缩文件的压缩比等资讯;-#与 gzip 同样的,都是在计算压缩比的参数, -9 最佳, -1 最快!

    tar 打包命令

    [root@www ~]# tar [-j|-z] [cv] [-f 创建的档名] filename... 打包与压缩 [root@www ~]# tar [-j|-z] [tv] [-f 创建的档名] 察看档名 [root@www ~]# tar [-j|-z] [xv] [-f 创建的档名] [-C 目录] 解压缩

    选项与参数:

    符号意义-c创建打包文件,可搭配 -v 来察看过程中被打包的档名(filename)-t察看打包文件的内容含有哪些档名,重点在察看『档名』就是了;-x解打包或解压缩的功能,可以搭配 -C (大写) 在特定目录解开 特别留意的是, -c, -t, -x 不可同时出现在一串命令列中。-j透过 bzip2 的支持进行压缩/解压缩:此时档名最好为 *.tar.bz2-z透过 gzip 的支持进行压缩/解压缩:此时档名最好为 *.tar.gz-v在压缩/解压缩的过程中,将正在处理的档名显示出来!-f filename-f 后面要立刻接要被处理的档名!建议 -f 单独写一个选项罗!-C 目录这个选项用在解压缩,若要在特定目录解压缩,可以使用这个选项。

    其他后续练习会使用到的选项介绍:

    符号意义-p保留备份数据的原本权限与属性,常用於备份(-c)重要的配置档-P保留绝对路径,亦即允许备份数据中含有根目录存在之意;–exclude=FILE在压缩的过程中,不要将 FILE 打包!

    简单形式

    ––压 缩tar -jcv -f filename.tar.bz2 要被压缩的文件或目录名称查 询tar -jtv -f filename.tar.bz2解压缩tar -jxv -f filename.tar.bz2 -C 欲解压缩的目录

    vim编辑器

    模式

    『一般模式』、『编辑模式』、『指令列命令模式』

    一般模式:

    以 vi 打开一个档案就直接进入一般模式了(这是默认的模式)。在这个模式中, 你可以使用『上下左右』按键来移动光标,你可以使用『删除字符』或『删除整行』来处理档案内容, 也可以使用『复制、贴上』来处理你的文件数据。

    编辑模式:

    在一般模式中可以进行删除、复制、贴上等等的动作,但是却无法编辑文件内容的! 要等到你按下『i, I, o, O, a, A, r, R』等任何一个字母之后才会进入编辑模式。注意了!通常在 Linux 中,按下这些按键时,在画面的左下方会出现『 INSERT 或 REPLACE 』的字样,此时才可以进行编辑。而如果要回到一般模式时, 则必须要按下『Esc』这个按键即可退出编辑模式。

    指令列命令模式:

    在一般模式当中,输入『 : / ? 』三个中的任何一个按钮,就可以将光标移动到最底下那一行。在这个模式当中,可以提供你『搜寻资料』的动作,而读取、存盘、大量取代字符、离开 vi 、显示行号等等的动作则是在此模式中达成的!

    按键说明

    第一部份:一般模式可用的按钮说明,光标移动、复制贴上、搜寻取代等

    移动光标的方法 命令意义h 或 向左箭头键(←)光标向左移动一个字符j 或 向下箭头键(↓)光标向下移动一个字符k 或 向上箭头键(↑)光标向上移动一个字符l 或 向右箭头键(→)光标向右移动一个字符[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 啊! (常用)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 。

    使用 /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从第一行到最后一行寻找 word1 字符串,并将该字符串取代为 word2 !(常用):1,$s/word1/word2/gc从第一行到最后一行寻找 word1 字符串,并将该字符串取代为 word2 且在取代前显示提示字符给用户确认 (confirm) 是否需要取代!(常用) 删除、复制与粘贴 命令意义x, X在一行字当中,x 为向后删除一个字符 (相当于 [del] 按键), X为向前删除一个字符(相当于 [backspace] 亦即是退格键) (常用)nxn 为数字,连续向后删除 n 个字符。举例来说,我要连续删除 10 个字符, 『10x』。dd删除游标所在的那一整列(常用)nddn为数字。删除光标所在的向下 n 列,例如 20dd 则是删除 20 列 (常用)d1G删除光标所在到第一行的所有数据dG删除光标所在到最后一行的所有数据d$删除游标所在处,到该行的最后一个字符d0那个是数字的 0 ,删除游标所在处,到该行的最前面一个字符yy复制游标所在的那一行(常用)nyyn 为数字。复制光标所在的向下 n 列,例如 20yy 则是复制 20 列(常用)y1G复制游标所在列到第一列的所有数据yG复制游标所在列到最后一列的所有数据y0复制光标所在的那个字符到该行行首的所有数据y$复制光标所在的那个字符到该行行尾的所有数据p, pp为将已复制的数据在光标下一行贴上,P则为贴在游标上一行(常用)J将光标所在列与下一列的数据结合成同一列c重复删除多个数据,例如向下删除 10 行,[ 10cj ]u复原前一个动作。(常用)[Ctrl]+r重做上一个动作。(常用).意思是重复前一个动作的意思。(常用)

    第二部份:一般模式切换到编辑模式的可用的按钮说明

    进入插入或取代的编辑模式 命令意义i ,I进入插入模式(Insert mode):i 为『从目前光标所在处插入』, I 为『在目前所在行的第一个非空格符处开始插入』。 (常用)a, A进入插入模式(Insert mode):a 为『从目前光标所在的下一个字符处开始插入』, A 为『从光标所在行的最后一个字符处开始插入』。(常用)o, O进入插入模式(Insert mode):o 为『在目前光标所在的下一行处插入新的一行』; O 为在目前光标所在处的上一行插入新的一行!(常用)r, R进入取代模式(Replace mode):r 只会取代光标所在的那一个字符一次;R会一直取代光标所在的文字,直到按下 ESC 为止;(常用)[Esc]退出编辑模式,回到一般模式中(常用)

    上面这些按键中,在 vi 画面的左下角处会出现『–INSERT–』或『–REPLACE–』的字样。 特别注意的是,我们上面也提过了,你想要在档案里面输入字符时, 一定要在左下角处看到 INSERT 或 REPLACE 才能输入.

    第三部份:一般模式切换到指令列模式的可用的按钮说明

    指令列的储存、离开等指令 命令意义:w将编辑的数据写入硬盘档案中(常用):w!若文件属性为『只读』时,强制写入该档案。:q离开 vi (常用):q!若曾修改过档案,又不想储存,使用 ! 为强制离开不储存档案。:wq储存后离开,若为 :wq! 则为强制储存后离开 (常用)ZZ这是大写的 Z 储存后离开!:w [filename]将编辑的数据储存成另一个档案(类似另存新档):r [filename]在编辑的数据中,读入另一个档案的数据。:n1,n2 w [filename]将 n1 到 n2 的内容储存成 filename 这个档案。:! command暂时离开 vi 到指令列模式下执行 command 的显示结果!例如『:! ls /home』即可在 vi 当中察看 /home 底下以 ls 输出的档案信息!

    第四部份:多窗口功能

    命令意义:sp [filename]开启一个新窗口,如果有加 filename,表示在新窗口开启一个新档案,否则表示两个窗口为同一个档案内容(同步显示)。[ctrl]+w+ j按键的按法是:先按下 [ctrl] 不放, 再按下 w 后放开所有的按键,然后再按下[ctrl]+w+↓j (或向下箭头键),则光标可移动到下方的窗口。[ctrl]+w+ k同上,不过光标移动到上面的窗口。[ctrl]+w+↑同上[ctrl]+w+ q就是 :q 结束

    举例来说,如果我想要结束下方的窗口,那么利用 [ctrl]+w+↓ 移动到下方窗口后,按下 :q 即可离开, 也可以按下 [ctrl]+w+q

    转载请注明原文地址: https://ju.6miu.com/read-1309051.html
    最新回复(0)