Linux学习记录:01文件相关

Linux学习记录:01文件相关

0x01权限与路径

  Linux为了服务于多人多应用环境,有着完善的权限机制,学习权限它的还是 很重要滴,我有一次就是误删了权限文件,不得不向阿里云发工单@_@,折腾了几天才登陆上服务器,血的教训啊.....

  Linux把对于文件的操作身份分为了owner(拥有者)|group(群组)|others(非本群组)
  对于每个权限,还分为了read|write|execute
  当然在一切的一切之上还有万能的ROOT,啥都能干哦~
  如果有的时候提示“Permission denied”,就代表权限不足,这时候可以试着用su来切换到root身份,或者在指令前加上sudo来解决。
  所有的系统上的账号与一般身份使用者,还有那个 root 的相关信息,都是记录在/etc/passwd 这个文件内的。至于个人的密码则是记录在/etc/shadow 这个文件下。

  查看文件的信息可以用 ls -al指令

第一栏:权限


其中的档案类型,也就是第一个,如果为“d”,说明它为文件夹,如果为“-”,则说明是文件,“l”代表为连结文件,还有"b"和"c",不太常见,就不说了。

第二栏:连结数

  这一栏代表有多少文件连结到此节点(i-node)。
  

一个小小的坑坑

  有时候分别输入ls 和 ls -al,出来的文件数是不同的!这是因为有个东西叫隐藏文件
  隐藏文件就是文件名的第一个字符为"."。直接输入ls是显示不出来的,必须要ls -a才行。

  而且由于类UNIX系统的约定俗称,不但Linux是这样,OSX,IOS,Android,都是这样。
  我以前是不知道的,直到我把在IPAD上的一个电影名改成了“.”开头,后来........我格式化了ipad。

0x02文件与目录

  对于处理目录有几个不会Linux都应该知道的指令

cd  [TARGET_DIR] 
//进入目标路径
pwd 
//显示当前目录
ls [-aAdfFhilnrRSt]
//列出所有目录
-a :全部的文件,包括隐藏文件
-A :全部的文件,包括隐藏文件,但不包括 . 与 .. 这两个目录
-d :仅列出目录本身,而不是列出目录内的文件数据
-h :将文件容量以人类较易读的方式(例如 GB, KB 等等)列出来;
-i :列出 inode 号码
-l :长数据串行出,包含文件的属性与权限等等数据;
-n :列出 UID 与 GID 而非使用者与群组的名称 
-r :将排序结果反向输出,例如:原本档名由小到大,反向则为由大到小;
-R :连同子目录内容一起列出来,等于该目录下的所有文件都会显示出来;
-S :以文件容量大小排序,而不是用档名排序;
-t :依时间排序,而不是用档名。
mkdir [-mp] [name]
//建立新目录 make directory的简写
/*  -p 建立递归的目录                            
/*  比如要创建 /1/2/3/4/5/,但你只有/1/,这时候   
/*  直接 mkdir /1/2/3/4/5/就会报错: No such file or dictionary             
/*  这时候就得用到 -p 参数   
/*  mkdir -p /1/2/3/4/5/
/*---------------------------------*/                 
/*  -m 创建并且设定文件夹的权限                  
/*  (而不是采用umask默认值)                    
/*  例如: mkdir -m 777 myfold 
/*  创建一个权限为777的文件夹myfold      

rmdir 
//删除空目录 remove directory的简写

  我们还能在一些脚本,指令里看到有 ~ ,/,之类的符号,有点迷惑。在以下简单列出含义 |符号|含义|例子|含义| |-|-|-|-| |./|代表当前目录 |cd ./dir|进入当前目录下的dir文件夹 | |../ |表示上一级的文件 |cd ../ |进入上一层文件夹| |- |返回前一个目录 |cd - |返回上一个进入的目录| | ~| 当前用户的家目录|cd ~ |进入到当前用户的家目录中| | /|根目录 |cd / |进入更目录|

  值得注意最后两个符号,~也可以写作为$HOME,就是说 cd ~cd $HOME是等同的。
  因为Linux是挂载型的文件系统,所以根是从   /   开始的,一切目录都是在   /  下面的哦。   

相对路径与绝对路径

  举个栗子:  我在根目录下见了一个文件夹test,我又在test里建了一个文件夹test1,在test1里建了个test2,然后进入test1

sudo mkdir -p test/test1/test2
cd test/test1

  这时,我如果想进入test2就可以用指令cd test2,因为test2在test1里,而我们处于test1,这就叫相对路径.
  如果我们又想回到test,可以输入cd ../../,因为test是test2上层的上层。但是如果下面还有test3,test4,想回到test,那么输入的就太多啦,此时我们可以使用绝对路径,就是cd /test

  所以在linux中绝对路径的最前面要带一个"/",而相对路径的前面不带“/”。

END