鸟哥的Linux基础篇整理---1

1、在 Linux 这个系统当中,几乎所有的硬件装置文件都在/dev 这个目录下。

2、几个重要的存储文件
      1)、 /etc/passwad :所有的系统上的账号与一般身份使用者,还有那个 root 的相 关信息
   
   
  1. root:x:0:0:root:/root:/bin/bash
  2. daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
  3. bin:x:2:2:bin:/bin:/usr/sbin/nologin
  4. sys:x:3:3:sys:/dev:/usr/sbin/nologin
  5. sync:x:4:65534:sync:/bin:/bin/sync
  6. ......
       passwd文件由许多条记录组成,每条记录占一行,记录了一个用户帐号的所有信息。 每条记录由7个字段组
成,字段间用冒号“:”隔开,其格式如下:
      username:password:User ID:Group ID:comment:home directory:shell
      值得一提的  password 该帐号的密码是经过加密处理的。daemon、bin等,这些帐号有着特殊的用途,一般用
于进行系统管理。这些帐号的口令大部分用(x)号表示,代表它们不能在登录时使用。
      2)、/etc/shadow:存放账户的真是密码,只有root用户才能看
   
   
  1. whoopsie:*:16365:0:99999:7:::
  2. avahi:*:16365:0:99999:7:::
  3. lightdm:*:16365:0:99999:7:::
  4. pulse:*:16365:0:99999:7:::
  5. colord:*:16365:0:99999:7:::
  6. hplip:*:16365:0:99999:7:::
  7. joey:$6$enM1lo0k$xWyqfa5UhlDMQuaANeeiBUS.d0cqheaK0UOd4d4Iz1sEgPQr86QIc9QrHuMXBMS8rV
  8. pz/zQTGgQSrpvc6SNOt/:17261:0:99999:7:::
         可以看到都是经过加密的。它的每个条目有7个域,分别是名字:密码:用户id:组id:用户信息:主目
录:shell 
        3)、/etc/group:用户组的配置文件,内容包括用户和用户组,并且能显示出用户是归属哪个用户组或哪
几个用户组,因为一个用户可以归属一个或多个不同的用户组。
   
   
  1. root:x:0:
  2. bluetooth:x:121:
  3. pulse:x:122:
  4. pulse-access:x:123:
  5. colord:x:124:
  6. joey:x:1000:
  7. sambashare:x:125:joey
         格式: group_name:passwd:GID:user_list.
         passwd密码也是加密的;
         user_list  每个用户之间用,号分割;本字段可以为空;如果字段为空表示用户组为GID的用户名;
         新增加一个用户并将其列入一个已有的用户组中需要用到 useradd 命令。如果还没有这个用户组,可以先创建该用户组  useradd -G {group-name} username
   
   
  1. root@Joey:/etc# cat group | grep "joey"
  2. joey:x:1000:zhaoyuan
  3. root@Joey:/etc# useradd -G joey liuyu
  4. root@Joey:/etc# cat group | grep "joey"
  5. joey:x:1000:zhaoyuan,liuyu

3、切换用户的命令
      su/su -  用户名。 需要密码的输入密码即可。如果超级权限用户root向普通或虚拟用户切换不需要密码.
    
    
  1. root@Joey:/etc# su joey
  2. joey@Joey:/etc$ su sambashare
  3. No passwd entry for user 'sambashare'
  4. joey@Joey:/etc$ su
  5. Password:
  6. root@Joey:/etc#
    
    
  1. root@Joey:/etc# su - joey
  2. joey@Joey:~$
         su命令和su -命令最大的本质区别就是:前者只是切换了root身份,但Shell环境仍然是普通用户的Shell;
而后者连用户和Shell环境一起切换成root身份了。只有切换了Shell环境才不会出现PATH环境变量错误
        sudo 表示获取临时的root权限命令,命令执行完成后,直接退回到当前用户。

