梦相随1006

版权归 梦相随1006 所有,未经 https://www.cnblogs.com/xin1006 作者许可,严禁转载

导航

鸟哥Linux学习笔记04

1, . 当前目录  ..上层目录

2, 目录的相关操作

  1)cd(切换目录)

   [root@node1 ~]# cd [相对路径或绝对路径]

   [root@node1 ~]# cd      : 回到自己的主文件夹

   [root@node1 ~]# cd ~   : 也表示回到自己主文件夹

   [root@node1 ~]# cd ~ilink : 去ilink这个用户的主文件夹,即/home/ilink

  2)pwd(显示目前所在目录)  ,即 我在哪

   对于连接文件,显示出实际的工作目录,而不是连接文件本身的目录名时, 可以使用 -P 参数

  3)mkdir(新建新目录)

   [root@node1 test]# mkdir [-mp] 目录名

 参数: -m 配置文件案的权限。直接设置,不需要看默认权限(umask)

           -p 帮助你直接将所需要的目录(包括上层目录)递归创建起来  (一般不建议常用-p这个参数)

    

  4)rmdir(删除 “空” 的目录)

3, 关于执行文件路径的变量 $PATH

   1) echo “ 有显示,打印的意思 ”

    [ilink@node1 test]$ echo $PATH

    PATH(一定要大写),这个变量的内容是由一堆目录所组成的,每个目录中间用冒号(:)隔开,每个目录都是有" 顺序 " 之分的

  2) 将某个路径加入PATH中

    [ilink@node1 test]$   PATH="$PATH":/home/ilink/test

  3) 为了安全,不建议将" . "加入PATH中

4, ls 查看文件与目录

    [ilink@node1 test]$ ls[-aAdfFhilnrRSt] 目录名称

    [ilink@node1 test]$ ls [--color={never,auto,always}] 目录名称

    [ilink@node1 test]$ ls [--full-time] 目录名称

  参数说明:

   -a : 全部的文件,连同隐藏文件一起列出来(常用)

   -d : 仅列出目录本身,而不是列出目录内的文件数据(常用)

   -l : 列出长数据串,包含文件的属性与权限等数据(常用)

   -t : 依时间排序,而不是文件名排序

   --color=never  : 不要依据文件特性给予颜色显示

   --color=always : 显示颜色

   --color=auto    : 让系统自行依据设置来判断是否给予颜色

   --full-time        : 以完整时间模式(包含年、月、日 、时、分、秒)输出

5, cp(复制文件或目录)

  [ilink@node1 test]$ cp[-adfilprsu] 源文件(source)  目标文件(destination)

  [ilink@node1 test]$ cp [options] source1 source2 source3... directory

  参数:

   -a : 相当于 -pdr的意思 (常用)

   -f : 为强制(force)的意思,若目标文件已经存在且无法开启,则删除后再尝试

   -i : 若目标文件(destination)已经存在时,在覆盖时会先询问操作的进行(常用)

   -p: 连同文件的属性一起复制过去,而非使用默认属性(备份常用)

   -r: 递归持续复制,用于目录的复制行为(常用)

   -s : 复制成为符号链接文件(symbolic link),即“快捷方式”文件;

  -u : 若destination比source旧时才更新destination

 由于 cp 有种种的文件属性与权限特性,所以,在复制的时候,必须清楚的了解到:

    是否需要完整保留来源文件的信息?  源文件是否为软连接文件(symbolic link file)?

    源文件是否为特殊文件,例如 FIFO、Socket等?

    源文件是否为目录?

6, rm(移除文件或目录)

   参数:

   -f : 就是 force 的意思,忽略不存在的文件,不会出现警告信息;

   -i : 互动模式,在删除之前询问用户是否操作

   -r: 递归删除。最常用在目录的删除上。 比较危险的参数

  注意:文件名最好不要使用 "-" 号开头,因为 "-" 后面接参数,因此,单纯使用 "rm -aaa-"系统的命令就会误判,所以对于这样的使用 " rm ./-aaa" 。

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

    [root@node1 ~]# mv [-fiu] source destination

    [root@node1 ~]# mv [options] source1 source2 source3 .... directory

 参数:

    -f :就是 force 的意思,如果目标文件已经存在,不会询问而直接覆盖;

    -i : 若目标已经存在,就会询问是否覆盖

    -u: 若目标文件已经存在,且source比较新,才会更新.

8, 取得路径的文件名与目录名称  basename dirname

   

