Linx学习笔记1 入门命令

本博客参考http://www.92csz.com/study/linux/6.htm

环境:VM 10.0.3 , CENTOS6.5

CENTOS6.5安装默认进入图形界面,进入命令模式,按CTRL+ALT+F2~F6,进入图形界面CTRL+ALT+F1,可以自由在图形界面和命令模式切换,需要注意的是在命令界面,鼠标时禁用的,当使用虚拟机,需要切换,按CTRL+ALT激活鼠标。

命令模式下关机,user模式没权限关机,如果ROOT没有密码,输入su,输入user密码,再输入shutdown -h now

ls [dir]  查看当前目录列表。dir为目录

cd [dir] 指向目录为当前目录

man [cmd] 查看命令帮助。cmd为命令。查看完毕输入q退出

which [cmd] 查找命令的绝对路径

mkdir -p [path]创建目录。-p表示可以跨级创建。

rm -rf [path/file] 删除一个目录或文件

touch [file] 读一个文件,如果没有,创建它

cp -dr  [src] [des] copy文件。-d表示只拷贝快捷方式,-r表示可以拷贝目录, des可以是目标目录,也可以是目标目录/重命名后的来源文件。-i覆盖确认,-u新覆盖旧,否则不拷贝

mv   参考copy。如果des存在,则src放到des里面去,如果不存在,则src移动到des的父目录,并重命名为des。

echo $PATH 查看环境变量,注意是大写

echo [text] >[file] 文件内写入数据

echo [text] >>[file] 文件内追加数据,换行了

cat -na [file]打印文件内容到屏幕,-n讲显示行号,-a表示显示全部内容,包括特殊字符

tac  反向打印,参考cat

more                  也是用来查看一个文件的内容当文件内容太多,一屏幕不能占下,而你用cat肯定是看不前面的内容的,那么使用more就可以解决这个问题了当看完一屏后按空格键继续看下一屏但看完所有内容后就会退出如果你想提前退出,只需按q键即可

less                     作用跟more一样,但比more好在可以上翻,下翻空格键同样可以翻页,而按”j”键可以向下移动(按一下就向下移动一行),按”k”键向上移动在使用moreless查看某个文件时,你可以按一下”/” 键,然后输入一个word回车,这样就可以查找这个word如果是多个该word可以按”n”键显示下一个另外你也可以不按”/”而是按”?”后边同样跟word来搜索这个word,唯一不同的是,”/”是在当前行向下搜索,而”?”是在当前行向上搜索

head head后直接跟文件名,则显示文件的前十行如果加 –n 选项则显示文件前n

tail head一样,后面直接跟文件名,则显示文件最后十行如果加-n 选项则显示文件最后n

PATH="$PATH": [path] 设置环境变量,path为路径,如/root


文件的所属主以及所属组

一个linux目录或者文件,都会有一个所属主和所属组所属主,即文件的拥有者,而所属组,即该文件所属主所在的一个组。Linux这样设置文件属性的目的是为了文件的安全例如,test文件的所属主是user0 test1文件的所属主是user1,那么user1是不能查看test文件的,相应的user0也不能查看test1文件然后有这样一个应用,我想创建一个文件同时让user0user1来查看怎么办呢?

这时所属组就派上用场了即,创建一个群组users,让user0user1同属于users组,然后建立一个文件test2,且其所属组为users,那么user0user1都可以访问test2文件