4、Linux中各个类型的文件的详解。
   
   
  1. -rw-r--r-- 1 xp022430 domain_users 16246 May 15 10:32 AndroidManifest.xml
  2. -rw-r--r-- 1 xp022430 domain_users 1010 May 12 15:27 Android.mk
  3. drwxr-xr-x 2 xp022430 domain_users 4096 May 12 15:27 assets
  4. /dev下面的
  5. crw------- 1 root root 10, 234 May 18 16:50 btrfs-control
  6. drwxr-xr-x 3 root root 60 May 18 16:50 bus
  7. lrwxrwxrwx 1 root root 3 May 18 16:50 cdrom -> sr0
  8. brw-rw---- 1 root disk 7, 0 May 18 16:50 loop0
  9. brw-rw---- 1 root disk 7, 1 May 18 16:50 loop1
        第一 栏
              当是[ d ]则是目录。
              当是[ - ]则是文件。
              当是[ l ]则表示为连结档(link file),类似 Windows 系统底下的快捷方式啦
              当是[ b ]则表示为装置文件里面的可供储存的接口设备(可随机存取装置); 区块(block)设备档,就是一些
                            储存数据, 以提供系统随机存取的接口设备
              当是[ c ]则表示为装置文件里面的串行端口设备,如键盘、鼠标等 字符(character)设备文件。 这些设备
                           的特色就是『一次性读取』的,不能够截断输出。 举例来说,你不可能让鼠标跳到 另一个画面。
               当是[ s ]则表示为资料接口文件(sockets)。 最常在/run 或/tmp 这些个目录中看到这种文件类型了。
              当是[ p ]则表示为数据输送文件(FIFO, pipe): FIFO 也是一种特殊的文件类型,他主要的目的在解决多个
                           程序同时存取一个文件所造成的错误问题。 FIFO 是 first-in-first-out 的缩写。

      第二栏:
              表示有多少档名连结到此节点(i-node): 每个文件都会将他的权限与属性记录到文件系统的 i-node 中,
       不过,我们使用的目录树却是使用文件 名来记录, 因此每个档名就会连结到一个 i-node 啰!这个属性记录的,
      就是有多少不同的档名连结 到相同的一个 i-node 号码去就是了。
 
      第三栏: 表示这个文件(或目录)的拥有者账号。

     第四栏:  表示这个文件的所属群组

     第五栏:为这个文件的容量大小,默认单位为 bytes;

     第六栏:为这个文件的建档日期或者是最近的修改日期:

     第七栏:为这个文件的档名, 这个字段就是档名了。比较特殊的是:如果档名之前多一个『 . 』,则代表这个
                    文件为『隐藏档』。
5、文件和目录的权限的含义。
      目录与文件的权限意义并不相同,这是因为目录与文件所记录的数据内容不相同所致。(按照Linux里面都因
该说是文件,目录是目录类型的文件)。
      1)、对于文件里面存储的是数据所以:
                 r: 代表当前文件可以被读
                w:代表当前文件可以被修改,一定要注意它控制不了这个文件是否能被删除。  还有个问题,你想修
                      改,必须有r不然丫的根本打不开!
                x:代表当前文件可以被执行,就是运行。在windows下通过后缀.exe等来判断的这个是通过权限。
       2)、存放的文件或者目录名列表结构。
                r:代表可以读去当前目录下都有哪些内容,就是 ls可以显示。
                如下没有可读权限的时候, 可以看到什么也不显示了。
    
    
  1. d--x--x--x 2 xp022430 domain_users 4096 May 26 15:10 TestMode
  2. cnbjlx24729:/media/$ cd TestMode/
  3. cnbjlx24729:/media/TestMode$ ls
  4. ls: cannot open directory .: Permission denied
                 w:代表可以去修改当前目录下的文件结构,如:新建文件/目录、删除文件/目录(和文件本身的权限
                        无关)、重命名等等
    
    
  1. dr-xr-xr-x 2 xp022430 domain_users 4096 May 26 15:10 TestMode
  2. cnbjlx24729:/media/TestMode$ rm TestFile.txt
  3. rm: cannot remove TestFile.txt’: Permission denied
                  即使文件本身就有w权限
    
    
  1. cnbjlx24729:/media/TestMode$ ls -l
  2. -rwxrwxrwx 1 xp022430 domain_users 19 May 26 15:10 TestFile.txt
  3. cnbjlx24729:/media/TestMode$ rm TestFile.txt
  4. rm: cannot remove TestFile.txt’: Permission denied
                   x:代表的是用户能否进入该目录成为工作目录,说白了就是能不能进去这个文件。
    
    
  1. dr--r--r-- 2 xp022430 domain_users 4096 May 26 15:10 TestMode
  2. drwxr-xr-x 3 xp022430 domain_users 4096 May 12 15:27 tests
  3. cnbjlx24729:/media/$ cd TestMode/
  4. bash: cd: TestMode/: Permission denied
          注意root用户其实是不受任何权限影响的即使比如root是所有者,你把所有者的权限也改为不可r,不起作