9, 文件内容查阅

    cat  :   由第一行开始显示文件内容

    tac  :   从最后一行开始显示,可以看出是cat的倒写

    nl    :   显示的时候,顺便输出行号

   more:  一页一页的显示文件内容

   less  : 与more类似,但是比more更好用,可以往前翻页

   head : 只看头几行

   tail    : 只看结尾几行

   od    : 以二进制的方式读取文件内容

10,cat (concatenate)

  [root@node1 ~]# cat [-AbEnTv]  文件

   参数 -A :相当于 -vET的整合参数,可列出一些特殊字符,而不是空白而已;

         -b : 列出行号,仅针对非空白行做行号显示,空白行不标行号;

         -n : 打印出行号,连同空白行也会有行号,与 -b 不同

11,more 与 less

  都是一页一页显示,他们的快捷键基本上与man一样 ,不再解释

12, head(取出前面几行)

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

     [root@node1 ~]#  head /etc/man.config           默认情况下显示前10行;

   [root@node1 ~]# head -n 20 /etc/man.config   显示前20行;

     [root@node1 ~]# head -n -100 /etc/man.config 列出前面的所有行,但不包括后面100行

13,tail(取出后面几行)

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

    [root@node1 ~]#  tail /etc/man.config           默认情况下显示后10行;

   [root@node1 ~]# tail -n 20 /etc/man.config   显示后20行;

     [root@node1 ~]# tail -n +100 /etc/man.config 列出100行以后的数据

例如: 我想显示 /etc/man.config的第11行到20行呢?

    答案: head -n 20 /ect/man.config | tail -n 10

14, od(非纯文本文件)

  [root@node1 ~]# od [-t TYPE] 文件

   参数

     -t   : 后面可以接各种"类型"的输出,例如:

         a        : 利用默认的字符输出

         c        : 使用ASCII字符输出

         d[size]: 利用十进制(decimal)来输出数据,每个整数占size bytes

         f[size]: 利用浮点数(floating)来输出数据,每个数占size bytes

         o[size]: 利用八进制(octal)来输出数据,每个整数占size bytes

         x[size]: 利用十六进制(hexadecimal)来输出数据,每个整数占size bytes

 15, touch(修改文件的时间或创建新文件)

  每个文件在linux下面都会记录许多的时间参数,有三个主要的变动时间

   modification time(mtime) 当该文件的"内容数据"更改时,就会更新这个时间。内容数据指的是文件的内容,而不是文件的属性或者权限;

   status time(ctime)当该文件的"状态"(status)改变时,就会更新这个时间,举例说明,当权限与属性被更改了,就会更新这个时间;

   access time(atime)当该文件的"内容被取用"时,就会更新这个时间(access)。举例说明,使用cat去读取/etc/man.config,就会更新该文件的atime了。

  

  [root@node1 ~]# touch [-acdmt] 文件

  参数:

    -a  : 仅修改访问时间;

    -c  : 仅修改文件的时间,若该文件不存在则不创建新文件;

    -d : 后面可以接欲修改的时间而不用当前的时间,也可以使用 --date="日期或时间";

    -m: 仅修改mtime ;

    -t :  后面可以接欲修改的时间而不是当前时间,格式[YYMMDDhhmm]

 touch这个命令最常被使用的情况是:

    创建一个空的文件;    将某个文件日期修改为目前时间(mtime与atime); 

 16, 文件默认权限:umask

  umask就是指定 "目前用户在新建文件或目录时候的权限默认值"

      要注意的是:umask的分数指的是"该默认值需要减掉的权限"。因为r、w、x分别是4、2、1,也就是说,要拿掉能写的权限,就输入2,要拿掉读的权限就输入4,那么要拿掉读与写的权限就输入6...

17, 文件的隐藏属性

  chattr(设置文件的隐藏属性)

  [root@node1 ~]# chattr [+-=] [ASacdistu] 文件或目录名称

  参数+,-,= 与权限是一样的,不再说明

     a   :  当设置a之后,这个文件只能增加数据,而不能删除也不能修改,只有root才能设置这个属性, 一般log file这种的登录文件常用

     i    :  可以让一个文件" 不能被删除、改名、设置连接也无法写入或添加数据 "。这对于系统的安全性有很大的帮助,只有root能设置此属性.

18, lsattr(显示文件隐藏属性)

  [root@node1 ~]# lsattr [-adR] 文件或目录

  -a  : 将隐藏文件的属性也秀出来

     -d :  如果接的是目录,仅列出目录本身的属性而非目录内的文件名

     -R :  连同子目录的数据也一并列出来