Linux文件属性不仅规定了所属主和所属组,还规定了所属主(user所属组(group)以及其他用户(others)对该文件的权限你可以通过ls -l 来查看这些属性

[image]

【linux文件属性

上例中,用ls –l 查看当前目录下的文件时,共显示了9列内容(用空格划分列),都代表了什么含义呢?

1列,包含的东西有该文件类型和所属主所属组以及其他用户对该文件的权限第一列共10其中第一位用来描述该文件的类型上例中,我们看到的类型有”d”, “-“ ,其实除了这两种外还有”l”, “b”, “c”,”s”

表示该文件为目录;

表示该文件为普通文件;

表示该文件为连接文件(linux file),上边提到的软连接即为该类型;

[image]

表示该文件为块设备文件,比如磁盘分区

[image]

表示该文件为串行端口设备,例如键盘鼠标

表示该文件为套接字文件(socket),用于进程间通信

后边的9位,每三个为一组均为rwx 三个参数的组合其中代表可读,w代表可写,x代表可执行前三位为所属主(user)的权限,中间三位为所属组(group)的权限,最后三位为其他非本群组(others)的权限下面拿一个具体的例子来述说一下

一个文件的属性为-rwxr-xr-- ,它代表的意思是,该文件为普通文件,文件拥有者可读可写可执行,文件所属组对其可读不可写可执行,其他用户对其只可读

对于一个目录来讲,打开这个目录即为执行这个目录,所以任何一个目录必须要有x权限才能打开并查看该目录例如一个目录的属性为 drwxr--r-- 其所属主为root,那么除了root外的其他用户是不能打开这个目录的

2列,表示为连接占用的节点(inode),若为目录时,通常与该目录地下还有多少目录有关系,关于连接(link)在以后章节详细介绍

3列,表示该文件的所属主

4列,表示该文件的所属组

5列,表示该文件的大小

67列和第8列为该文件的创建日期或者最近的修改日期,分别为月份日期以及时间

9列,文件名如果前面有一个则表示该文件为隐藏文件

更改文件的权限

更改文件的权限,也就是更改所属主所属组以及他们对应的读写执行权限

1更改所属组 chgrp

语法:chgrp [组名] [文件名]

 

[image]

这里用到了groupadd 命令,其含义即增加一个用户组该命令在以后章节中做详细介绍,你只要知道它是用来增加用户组的即可

2更改文件的所属主 chown

语法:chown [ -R ] 账户名 文件名

chown [ -R ] 账户名:组名 文件名

这里的-R选项只作用于目录,作用是级联更改,即不仅更改当前目录,连目录里的目录或者文件全部更改

[image]

useradd 是增加一个账户,以后会详细介绍上例中,首先建立一个目录test,然后在test目录下创建一个普通文件test2,因为是以root的身份创建的目录和文件,所以所属主以及所属组都是root。chown user1 test 这使test的目录所属主由root变为了user1 ,然后test目录下的test2文件所属主以及所属组还是root。接着 chown –R user1:testgroup test 这样把test连同test目录下的test2 的所属主以及所属组都改变了

3改变用户对文件的读写执行权限 chmod

linux中为了方便更改这些权限,linux使用数字去代替rwx ,具体规则为r: 4 w:2 x:1 -:0 举个例子,-rwxrwx---用数字表示就是 770,具体是这样来的:

rwx = 4+2+1=7; rwx= 4+2+1=7; --- = 0+0+0=0

chmod 语法: chmod [-R] xyz 文件名 (这里的xyz,表示数字)

-R 选项作用同chown,级联更改

值得提一下的是,在linux系统中,默认一个目录的权限为 755,而一个文件的默认权限为644.

[image]

如果你创建了一个目录,而该目录不想让其他人看到内容,则只需设置成 rwxr----- (740) 即可

chmod 还支持使用rwx的方式来设置权限!从之前的介绍中我们可以发现,基本上就九个属性分别是(1)user (2)group (3)others 三群啦!那么我们就可以藉由 u, g, o 来代表三群的属性!此外, a 则代表 all 亦即全部的三群!那么读写的属性就可以写成了 r, w, x!也就是可以使用底下的方式来看:

[image]

现在我想把一个文件设置成这样的权限 rwxr-xr-x (755),使用这种方式改变权限的命令为

[image]

另外还可以针对u, g, o, a增加或者减少某个权限(读,写,执行),例如

[image]

另外linux下还有两个比较特殊的权限s和t,请点击linux下文件的特殊权限s和t

umask

上边也提到了默认情况下,目录权限值为766,普通文件权限值为644。那么这个值是由谁规定呢?追究其原因就涉及到了umask。

umask语法: umask xxx (这里的xxx代表三个数字)

查看umask值只要输入umask然后回车。 umask预设是0022,其代表什么含义?先看一下下面的规则:

1)若用户建立为普通文件,则预设没有可执行权限,只有rw两个权限最大为666-rw-rw-rw-

2)若用户建立为目录,则预设所有权限均开放,即777drwxrwxrwx