用的。
          综上:要开放目录给任何人浏览时,应该至少也要给予 r 及 x 的权限,但 w 权限不可随便给!因为这样它就
可以删除你的文件了,即使不能修改文件内部的内容。

6、修改群组、所有者、权限。
       1)、chgrp :改变文件所属群组,注意只有root用户才可以使用
              格式:chgrp  (-R)  groupname filename       -R递归
    
    
  1. root@Joey:/home/joey/Desktop# ls -l
  2. drwxrwxr-x 2 joey joey 4096 5 31 21:47 Test.txt
    
    
  1. root@Joey:/home/joey/Desktop# chgrp zhaoyuan haha.txt
  2. root@Joey:/home/joey/Desktop# ls -l
  3. -rw-rw-r-- 1 joey zhaoyuan 7 5 31 21:53 haha.txt
        2)、 chown :改变文件拥有者,也是root用户才可以哦。
               chown [-R]   用户名称:[组名]    文件   组名字可以省略。
    
    
  1. root@Joey:/home/joey/Desktop# ls -l
  2. -rw-rw-r-- 1 joey zhaoyuan 7 5 31 21:53 haha.txt
  3. root@Joey:/home/joey/Desktop# chown zhaoyuan haha.txt
  4. root@Joey:/home/joey/Desktop# ls -l
  5. -rw-rw-r-- 1 zhaoyuan zhaoyuan 7 5 31 21:53 haha.txt
         3)、chmod :改变文件的权限, SUID, SGID, SBIT 等等的特性,root用户使用。
                chmod两种方式:(此处不介绍文件的权限描述位)
                    a、数字:
                          r  w  x 分别对应 4 2 1 ,也好记就是111二进制这种形式换算出来的数。
                          例子:chmod 754(权限) filename
                    b、字母:
                          u-----user, g-----group, o-----others,a------all。
                          +、-、=:分别对应宇添加、去掉某某权限。
                          例子:chmod u+x haha.txt  为文件所有者添加x权限
   
   
  1. root@Joey:/home/joey/Desktop# ls -l
  2. -rw-rw-r-- 1 zhaoyuan zhaoyuan 7 5 31 21:53 haha.txt
  3. root@Joey:/home/joey/Desktop# chmod u+x haha.txt
  4. root@Joey:/home/joey/Desktop# ls -l
  5. -rwxrw-r-- 1 zhaoyuan zhaoyuan 7 5 31 21:53 haha.txt
    
    
  1. root@Joey:/home/joey/Desktop# chmod a+x haha.txt
  2. root@Joey:/home/joey/Desktop# ls -l
  3. -rwxrwxr-x 1 zhaoyuan zhaoyuan 7 5 31 21:53 haha.txt

