linux杂记(七)linux档案与目录管理指令

时间:2023-03-09 17:44:16
linux杂记(七)linux档案与目录管理指令

1.目录的相关操作:cd,pwd,mkdir,rmdir

路径(PATH):

  • 绝对路径:路径的写法【一定由根目录/写起】,例如/usr/share/doc这个目录
  • 相对路径:路径的写法【不是由/写起】,例如由/usr/share/doc要到/usr/share/man底下时,可以写成:[cd ../man]这就是相对路径的写法。相对路径指的是【相对于目前工作目录的路径】
. 代表此层目录
.. 代表上一层目录
- 代表前一个工作目录
 ~ 代表【目前使用者身份】所在的home目录
~account 代表account这个使用者的home目录

cd(变换目录change directory)

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

pwd(显示当前所在的目录print working directory)

[root@linux ~]#  pwd  [-P]
参数:
-P :显示出确实的路径,而非使用连结(link)路径

mkdir(建立新目录make directory)

[root@linux ~]#  mkdir [-mp] 目录名称
参数:
-m :设定档案的权限,直接设定,不需要看预设权限(umask)
-p :帮助你直接将所需要的目录递归建立起来

rmdir(删除【空】的目录remove directory)

[root@linux ~]#  rmdir [-p] 目录名称
参数;
-p :连同上层【空的】目录也一起删除

2.档案与目录管理

2.1档案与目录的检视:ls

[root@linux ~]#  ls [-aAdfFhilRS] 目录名称
[root@linux ~]#  ls [--color={none,auto,always}] 目录名称
[root@linux ~]#  ls [--full-time] 目录名称
参数:
-a :全部档案,连同隐藏档一起列出来
-A :全部档案,连同隐藏档,但不包括.与..这两个目录,一起列出来
-d :仅列出目录本身,而不是列出目录内的档案数据
-f  :直接列出结果,而不进行排序(ls 预设会以档名排序)
 -F :根据档案、目录等信息,给予附加数据结构,例如:
       *:代表可执行档;/:代表目录;=:代表socket档案;|:代表FIFO档案;
-h :将档案容量以人类较易读的方式(例如 GB、KB等等)列出来
-i  :列出inode位置,而非列出档案属性
-l  :长数据串行出,包含档案的属性等等数据
-n :列出UID与GID而非使用者与群组的名称(UID与GID会在账号管理提到)
-r  :将排序结果反向输出,例如:原本档名由小到大,反向则为由大到小
-R :连同子目录内容一起列出来
-S :以档案容量大小排序
-t :依时间排序
--color=never :不要依据档案特性给予颜色显示
--color=always :显示颜色
--color=auto :让系统自行依据设定来判断是否给予颜色
--fulll-time :以完整时间模式(包含年、月、日、时、分)输出
--time={atime,ctime} :输出access时间或改变权限属性时间(ctime)而非内容变更时间(modification time)

2.2复制、移动与删除:cp,rm,mv

[root@linux ~]#  cp [-adfilprsu] 来源档(source) 目的档(destination)
参数:
-a :相当于 -pdr的意思
-d :若来源文件为连结文件的属性(link file),则复制连结文件属性而非档案本身
-f :为强制(force)的意思,若有重复或其它疑问时,不会询问使用者,而强制复制
-i :若目的档(destination)已经存在时,在覆盖时会先询问是否真的动作
-l :进行硬式连结(hard link)的连结档建立,而非复制档案本身
-p :连同档案的属性一起复制过去,而非使用预设属性
-r :递归持续复制,用于目录的复制行为
-s :复制成为符号连结文件(symbolic link),即【快捷方式】档案
-u :若destination比source旧才更新destination
[root@linux ~]#  rm [-fir] 档案或目录
参数:
-f :就是force的意思,强制移除
-i :互动模式,在删除前会询问使用者是否动作
-r :递归删除
[root@linux ~]#  mv [-fiu] source destination
参数;
-f :force强制的意思,强制直接移动而不询问
-i :若目标档案(destination)已经存在时,就会询问是否覆盖
-u :若目标档案已经存在,且source比较新,就会更新(update)