umask数值代表的含义为,上边两条规则中的默认值(文件为666,目录为777)需要减掉的权限所以目录的权限为(rwxrwxrwx) – (----w--w-) = (rwxr-xr-x),普通文件的权限为(rw-rw-rw-) – (----w--w-) = (rw-r--r--)。umask的值是可以自定义的,比如设定umask  002,你再创建目录或者文件时,默认权限分别为(rwxrwxrwx) – (-------w-) = (rwxrwxr-x)(rw-rw-rw-) – (-------w-) = (rw-rw-r--)。

[image]

umask 可以在/etc/bashrc里面更改,预设情况下,rootumask022,而一般使用者则为002,因为可写的权限非常重要,因此预设会去掉写权限

chattr 修改文件的特殊属性

语法: chattr [+-=][ASaci [文件或者目录名]

+-= :分别为增加减少设定

A:增加该属性后,文件或目录的atime将不可被修改;

S:增加该属性后,会将数据同步写入磁盘中;

a:增加该属性后,只能追加不能删除,非root用户不能设定该属性;

c:自动压缩该文件,读取时会自动解压;

i:增加后,使文件不能被删除重命名设定连接写入新增数据;

[image]

增加i属性后不能在该目录中建立文件

[image]

增加a属性后,只能追加不能删除

lsattr 列出文件/目录的特殊属性

语法: lsattr [-aR] [文件/目录名]

-a:类似与ls -a 选项,即连同隐藏文件一同列出;

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

[image]

在上例中,test4是在test3目录增加a属性后建立的,所以test4也有a属性,通过这个例子可以看出,chattr 的属性是级联生效的,不仅对当前目录生效而且会对目录下的文件同样生效

linux下搜索一个文件

windows下有一个搜索工具,可以让我们很快的找到一个文件,这是很有用的然而在linux下搜索功能更加强大

which 用来查找可执行文件的绝对路径

在前面章节中已经多次用到该命令,需要注意的一点是,which只能用来查找PATH环境变量中出现的路径下的可执行文件这个命令用的也是蛮多的,有时候我们不知道某个命令的绝对路径,which一下很容易就知道了

[image]

当查找的文件在PATH变量中并没有时,就会报错

whereis 通过预先生成的一个文件列表库去查找跟给出的文件名相关的文件

语法: whereis [-bmsu] [文件名称]

-b:只找binary 文件

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

-s:只找source来源文件

-u:没有说明档的文件

[image]

说明:whereis 笔者几乎很少用到,如果你感兴趣请深入研究

locate 类似于whereis,也是通过查找预先生成的文件列表库来告诉用户要查找的文件在哪里后边直接跟文件名如果你的linux没有这个命令,请安装软件包 mlocate ,这个软件包在你的系统安装盘里,后缀名是RPM,随后介绍的find命令会告诉你如何查找这个包如果你装的CentOS你可以使用这个命令来安装 yum install –y mlocate 。 前提是你的CentOS能连互联网至于yum这个命令如何使用,到后续章节你自然会明白如果你刚装上这个命令,初次使用会报错

[image]

这是因为系统还没有生成那个文件列表库你可以使用updatedb 命令立即生成(更新)这个库如果你的服务器上正跑着重要的业务,那么你最好不要去运行这个命令,因为一旦运行,服务器的压力会变大这个数据库默认情况下每周更新一次所以你用locate命令去搜索一个文件,正好是在两次更新时间段内,那你肯定是得不到结果的你可以到/etc/updated.conf 去配置这个数据库生成(更新)的规则。locate命令笔者用的也并不多,所以你只要明白有这么一个东西即可你用到时再去深究其用法吧

find 这个搜索工具是笔者用的最多的一个,所以请你务必要熟悉它

语法: find [路径] [参数下面介绍几个笔者经常用的参数

-atime +n :访问或执行时间大于n天的文件

-ctime +n :写入更改inode属性(例如更改所有者权限或者连接)时间大于n天的文件

-mtime +n :写入时间大于n天的文件

看到这里,你对这三个time是不是有些晕了,那笔者就先给你介绍一下这三个time属性

文件的 Access timeatime 是在读取文件或者执行文件时更改的文件的 Modified timemtime 是在写入文件时随文件内容的更改而更改的文件的 Create timectime 是在写入文件更改所有者权限或链接设置时随Inode 的内容更改而更改的。 因此,更改文件的内容即会更改 mtime  ctime,但是文件的 ctime 可能会在 mtime 未发生任何变化时更改,例如,更改了文件的权限,但是文件内容没有变化。 如何获得一个文件的atime mtime 以及ctime 

ls -l 命令可用来列出文件的 atime、ctime  mtime。

ls -lc filename         列出文件的 ctime

ls -lu filename         列出文件的 atime

ls -l filename          列出文件的 mtime    

atime不一定在访问文件之后被修改,因为:使用ext3文件系统的时候,如果在mount的时候使用了noatime参数那么就不会更新atime的信息而这是加了 noatime 取消了不代表真实情況反正這三個 time stamp都放在 inode  mtime, atime 修改inode 就一定會改既然 inode 改了 ctime 也就跟著要改了

继续讲find常用的参数

-name filename 直接查找该文件名的文件,这个使用最多了

[image]

-type type :通过文件类型查找文件类型在前面部分已经简单介绍过,相信你已经大体上了解了。type 包含了 f, b, c, d, l, s 等等后续的内容还会介绍文件类型的

[image]

【linux文件类型

在前面的内容中简单介绍了普通文件(-),目录(d)等,在linux文件系统中,主要有以下几种类型的文件

1)正规文件(regular file):就是一般类型的文件,当用ls –l 查看某个目录时,第一个属性为”-“的文件就是正规文件,或者叫普通文件正规文件又可分成纯文字文件(ascii)和二进制文件(binary纯文本文件是可以通过cat, more, less等工具直接查看内容的,而二进制文件并不能例如我们用的命令/bin/ls 这就是一个二进制文件

2)目录(directory):这个很容易理解,就是目录,跟windows下的文件夹一个意思,只不过在linux中我们不叫文件夹,而是叫做目录。ls –l 查看第一个属性为”d”。

3)连接档(link):ls –l 查看第一个属性为 “l”,类似windows下的快捷方式这种文件在linux中很常见,而且笔者在日常的系统运维工作中用的很多,所以你要特意留意一下这种类型的文件在后续章节笔者会介绍