7、Linux中的文件后缀。
      基本上,Linux 的文件是没有所谓的扩展名的,我们刚刚就谈过,一个 Linux 文件能不能被执行, 与他的第一栏的
十个属性有关, 与文件名根本一点关系也没有。
      还有就算具有x可执行权限,但也不一定能执行,具有『可执行的权限』以及『具有可执行的程序代码』是
两回事!这个 x 代表这个文件具有可执行的能力, 但是 能不能执行成功,当然就得要看该文件的内容。
      Linux 系统上的文件名真的只是让你了解该文件可能的用途而已, 真正的执行与否仍然需 要权限的规范才行!
     *.sh : 脚本或批处理文件 (scripts),因为批处理文件为使用 shell 写成的,所以扩展名就编成 .sh 啰;
     *Z, *.tar, *.tar.gz, *.zip, *.tgz: 经过打包的压缩文件。这是因为压缩软件分别为 gunzip, tar 等等的,由于不
                                                       同的压缩软件,而取其相关的扩展名
     *.html, *.php:网页相关文件,分别代表 HTML 语法与 PHP 语法的网页文件。

8、Linux命令小发现。
      发现好多Linux命令都是     命令   来源处  目的地。
       如:cp   来源文件 目标文件。
      还有一个小技巧。当一个命令你不知道格式和参数的时候后  命令 --help。
      如:ls --help

9、Linux系统的目录配置。
     Filesystem Hierarchy Standard (FHS)标准 FHS 的重点在于规范每个特定的目录下应该要放置什么样子的数
而已。 这样做好处非常多,因为 Linux 操作系统就能够在既有的面貌下(目录架构不变)发展出开发者 想要的独
特风格。
      FHS 所定义的三层主目录为:/, /var, /usr 三层而已。注意 usr是 Unix Software Resource 的缩写, 也就是
『Unix 操 作系统软件资源』所放置的目录,而不是users。
      常见的系统目录。
      /etc/, /boot, /usr/bin, /bin, /usr/sbin, /sbin, /dev, /var/log, /run
     /etc/:几乎系统的所有配置文件案均在此,尤其 passwd,shadow
     /boot:开机配置文件,也是预设摆放核心 vmlinuz 的地方
     /usr/bin, /bin:一般执行档摆放的地方
     /usr/sbin, /sbin:系统管理员常用指令集
     /dev:摆放所有系统装置文件的目录
     /var/log:摆放系统注册表文件的地方
     
 10、特殊的几个符号代表的路径。
         / 代表根目录
         . 代表此层目录
         .. 代表上一层目录
         - 代表前一个工作目录 (上一个工作目录和上层目录是有区别的,如下)
   
   
  1. cnbjlx24729:/media/xp022430/source/projects/pre-o-yoshino2$ cd frameworks/base/core/
  2. cnbjlx24729:/media/xp022430/source/projects/pre-o-yoshino2/frameworks/base/core$ cd -
  3. /media/xp022430/source/projects/pre-o-yoshino2
  4. cnbjlx24729:/media/xp022430/source/projects/pre-o-yoshino2$
  5. 就到了你上次所在的目录
  6. 再比如:你好可以实现往前跳。
  7. cnbjlx24729:~$ cd -
  8. /media/xp022430/source/projects/pre-o-yoshino2/frameworks/base
  9. cnbjlx24729:/media/xp022430/source/projects/pre-o-yoshino2/frameworks/base
          ~ 代表『目前用户身份』所在的家目录
          ~account 代表 account 这个用户的家目录(account 是个账号名称)
          根目录的当前目录和上层目录是一样的
   
   
  1. xp022430@cnbjlx24729:/$ ls -la
  2. total 116
  3. drwxr-xr-x 26 root root 4096 May 17 07:57 .
  4. drwxr-xr-x 26 root root 4096 May 17 07:57 ..
  5. drwxr-xr-x 2 root root 4096 May 18 07:56 bin
  6. 可以看到权限属性一模一样,它们其实是指向一块的。
          一个查看路径的命令   pwd:显示当前目录 显示的绝对路径。
         pwd [-P]  -P:显示出确实的路径,而非使用链接 (link) 路径。有时候是连接指向的,就直接把链接指向的那
                              个实际的地址显示。
   
   
  1. root@Joey:/home/joey/Desktop# pwd
  2. /home/joey/Desktop
        如果仅输入 cd 时,代表的就 是『 cd ~ 』的意思~ 亦即是会回到自己的家目录。