3.档案内容查阅

3.1直接检视档案内容:cat,tac,nl

  • cat (concatenate)
[root@linux ~]# cat [-AEnTv]
参数:
-A :相当于 -vET 的整合参数,可列出一些特殊字符
-E :将结尾的断行字符 $ 显示出来;
-n :打印出行号;
-T :将 [tab] 按键以 ^I 显示出来;
-v :列出一些看不出来的特殊字符
  • tac (反向列示)
  • nl (添加行号打印)
[root@linux ~]# nl [-bnw] 档案
参数:
-b:指定行号指定的方式,主要有两种:
      -b a :表示不论是否为空行,也同样列出行号;
      -b t :如果有空行,空的那一行不要列出行号;
-n:列出行号表示的方法,主要有三种:
      -n ln :行号在屏幕的最左方显示;
      -n rn :行号在自己字段的最右方显示,且不加  ;
      -n rz :行号在自己字段的最右方显示,且加  ;
-w:行号字段的占用的位数。

3.2可翻页检视:more,less

  • more (一页一页翻动)
 [root@linux ~]# more /etc/man.config
#
# Generated automatically from man.conf.in by the
# configure script.
#
# .5p
#
.......中间省略.......
--More--(%) <== 重点在这一行

重点在最后一行,最后一行会显示出目前显示的百分比, 而且还可以在最后一行输入一些有用的指令!在 more 这个程序的运作过程中,你有几个按键可以按的:

空格键 (space):代表向下翻一页;

Enter :代表向下翻『一行』;

/字符串:代表在这个显示的内容当中,向下搜寻『字符串』;

:f :立刻显示出文件名以及目前显示的行数;

q :代表立刻离开 more ,不再显示该档案内容。

  • less (一页一页翻动)

在 more 的时候,我们并没有办法向前面翻, 只能往后面看,但若使用了 less 时,就可以使用 [pageup] [pagedown] 等按键的功能来往前往后翻看文件。
除此之外,在 less 里头可以拥有更多的『搜寻』功能喔!不止可以向下搜寻,也可以向上搜寻。基本上,可以输入的指令有:

空格键 :向下翻动一页

[pagedown]:向下翻动一页

[pageup] :向上翻动一页

/字符串 :向下搜寻『字符串』的功能

?字符串 :向上搜寻『字符串』的功能

n :重复前一个搜寻 (与 / 或 ? 有关!)

N :反向的重复前一个搜寻 (与 / 或 ? 有关!)

q :离开 less 这个程序

3.3资料撷取:head,tail

  • head (取出前面几行)
[root@linux ~]# head [-n number] 档案
参数:
-n:后面接数字,代表显示几行的意思
  • tail (取出后面几行)
[root@linux ~]# tail [-n number] 档案
参数:
-n:后面接数字,代表显示几行的意思

3.4非纯文字文件:od

[root@linux ~]# od [-t TYPE] 档案
参数:
-t:后面可以接各种『类型 (TYPE)』的输出,例如:
    a :利用预设的字符来输出;
    c :使用 ASCII 字符来输出
    d[size] :利用十进制(decimal)来输出数据,每个整数占用 size bytes ;
    f[size] :利用浮点数值(floating)来输出数据,每个数占用 size bytes ;
    o[size] :利用八进位(octal)来输出数据,每个整数占用 size bytes ;
    x[size] :利用十六进制(hexadecimal)来输出数据,每个整数占用 size bytes ;

3.5修改档案时间与建置新档:touch

我们在 ls 这个指令的介绍时,有稍微提到每个档案在 linux 底下都会记录三个主要的变动时间, 那么三个时间是哪三个呢?

  • modification time (mtime):当该档案的『内容数据』变更时,就会更新这个时间! 内容数据指的是档案的内容,而不是档案的属性
  • status time (ctime):当该档案的『状态 (status)』改变时,就会更新这个时间,举例来说, 像是权限与属性被更改了,都会更新这个时间
  • access time (atime):当『该档案的内容被取用』时,就会更新这个读取时间 (access)。 举例来说,我们使用 cat 去读取 ~/.bashrc ,就会更新 atime 了

