鸟哥的Linux私房菜笔记(1.基础)

一.基本操作

  1.命令的构成

$ command [-option] parameter1 parameter2 ...

  说明:1.一行命令中第一个输入的部分绝对是“命令”,或“可执行文件”

     2.中括号[]并不存在于实际的命令中,而加入参数设置时,通常参数前会带 - 号。例如 -h;有时候会使用参数的完整全名,则参数前带有 -- 符号,例如,--help

     3.parameter1,parameter2...为依附在option后面的参数,或者是command的参数

     4.命令太长时,可以使用反斜杠()来转移[Enter]符号,使命令连续到下一行

  2.语言

  显式目前语言  

echo $LANG

  修改语言称为英文语系

LANG=en_US

  3.日期,日历,计算器

  显示日期的命令

date

  显示日历的命令

cal

  简单计算器

bc

  

  4.Linux系统的在线求助

  man page

man XXXX

  帮助文件就是放在/usr/share/doc这个目录下

  5.正确的关机方法

  看后台执行的程序命令

ps -aux

  看网络的联机状态

netstat -a

  看目前有谁在线

who

  数据同步写入磁盘

sync

  shutdown命令

$ /sbin/shutdown [-t 秒] [-arkhncfF] 时间 [警告信息]

  

  6.忘记密码

  修改密码命令

passwd

  

二.文件,目录与磁盘格式

  1.用户与用户组

  在Linux里面,任何一个文件都具有“User,Group及Others”三种身份的个别权限。而root能到达任何一个地方

  在Linux系统当中,默认的情况下所有的系统上的账号与一般身份用户,还有那个root相关信息,都是记录在/etc/passwd这个文件内至于个人的密码则是记录在/etc/shadow这个文件下。此外,Linux所有的组名都记录在/etc/group内

  2.Linux文件属性

root@johnny:~# ls -al
total 36
drwx------  6 root root 4096 Apr 20 11:10 .
drwxr-xr-x 25 root root 4096 Mar 27 17:57 ..
-rw-------  1 root root   11 Apr 20 11:10 .bash_history
-rw-r--r--  1 root root  570 Mar 19 02:19 .bashrc
drwx------  2 root root 4096 Mar 19 02:19 .cache
drwx------  3 root root 4096 Mar 19 02:30 .config
drwx------  3 root root 4096 Mar 21 10:58 .dbus
drwxr-xr-x  2 root root 4096 Mar 19 15:27 .nano
-rw-r--r--  1 root root  140 Mar 19 02:19 .profile

  第一列代表这个文件的类型和权限(permission)

  其*有10个字符

  1)第一个字符代表这个文件是“目录,文件或链接文件等”。

  a.若是[d]则是目录 

  b.若是[-]则是文件

  c.若是[l]则表示为连接文件(linkfile)

  d.若是[b]则表示设备文件里面的可供存储的接口设备。

  e.若是[c]则表示设备文件里面的串行端口设备,例如键盘,鼠标(一次性读取设备)。

  2)接下来的字符中,以3个为一组,且均为“rwx”的3个参数的组合。其中[r]代表可读(read),[w]代表可写(write),[x]代表可执行[execute]。要注意的是,这3个权限的位置不会改变,如果没有权限,就会出现减号[-]而已

  3)第一组为“文件所有者的权限”。第二组为“同用户组的权限”。第三组为“其他非本用户组的权限”

  第二列表示有多少文件名连接到此结点(i-node)

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

  第三列表示这个文件(或目录)的“所有者账号”

  

  第四列表示这个文件的所属用户组

  第五列为这个文件的容量大小,默认单位为B。

  第六列为这个文件的创建文件日期或者是最近的修改日期

  第七列为该文件名

  3.改变文件属性与权限

  1)改变所属用户组

root@johnny:~# chgrp -R users test.txt 

  选项与参数:-R:进行递归的持续更改,也即连同子目录下的所有文件,目录都更新称为这个用户组之意,常常用在更改某一目录所有的文件情况

  请记得,要被改变的组名必须要在/etc/group文件内存在才行,否则就会显示错误

  2)改变文件所有者

root@johnny:~# chown root:root test.txt 
root@johnny:~# ls -l
total 4
-rw-r--r-- 1 root root 21 Apr 20 11:53 test.txt

  要注意的是,用户必须是已经存在于系统中的账号,也就是在/etc/passwd这个文件中记录的用户名才能改变

  此外,它还可以顺便直接修改用户组的名称

  3)改变权限

  权限的设置方法有两种,分别可以使用数字或者是符号来进行权限的更改。

  a.数字类型改变文件权限

  Linux文件的基本权限就有9个,分别是owner,group,others三种身份各有自己的read,write,execute权限。

  其中,我们可以使用数字来代表各个权限,各权限的分数对照表如下:

r:4
w:2
x:1

  每种身份[owner,group,others]各自的三个权限[r,w,x]分数是需要累加的,例如,当权限为[-rwxrwx---],分数则是

  owner=rwx=4+2+1=7

  group=rwx=4+2+1=7

  others=---=0+0+0=0

  所以等一下我们设置权限的更改时,该文件的权限数字就是770

root@johnny:~# ls -l
total 4
-rw-r--r-- 1 root root 21 Apr 20 11:53 test.txt
root@johnny:~# chmod 777 test.txt 
root@johnny:~# ls -l
total 4
-rwxrwxrwx 1 root root 21 Apr 20 11:53 test.txt

  在实际的系统运作中最常发生的一个问题就是,常常我们以vim编辑一个shell文字批处理文件后,它的权限通常是"-rw-rw-r--",也就是664,如果要将该文件变成可执行文件,并且不要让其他人修改此文件的话,那么就得要“-rwxr-xr-x"这样的权限,此时就得要执行”chmod 755 test.sh"命令

  如果有些文件你不希望被其他人看到,那么应该将文件的权限设置为例如“-rwxr-----",那就执行"chmod 740 filename"

  b.符号类型改变文件权限

  通过u,g,o来代表三种身份的权限。此外a代表all,也即全部的身份。那么读写的权限就可以写成r,w,x

  假如我们要设置一个文件的权限成为"-rwxr-xr-x"时,

chmod u=rwx,go=rw filename

  如果我不知道原先的文件属性,而我只想要增加这个文件的每个人均可写入的权限,那么我就可以使用

chmod a+w filename

  而要去掉全部人的可执行权限,则

chmod a-x filename

  

  3.权限对目录的重要性

  目录主要的内容是记录文件名列表。

  a.r 表示具有读取目录结构的权限,表示你可以查询该目录下的文件名数据。

  

  b.w 它表示你具有更改该目录结构列表的权限,如下:

  1)新建新的文件与目录

  2)删除已经存在的文件与目录(不论该文件的权限为何)

  3)将已存在的文件或目录进行重命名

  4)转移该目录内的文件,目录位置

  

  c.x 目录的x代表的是用户能否进入该目录成为工作目录的用途,所谓的工作目录就是你当下的工作目录

  所以,要开放目录给任何人浏览时,应该至少也要给予r及x的权限,但w权限不可随便给

  4.Linux文件种类与扩展名

  文件种类:

  1)纯文本文件(ASCII)

  2)二进制文件(binary)

  3)数据格式文件(data):有些程序在运行的过程中会读取某些特定格式的文件,那些特定格式的文件可以被称为数据文件(data file)。会读出乱码

  

  目录(directory):第一个属性为[d]

  

  连接文件(link)

  就是类似Windows系统下面的快捷方式,第一个属性为[l],例如[lrwxrwxrwx]

  设备与设备文件(device)

  与系统外设及存储相关的一些文件,通常都集中于/dev这个目录。通常又分两种:

  块(block)设备文件:就是一些存储数据,以提供系统随机访问的接口设备,例如硬盘,软盘等。第一个属性为[b]

  字符(character)设备文件:也即是一些串行端口的接口设备,例如键盘,鼠标等。这些设备的特征就是“一次性读取”的,不能够截断输出。其第一个属性为[c]

  套接字(sockets):既然被称为数据接口文件,这种类型的文件通常被用在网络上的数据连接。我们可以启动一个程序来监听客户端的请求,而客户端就可以通过这个socket来进行数据的通信了。其第一个属性为[s]

  管道(FIFO,pipe)

  FIFO也是一种特殊的文件类型,它主要的目的在解决多个程序同时访问一个文件所造成的错误问题。FIFO是first-in-first-out的缩写。第一个属性为[p]

  Linux文件扩展名

  *.sh:脚本或批处理文件(scripts),因为批处理文件为使用shell写成的。

  *.Z,*.tar,*.tar.gz,*.zip,*.tgz:经过打包的压缩文件。

  在网络上下载了一个可执行文件,但是在你的Linux系统中无法运行,可能是文件的属性被改变了

  5.Linux目录配置

  FHS标准

  其主要目的是希望让用户可以了解到已安装软件通常放置于那个目录下。FHS的重点在于规范每个特定的目录下应该要放置什么样子的数据而已

  FHS依据文件系统使用的频繁与否与是否允许用户随意改动,而将目录定义成为四中交互作用的形态