11、几个常用的命令的缩写。
   
   
  1. ls list
  2. pwd print working directory
  3. cd change directory
  4. chgrp change group
  5. chown change owner
  6. chmod change mode
  7. cp copy
  8. mv move
  9. rm remove

12、mkdir、cp
       mkdir (make directory) 创建新的目录.目录得一层一层的建立才行。 但是可通过添加参数-p(感觉应该是
patch的缩写吧)慎用,不然万一拼写错误,很乱。参数 -m 来强制给予一 个新的目录相关的权限, 例如上表当中,
我们给予 -m 711 来给予新的目录 drwx--x--x 的权限。
     
     
  1. cnbjlx24729:/media/packages/apps/Nfc/TestMode$ mkdir home/bird/testing
  2. mkdir: cannot create directory home/bird/testing’: No such file or directory
  3. cnbjlx24729:/media/packages/apps/Nfc/TestMode$ mkdir -p home/bird/testing
  4. cnbjlx24729:/media/packages/apps/Nfc/TestMode$ ls -l
  5. drwxr-xr-x 3 xp022430 domain_users 4096 May 27 09:57 home
  6. cnbjlx24729:/media/packages/apps/Nfc/TestMode$ cd home/bird/testing/
         要复制文件,请使用 cp (copy) (该文件你必须要有 read 的权限才行啊!)
         格式:cp [-adfilprsu] 来源文件(source) 目标文件(destination)。
         此时你可以写全路径,如 :cp TestMode/TestFile.txt Testelse/haha.txt 这样就会完成复制和改名,
         如果你: cp TestMode/TestFile.txt Testelse/ 那么就会用以前的名字。
         复制文件的时候主要考虑如下:
                 1)、是否需要完整的保留来源文件的信息?
                 2)、 来源文件是否为连结档 (symbolic link file)?
                 3)、来源档是否为特殊的文件,例如 FIFO, socket 等?
                 4)、来源文件是否为目录?
          对应不同参数,到时候自己选!