档案的时间是很重要的,因为,如果档案的时间误判的话,可能会造成某些程序无法顺利的运作。那么万一我发现了一个档案来自未来(例如 GMT 时间),那该如何让该档案的时间变成『现在』的时刻呢? 很简单啊!就用『touch』这个指令即可!

[root@linux ~]# touch [-acdmt] 档案
参数:
-a :仅修订 access time;
-c :仅修改时间,而不建立档案;
-d :后面可以接日期,也可以使用 --date="日期或时间"
-m :仅修改 mtime ;
-t :后面可以接时间,格式为[YYMMDDhhmm]

4.档案与目录的预设权限与隐藏权限

4.1档案预设权限:umask

基本上, umask 就是指定 『目前使用者在建立档案或目录时候的属性默认值』。

[root@linux ~]# umask

[root@linux ~]# umask -S
u=rwx,g=rx,o=rx

4.2档案隐藏属性:chattr,lsattr

  • chattr (设定档案隐藏属性)
[root@linux ~]# chattr [+-=][ASacdistu] 档案或目录名称
参数:
+ :增加某一个特殊参数,其它原本存在参数则不动。
- :移除某一个特殊参数,其它原本存在参数则不动。
= :设定一定,且仅有后面接的参数
A :当设定了 A 这个属性时,这个档案(或目录)的存取时间 atime (access)
S :这个功能有点类似 sync 的功能!就是会将数据同步写入磁盘当中!将不可被修改,可避免例如手提式计算机容易有磁盘 I/O 错误的情况发生!可以有效的避免数据流失!
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 才能够设定的喔!
  • lsattr (显示档案隐藏属性)
[root@linux ~]# lsattr [-aR] 档案或目录
参数:
-a :将隐藏文件的属性也秀出来;
-R :连同子目录的数据也一并列出来!
.档案搜寻:which,whereis,locate,find
  • which (寻找『执行档』)
[root@linux ~]# which [-a] command
参数:
-a :将所有可以找到的指令均列出,而不止第一个被找到的指令名称
  • whereis (寻找特定档案)
[root@linux ~]# whereis [-bmsu] 档案或目录名
参数:
-b :只找 binary 的档案
-m :只找在说明文件 manual 路径下的档案
-s :只找 source 来源档案
-u :没有说明档的档案!
  • locate
[root@linux ~]# locate filename
  • find
[root@linux ~]# find [PATH] [option] [action]参数:
. 与时间有关的参数:
-atime n :n 为数字,意义为在 n 天之前的『一天之内』被 access 过的档案;
-ctime n :n 为数字,意义为在 n 天之前的『一天之内』被 change 过状态的档案;
-mtime n :n 为数字,意义为在 n 天之前的『一天之内』被 modification 过的档案;
-newer file :file 为一个存在的档案,意思是说,只要档案比 file 还要新,就会被列出来
. 与使用者或群组名称有关的参数:
-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 搜寻。
. 与档案权限及名称有关的参数:
-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 为类似  !
-perm -mode :搜寻档案属性『必须要全部囊括 mode 的属性』的档案,举例来说,我们要搜寻 -rwxr--r-- ,亦即  的档案,使用 -perm -,当一个档案的属性为 -rwsr-xr-x ,亦即  时,也会被列出来,因为 -rwsr-xr-x 的属性已经囊括了 -rwxr--r-- 的属性了。
-perm + 时,但一个档案属性为 -rw-------也会被列出来,因为他有 -rw.... 的属性存在!
. 额外可进行的动作:
-exec command :command 为其它指令,-exec 后面可再接额外的指令来处理搜寻到的结果。
-print:将结果打印到屏幕上,这个动作是预设动作!