4)设备档(device):与系统周边相关的一些档案,通常都集中在 /dev 这个目录之下!通常又分为两种:区块 (block) 设备档 :就是一些储存数据,以提供系统存取的接口设备,简单的说就是硬盘啦!例如你的一号硬盘的代码是 /dev/hda1 等等的档案啦!第一个属性为 “ b “;字符 (character) 设备档 :亦即是一些串行端口的接口设备,例如键盘鼠标等等!第一个属性为 “ c “。

* linux 文件后缀名

对于后缀名这个概念,相信你不陌生吧linux系统中,文件的后缀名并没有具体意义,也就是说,你加或者不加,都无所谓但是为了容易区分,linux爱好者们都习惯给文件加一个后缀名,这样当用户看到这个文件名时就会很快想到它到底是一个什么文件例如1.sh, 2.tar.gz, my.cnf, test.zip等等,如果你首次接触这些文件,你也许会感到很晕,没有关系,随着学习的深入,你就会逐渐的了解这些文件了笔者所列举的几个文件名中1.sh代表它是一个shell script 2.tar.gz 代表它是一个压缩包,my.cnf 代表它是一个配置文件,test.zip 代表它是一个压缩文件

另外需要你知道的是,早期Unix系统文件名最多允许14个字符,而新的Unix或者linux系统中,文件名最长可以到达 256 个字符!

【linux中的连接档

在讲连接档之前,需要你先理解inode的概念什么是inode呢?这就需要你知道磁盘的整体构造磁盘是有多个盘片(类似与光盘)重叠在一起构成的,而每个盘片上会有一个可以移动的磁头,这个磁头的作用就是用来读写数据的磁头并不是一直在动,当磁头固定时,盘片转一圈,这一圈就是一个磁道了很多个盘片同半径的那一圈的磁道总和称为磁柱而由圆心向外画出直线,可以得到一个个扇区,如图二所示,一个扇区的物理量大约是 512 bytes (  0.5K )。

[image]

图一

[image]

图二