常用参数:
       
       
  1. -r :递归持续复制,用于目录的复制行为;(常用)
  2. -s :复制成为符号链接文件 (symbolic link),亦即『快捷方式』文件;
  3. -p :连同文件的属性(权限、用户、时间)一起复制过去,而非使用默认属性(备份常用);
  4. -i :若目标文件(destination)已经存在时,在覆盖时会先询问动作的进行(常用);
  5. -a :相当于 -dr --preserve=all 的意思,至于 dr 请参考下列说明;(常用) ,感觉比-p好用点,-a会递归!
  6. -u :destination source 旧才更新 destination,或 destination 不存在的情况下才复制。
          默认的赋值权限、文件所有者、群组等等都会变的。
       
       
  1. cnbjlx24729:/media/packages/apps/Nfc/TestMode$ ls -l
  2. total 8
  3. drwxr-xr-x 3 xp022430 domain_users 4096 May 27 09:57 home
  4. -rwxrwxrwx 1 xp022430 domain_users 19 May 26 15:10 TestFile.txt (注意初始权限)
  5. cnbjlx24729:/media/packages/apps/Nfc/TestMode$ cp TestFile.txt ../
  6. (复制当前目录下的TestFile文件到上一个目录,注意..的运用)
  7. cnbjlx24729:/media/packages/apps/Nfc/TestMode$ cd ..
  8. cnbjlx24729:/media/packages/apps/Nfc$ ls -l
  9. (可以看到默认的权限修改时间已经改变)
  10. -rwxr-xr-x 1 xp022430 domain_users 19 May 27 11:13 TestFile.txt
          使用-p的参数
       
       
  1. cnbjlx24729:/media/packages/apps/Nfc/TestMode$ cp -p TestFile.txt ../
  2. cnbjlx24729:/media/packages/apps/Nfc/TestMode$ cd ..
  3. cnbjlx24729:/media/packages/apps/Nfc$ ls -l
  4. -rwxrwxrwx 1 xp022430 domain_users 19 May 26 15:10 TestFile.txt
          使用-a 会递归的把入目下的所有的都复制过去,并且保留全部的属性和时间
       
       
  1. cnbjlx24729:/media/packages/apps/Nfc$ cp -a TestMode/ Testelse/
  2. cnbjlx24729:/media/packages/apps/Nfc$ ls -l
  3. drwxr-xr-x 3 xp022430 domain_users 4096 May 27 11:28 Testelse
  4. drwxrwxrwx 4 xp022430 domain_users 4096 May 27 11:27 TestMode
  5. cnbjlx24729:/media/packages/apps/Nfc$ cd Testelse/
  6. cnbjlx24729:/media/packages/apps/Nfc/Testelse$ ls -l
  7. total 4
  8. drwxrwxrwx 4 xp022430 domain_users 4096 May 27 11:27 TestMode
  9. cnbjlx24729:/media/packages/apps/Nfc/Testelse$ cd TestMode/
  10. cnbjlx24729:/media/packages/apps/Nfc/Testelse/TestMode$ ls -l
  11. total 12
  12. drwxr-xr-x 3 xp022430 domain_users 4096 May 27 09:57 home
  13. -rwxrwxrwx 1 xp022430 domain_users 19 May 26 15:10 TestFile.txt
  14. drwxrwxrwx 3 xp022430 domain_users 4096 May 27 09:57 TestMode
         至于移动目录与文件,重命名,则使用 mv (move)。
         至于移除吗?那就是 rm (remove)
         rm [-fir] 文件或目录
            选项与参数:
           下面这三个很常用啊!
     
     
  1. -f :就是 force 的意思,忽略不存在的文件,不会出现警告讯息;
  2. -i :互动模式,在删除前会询问使用者是否动作
  3. -r :递归删除啊!最常用在目录的删除了!这是非常危险的选项!!!

13、对PATH变量的理解( PATH 还是有点理解不到,应该是操作系统这块的概念)
        PATH的值是一系列目录,当你运行一个程序时,Shell脚本在这些目录下进行搜寻。
        格式:PATH=$PATH:<PATH1>:<PATH2>:<PATH3>:------:<PATHN>
        执行文件路径的变量: $PATH
        比如我们在任何地方使用ls,但其实那ls是在/bin/ls 目录下的, 我们把/bin配置到PATH当中就可以在任何
地方执行了!
        查看PATH变量的值的命令: echo $PATH
     
     
  1. root@Joey:/home/joey/Desktop# echo $PATH
  2. /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
          由一堆目录所组成的,每个目录中间用冒号(:)来隔开,有顺序之分,有多个的时候先查询到的就先执行。
          添加patch, 添加到路径PATH="${PATH}:/test"   “/test”是要添加的路径。此时是根目录下的test
     
     
  1. root@Joey:/home/joey/Desktop# PATH="${PATH}:/test"
  2. root@Joey:/home/joey/Desktop# echo $PATH
  3. /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/test
         为什么 ${PATH} 搜寻的目录不加入本目录(.)?
         为了安全起见,不建议将『.』加入 PATH 的搜寻目录中。 比如我在当前目录,写了一个ls的程序, 一旦你
使用的时候,优先用到了我的,我在这个ls中加入窃取用户数据的程序!那么可想而知很恐怖!
 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值