19, 查看文件类型 file

  如果想知道某个文件的基本数据,例如属于ASCII或者data文件,或是binary,就可以利用file这个命令查看

20, 文件名的查找

  通常find不很常用,因为速度慢!通常先使用whereis或者locate来检查,如果真的找不到,才以find查询。为什么?因为whereis与locate是利用数据库来查找数据,所以相当快速,而且并没有实际查询硬盘,比较节省时间。

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

  参数:

    -b : 只找二进制的文件.

    -m : 只找在说明文件manual路径下的问题

    -s : 只找source源文件

    -u : 查找不在上述三个选项当中的其它特殊文件

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

  参数:

  -i : 忽略大小写的差异;

  -r : 后面可接正则表达式的显示方式

  locate 来寻找数据的时候特别,这是因为locate寻找的数据是由已创建的数据库/var/lib/mlocate里面的数据所查找的,数据库默认是每天执行一次,所以当你新建文件后查找该文件,那么locate会告诉你 "找不到" ,因为必须要更新数据库。

  我们可以手动更新数据库,方法很简单直接输入 " updatedb " 即可。

  updatedb : 依据 /etc/updatedb.conf 的设置去查找系统硬盘内的文件名,并更新 /var/lib/mlocate 内的数据库文件

  locate : 依据/var/lib/mlocate 内的数据库记载,找出用户输入的关键字文件名

  [root@node1 ~]# 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还要新的文件。

    例子: 列出 过去系统上面24小时内有改动的(mtime)的文件

    [root@node1 ~]# find / -mtime 0               这个0是重点!0代表目前时间,所以从现在开始到24小时前,有改动的文件都会列出来!

    那么如果3天的24小时内? find / -mtime 3

            

    从图中可以看到,越往左则代表越早的时间,

      +4 代表大于等于5天前的文件名 : find /var -mtime +4

      -4 代表小于等于4天内的文件名 : find /var -mtime -4

      4 则代表4~5那一天的文件名 : find /var -mtime 4

  2)参数

    与用户或用户组有关的参数:

    -uid n : n为数字,这个数字是用户对应的账号ID,即UID,这个UID记录在/etc/passwd里面与账号名称对应的数字.

    -gid n : n为数字,这个数字是用户组的ID,即GID,这个GID记录在/etc/group中

    -user name :name 为用户账号名称。例如ilink

    -group name : name为用户组名称

    -nouser  :寻找文件的所有者不存在 /etc/passwd的人

    -nogroup: 寻找文件的所有用户组不存在于/etc/group中的文件

  3)参数

    与文件权限及名称有关的参数

    -name filename :查找文件名为filename的文件

    -size [+-]SIZE :  查找比SIZE还要大(+)或小(-)的文件。这个SIZE的规格有: c:代表byte,k:代表1024bytes,

    -type TYPE :  查找文件类型为TYPE的 ,类型主要有: 一般正规文件(f)、设备文件(b、c)、目录(d)、连接文件(l)、socket(s)、及FIFO(p)等属性

    -perm mode : 查找文件权限“刚好等于”mode的文件。

    -perm +mode: 查找文件权限"包含任意mode的权限"的文件,举例说,查找 -rwxr-xr-x,即-perm +755时,但一个文件属性为 -rw-------也会被列出来,因为它有-rw...的属性存在

    -perm -mode : 查找文件权限"必须要包含全部mode的权限",举例说,查找-rwxr--r--,即 0744的文件,使用-perm 0744,当一个文件权限为-rwsr-xr-x,即0755时,也会被列出来,因为 -rwsr-xr-x属性包括了-rwxr--r--的属性

   4)其他可进行的操作

    -exec  command : command为其它命令,-exec后面可再接其它的命令来处理查找到的结果

    -print  :将结果打印到屏幕上,这个操作是默认操作

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

    

    find 的特殊功能就是能够进行额外的动作(action)。

    {}代表的是 "由find找到的内容",

    -exec 一直到"\;"是关键字,代表find额外命令的开始(-exec)到结束(\;),中间是find命令内的额外命令。

    因为";"在bash环境下有特殊意义的,因此利用反斜杠来转义。

    find还可以利用通配符查找文件名 ,如  find /etc -name 'print*'

posted on 2013-08-21 17:04  梦相随1006  阅读(213)  评论(0编辑  收藏  举报