知道了大体的硬盘构造之后,再来谈一谈怎么硬盘分割( partition )呢?我们在进行硬盘分割的时候,最小都是以磁柱为单位进行分割的,那么分割完成之后自然就是格式化( format )啰,在 Linux 里面我们在进行格式化的时候必须要考虑到 Block  inode 的信息,这个 block 还好理解,他是我们磁盘可以记录的最小单位,是由数个 sector 所组成的,所以他的大小通常为 n*512 bytes ,例如 4K 。那么 inode 是什么? Block 是记录档案内容数据的地区,而 inode 则是记录该档案的属性及该档案放置在哪一个 Block 之内的信息!所以,每个档案都会占用到至少一个 inode 。而当我们 Linux 系统要找到这个档案时,他会先去搜寻 inode table 找到这个档案的属性及数据放置的地区,然后再到数据去找到数据存放的 Block 进而将数据取出利用这个 inode 数目在一开始就会被设定好,他的设定方式通常是利用 ( 硬盘大小 / 一个容量 ),这个容量至少应该比 Block 要大一些较佳,例如刚刚的 Block 订为 4K ,那么 inode 可以订为 8K 左右所以,一颗 1GB 的硬盘,如果以 8K 来规划他的 inode 数时,他的 inode 就会有 131072  inode 啦!而一个 inode 的大小为 128 bytes 这么大!这么一来的话,我们就可以清楚的知道了,那就是一个 partition 格式化为一个 filesystem 之后,基本上,他一定会有 inode table  data area 两个区块,一个用来记录档案的信息与该档案放置的 block 区块,一个用来记录档案的内容!

由于我们 Linux 在读取数据的时候,是先查询 inode table 以得到数据是放在那个 Block 里面,然后再去该 Block 里面读取真正的数据内容!然后,那个 block 是我们在格式化硬盘的时候规定出来的一个值,这个 block是由 2  n 次方个sector 所集结而成的!所以,他是 0.5K 的倍数!假设我们 block 规划为 4KBytes 好了,那么由于一个 inode 与一个block 最多均只纪录一个档案,所以,如果你的一个档案有 0.1 K bytes 这么大时,你要晓得的是,由于你的 block  4K bytes ,因此,你就会有 3.9 Kbytes 的空间浪费掉!所以,当你在格式化硬盘的时候,请千万注意到你的系统未来的使用方向

【ln 建立连接档

前面提到过两次连接档的概念,现在终于该好好介绍下这部分内容了连接档分为两种,硬连接(hard link)和软连接(symbolic link

Hard Links 上面内容中说过,当系统要读取一个文件时,就会先去读inode table,然后再去根据inode中的信息到块区域去将数据取出来hard link 是直接再建立一个inode连接到文件放置的块区域也就是说,进行hard link的时候实际上该文件内容没有任何变化,只是增加了一个指到这个文件的inode,不过这样一来就会有个问题,因为增加的inode会连接到块区域,而目录本身仅仅消耗inode而已,那么hard link就不能连接目录了请你记住,hard link 有两个限制:不能跨文件系统,因为不通的文件系统有不同的inode table 2 不能连接目录

Symbolic Linkshard link不同,这个是建立一个独立的文件,而这个文件的作用是当读取这个连接文件时,它会把读取的行为转发到该文件所link的文件上这样讲,也许比较绕口,那么就来举一个例子现在有文件a,我们做了一个软连接文件b(只是一个连接文件,非常小),b指向了文件a。当读取b时,那么b就会把读取的动作转发到a上,这样就读取到了文件a。所以,当你删除文件a时,文件b并不会被删除,但是再读取b时,会提示无法打开文件而,当你删除b时,a是不会有任何影响的

看样子,似乎 hard link 比较安全,因为即使某一个 inode 被杀掉了,只要有任何一个 inode 存在,那么该文件就不会不见!不过,不幸的是,由于 Hard Link 的限制太多了,包括无法做目录的 link ,所以在用途上面是比较受限的!反而是 Symbolic Link 的使用方向较广!那么如何建立软连接和硬连接呢?这就用到了ln 命令

ln 语法: ln [-s] [来源文件] [目的文件]

ln 常用的选项就一个-s ,如果不加就是建立硬连接,加上就建立软连接

[image]

在建立硬连接前后,123目录所占空间大小并没有改变

[image]

当把源文件删除后,空间仍旧没有变化说明了删除一个文件其实只是删除了inode信息

[image]

不能创建目录的硬连接

[image]

建立软连接后,456目录增加了4k

[image]

删除源文件后会提示没有这个文件的错误

[image]

目录是可以软连接的

[image]

删除软连接对源文件没有任何影响


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值