首页 > 系统服务 > 详细

linux命令学习

时间:2019-03-22 21:55:15      阅读:130      评论:0      收藏:0      [点我收藏+]

-p 递归创建或删除文件  配合mkdir和rmdir使用

ls -a 显示所有文件 . ..

ls -lh 后面的h表明显示内存单位

    -a:显示所有文件;

    --color=when:支持颜色输出,when 的值默认是 always(总显示颜色),也可以是 never(从不显示颜色)和 auto(自动);

    -d:显示目录信息,而不是目录下的文件;

    -h:人性化显示,按照我们习惯的单位显示文件大小;

    -i:显示文件的 i 节点号;

    -l:长格式显示;

touch 修改文件的时间戳  如果文件不存在,则会建立空文件;如果文件已经存在,则会修改文件的时间戳(

    -a:只修改文件的访问时间(Access Time)

    -c:如果文件不存在,则不建立新文件

    -d:把文件的时间改为指定的时间

    -m:只修改文件的数据修改时间(Modify Time)

Linux 中的每个文件都有三个时间,分别是访问时间(Access Time)、数据修改时间(Modify Time)和状态修改时间(Change     Time)。这三个时间可以通过 stat 命令来进行査看

stat 是査看文件详细信息的命令,而且可以看到文件的这三个时间

     -f:査看文件所在的文件系统信息,而不是査看文件的信息。

cat 命令用来査看文件内容,是 concatenate(连接、连续)的简写。cat 命令用于査看文件内容,不论文件内容有多少,都会一次性显示。

    -A:相当于 -vET 选项的整合,用于列出所有隐藏符号;

    -E:列出每行结尾的回车符 $;

    -n:显示行号;

    -T:把 Tab 键 ^I 显示出来;

    -V:列出特殊字符;

more 是分屏显示文件的命令

head 是用来显示文件开头的命令   文件结尾的命令——tail 命令  -n 行数:从文條尾开始,显示指定行数  -f:监听文件的新増内容

    -n 行数: 从文件头开始,显示指定行数;

    -v:显示文件名;

    tail 命令和 head 命令的格式基本一致,默认会显示文件的后 10 行。如果想显示指定的行数,则只需使用"-n"选项即可,

ln   在文件之间建立链接     Linux 目前使用的是 ext4 文件系统,ext4 文件系统会把分区主要分为两大部分(暂时不提超级块):小部分用于保存文件的 inode (i节点)信息;剩余的大部分用于保存 block 信息。inode 的默认大小为 128 Byte,用来记录文件的权限(r、w、x)、文件的所有者和属组、文件的大小、文件的状态改变时间(ctime)、文件的最近一次读取时间(atime)、文件的最近一次修改时间(mtime)、文件的数据真正保存的 block 编号。每个文件需要占用一个 inode。大家如果仔细查看,就会发现 inode 中是不记录文件名的,那是因为文件名记录在文件所在目录的 block 中。block 的大小可以是 1KB、2KB、4KB,默认为 4KB。block 用于实际的数据存储,如果一个 block 放不下数据,则可以占用多个 block。例如,有一个 10KB 的文件需要存储,则会占用 3 个 block,虽然最后一个 block 不能占满,但也不能再放入其他文件的数据。这 3 个 block 有可能是连续的,也有可能是分散的。

    -s:建立软链接文件。如果不加"-s"选项,则建立硬链接文件;

    -f:强制。如果目标文件已经存在,则删除目标文件后再建立链接文件;

     这里需要注意,软链接文件的源文件必须写成绝对路径,而不能写成相对路径(硬链接没有这样的要求);否则软链接文件会报错。这是初学者非常容易犯的错误。

   硬链接的特点如下:

    不论是修改源文件(test 文件),还是修改硬链接文件(test-hard 文件),另一个文件中的数据都会发生改变。

    不论是删除源文件,还是删除硬链接文件,只要还有一个文件存在,这个文件(inode 号是 262147 的文件)都可以被访问。

    硬链接不会建立新的 inode 信息,也不会更改 inode 的总数。

    硬链接不能跨文件系统(分区)建立,因为在不同的文件系统中,inode 号是重新计算的。

    硬链接不能链接目录,因为如果给目录建立硬链接,那么不仅目录本身需要重新建立,目录下所有的子文件,包括子目录中的所有子文件都需要建立硬链接,这对当前的 Linux 来讲过于复杂。

    软链接完全可以当作 Windows 的快捷方式来对待,它的特点和快捷方式一样

rm 是强大的删除命令,不仅可以删除文件,也可以删除目录

    -f:强制删除(force)

    -i:交互删除,在删除之前会询问用户

    -r:递归删除,可以删除目录(recursive)

cp 是用于复制的命令

    -a:相当于 -d、-p、-r 选项的集合,这几个选项我们一一介绍;

    -d:如果源文件为软链接(对硬链接无效),则复制出的目标文件也为软链接;

    -i:询问,如果目标文件已经存在,则会询问是否覆盖;

    -l:把目标文件建立为源文件的硬链接文件,而不是复制源文件;

    -s:把目标文件建立为源文件的软链接文件,而不是复制源文件;

    -p:复制后目标文件保留源文件的属性(包括所有者、所属组、权限和时间);

    -r:递归复制,用于复制目录;

    如果在复制软链接文件时不使用"-d"选项,则 cp 命令复制的是源文件,而不是软链接文件;只有加入了"-d"选项,才会复制软链接文  件。请大家注意,"-d"选项对硬链接是无效的。

mv 是用来剪切的命令

    -f:强制覆盖,如果目标文件已经存在,则不询问,直接强制覆盖;

    -i:交互移动,如果目标文件已经存在,则询问用户是否覆盖(默认选项);

    -n:如果目标文件已经存在,则不会覆盖移动,而且不询问用户;

    -v:显示详细信息;

利用ls -l查看文件使会出现一组数据

 

第一位代表文件类型

    -"-":普通文件。

    -"b":块设备文件。这是一种特殊设备文件,存储设备都是这种文件,如分区文件 /dev/sda1 就是这种文件。

    -"c":字符设备文件。这也是特殊设备文件,输入设备一般都是这种文件,如鼠标、键盘等。

    -"d":目录文件。Linux 中一切皆文件,所以目录也是文件的一种。

    -"l":软链接文件。

    -"p":管道符文件。这是一种非常少见的特殊设备文件。

    -"s":套接字文件。这也是一种特殊设备文件,一些服务支持 Socket 访问,就会产生这样的文件。

第二到四位代表文件所有者权限

     -r:代表 read,是读取权限。

     -w:代表 write,是写权限。

     -x:代表 execute,是执行权限。

     如果有字母,则代表拥有对应的权限;如果是"-",则代表没有对应的权限。

五至七以及八至十分别代表文件所属组权限和其他人权限

chmod 是修改权限的命令

      -R:递归设置权限,也就是给子目录中的所有文件设定权限

对文件有写权限,但是无法删除文件

这需要通过分区的格式化来讲解。我们之前讲过,分区的格式化可以理解为给分区打入隔断,这样才可以存储数据。

在 Linux 的ext文件系统中,格式化可以理解为把分区分成两大部分:

一部分占用空间较小,用于保存inode(i 节点)信息;

绝大部分格式化为block(数据块),用于保存文件中的实际数据。

在 Linux 中,默认 inode 的大小为 128 Byte,用于记录文件的权限(r、w、x)、文件的所有者和属组、文件的大小、文件的状态改变时间(ctime)、文件的最近一次读取时间(atime)、文件的最近一次修改时间(mtime)、文件中的数据真正保存的block编号。每个文件需要占用一个inode。

仔细观察,在inode中并没有记录文件的文件名。那是因为文件名是记录在文件上级目录的 block 中的。我们画一张示意图看看,假设有这样一个文件 /test/cangls,如图所示

inode号 cangls文件的inode block.. in」e号,权限,所有者、 时间、所在的bk 文件中的数据 block.." v:shapes="图片_x0020_7">

因为文件名保留在上级目录的 block 中,所以对文件拥有写权限,是不能删除文件本身的,只能删除文件中的数据(也就是文件 block 中的内容)。要想删除文件名,需要对文件所在目录拥有写权限。

对目录来讲,如果只赋予只读(r)权限,则是不可以使用的。大家想想,要想读取目录下的文件,你怎么也要进入目录才可以吧?而进入目录,对目录来讲,需要执行(x)权限的支持。

 

式例

#步骤一:由root身份建立测试文件

[root@localhost ~]# cd /home/user/

#进入普通用户的家目录中建立测试目录和文件,因为普通用户无法进入root的家目录中

[root@localhost user]# mkdir test

[root@localhost user]# touch test/cangls

#建立测试目录和文件

[root@localhost user]# chmod 750 test/

#修改test目录的权限为750

#由于没有修改所有者和所属组,所以user用户会匹配其他人权限

#为了实验效果,只把他人的权限改为0,而所有者和所属组权限不修改

[root@localhost user]# chmod 640 test/cangls

#修改cangls文件的权限为640

#步骤二:由user用户测试权限(执行命令"su-user"切换用户)

[user@localhost ~]$ ll

总用量 4

drwxr-x—-- 2 root root 4096 6月 15 13:19 test

#思考:为什么user对test目录没有权限,却能看到 test目录?

[user@localhost ~]$ ls test/

ls:无法打开目录test/:权限不够

[user@localhost ~]$ cd test/

-bash: cd: test/:权限不够

#由于user用户对test目录没有权限(0),所以既不能查看目录下的内容,也不能进入目录

#步骤三:由root用户给test目录赋予读(r)权限

[root@localhost user]# chmod 754 test

[root@localhost user]# ll test/

总用量0

-rw-r----- 1 root root 0 6月 15 13:19 cangls

#注意,这是测试实验,只读(r)权限对目录无法正常使用

#步骤四:由user用户测试,读(r)权限虽然可以看到目录下的内容,但是不能正常使用

[user@localhost ~]$ ls test/

ls:无法访问test/cangls:权限不够

cangls

#ls查看目录下的内容,虽然看到了文件名,但依然报错"权限不够"

[user@localhost ~]$ ll test/

ls:无法访问test/cangls:权限不够

总用量0

-????????? ???? ? cangls

#ll查看目录下的内容,会发现由于权限不足,所以只能看到文件名,其他信息都是"?",代表不能正常查看

[user@localhost ~]$ cd test/

-bash: cd: test/:权限不够

#当然也不能进入目录

#所以,只读(r)权限对目录来说是无法正常使用的权限

#步骤五:由root用户给test目录赋予读(r)和执行(x)权限

[root@localhost user]# chmod 755 test

[root@localhost user]# ll test/

总用量0

-rw-r—---- 1 root root 0 6月 15 13:19 cangls

#读(r)和执行(x)权限对目录来说才是可以正常使用的权限

#步骤六:由user用户测试

[user@localhost ~]$ ll test/

总用量0

-rw-r—---- 1 root root 0 6月 15 13:19 cangls

#可以正常查看目录下的内容

[user@localhost ~]$ cd test/

[user@localhost test]$

#可以进入目录了

#步骤七:我们开始测试文件权限,由user用户测试

[user@localhost test]$ cat cangls

cat: cangls:权限不够

#user用户没有读(r)权限,所以不能查看文件的内容

[user@localhost test]$ echo 22222 >> cangls

-bash: cangls:权限不够

#user用户没有写(w)权限,所以不能写入数据

#步骤八:由root用户给cangls文件赋予读(r)权限

[root@localhost user]# chmod 644 test/cangls

#步骤九:由user用户测试,可以读取cangls文件的内容

[user@localhost test]$ cat cangls

[user@localhost test]$

#虽然文件为空,但是不再报错

[user@localhost test]$ echo 22222 >> cangls

-bash: cangls:权限不够

#由于没有写权限,所以依然不能向文件中写入数据

#步骤十:由root用户给cangls文件赋予写(w)权限

[root@localhost user]# chmod 646 test/cangls

#这只是实验,才会出现其他人权限高于所属组权限的情况,实际情境不会这样

#步骤十一:由user用户测试,可以对cangls文件写入数据

[user@localhost test]$ echo 22222 >> cangls

[user@localhost test]$ rm -rf cangls

rm:无法删除"cangls":权限不够

#可以对cangls文件写入数据,但是不能删除这个文件本身

#步骤十二:由root用户给test目录赋予写(w)权限

[root@localhost user]# chmod 757 test/

[root@localhost user]# ll

总用量4

drwxr-xrwx 2 root root 4096 6月 15 13:19 test

#其他用户赋予7权限,非常不安全,在生产环境下严格禁用

#步骤十三:由user用户测试,可以删除cangls文件,并且可以新建、复制和剪切

[user@localhost test]$ rm -rf cangls

#可以删除

[user@localhost test]$ touch bols

#可以新建bols文件

[user@localhost test]$ mv bols Imls

#可以把bols文件改名为lmls

chown 是修改文件和目录的所有者和所属组的命令

       -R: 递归设置权限,也就是给子目录中的所有文件设置权限

[root@localhost ~]# touch laowang

#由root用户创建laowang文件

[root@localhost ~]# ll laowang

-rw-r--r-- 1root root 0 6月 16 05:12 laowang

#文件的所有者是root,普通用户user对这个文件拥有只读权限

[root@localhost ~]# chown user laowang

#修改文件的所有者

[root@localhost ~]# ll laowang

-rw-r--r-- 1 userroot 0 6月 16 05:12 laowang

#所有者变成了user用户,这时user用户对这个文件就拥有了读、写权限

 chown 命令不仅可以修改文件的所有者,也可以修改文件的所属组。例如:

chgrp 是修改文件和目录的所属组的命令

umask 默认权限是 Linux 权限的一种,主要用于让 Linux 中的新建文件和目录拥有默认权限。Linux 是一个比较安全的操作系统,而安全的基础就是权限,所以,在 Linux 中所有的文件和目录都要有基本的权限,新建的文件和目录当然也要有默认的权限。

man 是最常见的帮助命令,也是 Linux 最主要的帮助命令

   -f:査看命令拥有哪个级别的帮助

   -k: 査看和命令相关的所有帮助

 

 

whereis 搜索系统命令的命令

   -b: 只査找二制命令;

   -m: 只查找帮助文档;

which 也是搜索系统命令的命令。和whereis命令的区别在于,whereis命令可以在查找到二进制命令的同时,查找到帮助文档的位置;而which命令在查找到二进制命令的同时,如果这个命令有别名,则还可以找到别名命令。

info  命令也可以获取命令的帮助。和 man 命令不同的是,info 命令的帮助信息是一套完整的资料,每个单独命令的帮助信息只是这套完整资料中的某一个小章节。大家可以把 info 帮助信息看成一部独立的电子书,所以每个命令的帮助信息都会和书籍一样,拥有章节编号。

help  是非常简单的命令,而且不经常使用。因为help只能获取Shell内置命令的帮助,但在Linux中绝大多数命令是外部命令,所以help命令的作用非常有限。而且内置命令也可以使用man命令获取帮助。

locate 命令是可以按照文件名搜索普通文件的命令。

   -i:忽略大小写

find 是 Linux 中强大的搜索命令,不仅可以按照文件名搜索文件,还可以按照权限、大小、时间、inode 号等来搜索文件。但是 find 命令是直接在硬盘中进行搜索的,如果指定的搜索范围过大,find命令就会消耗较大的系统资源,导致服务器压力过大。所以,在使用 find 命令搜索时,不要指定过大的搜索范围。

 

   -name: 按照文件名搜索;

   -iname: 按照文件名搜索,不区分文件名大小;

   -inum: 按照 inode 号搜索;

   -size[+-]大小:按照指定大小搜索文件

   -atime [+-]时间: 按照文件访问时间搜索

   -mtime [+-]时间: 按照文改时间搜索

   -ctime [+-]时间: 按照文件修改时间搜索

        -5:代表@内修改的文件。

         5:代表前5~6天那一天修改的文件。

        +5:代表6天前修改的文件

    -perm 权限模式:査找文件权限刚好等于"权限模式"的文件

    -perm -权限模式:査找文件权限全部包含"权限模式"的文件

    -perm +权限模式:査找文件权限包含"权限模式"的任意一个权限的文件 

    -uid 用户 ID:按照用户 ID 査找所有者是指定 ID 的文件

    -gid 组 ID:按照用户组 ID 査找所属组是指定 ID 的文件

    -user 用户名:按照用户名査找所有者是指定用户的文件

    -group 组名:按照组名査找所属组是指定用户组的文件

    -nouser:査找没有所有者的文件

     -type d:查找目录

     -type f:查找普通文件

     -type l:查找软链接文件

 

find 命令是完全匹配的,必须和搜索关键字一模一样才会列出。

每个文件都有 inode 号,如果我们知道 inode 号,则也可以按照 inode 号来搜索文件。

".zip"  是Windows 中最常用的压缩格式,Linux 也可以正确识别".zip"格式,这可以方便地和 Windows 系统通用压缩文件。

    -r:压缩目录

zip 压缩命令需要手工指定压缩之后的压缩包名,注意写清楚扩展名,以便解压缩时使用。

[root@localhost ~]# mkdir dir1

#建立测试目录

[root@localhost ~]# zip -r dir1.zip dir1

adding: dir1/(stored 0%)

#压缩目录

[root@localhost ~]# ls -dl dir1.zip

-rw-r--r-- 1 root root 160 6月 1716:22 dir1.zip

#压缩文件生成

unzip

   -d: 指定解压缩位置

[root@localhost ~]# unzip dir1.zip

Archive: dir1.zip

creating: dirl/

#解压缩

".gz"格式是 Linux 中最常用的压缩格式

   c:将压缩数据输出到标准输出中,可以用于保留源文件;

   -d:解压缩;

   -r:压缩目录;

   -v:显示压缩文件的信息;

   -数字:用于指定压缩等级,-1 压缩等级最低,压缩比最差;-9 压缩比最高。默认压缩比是 -6;

[root@localhost ~]# gzip install.log

#压缩instal.log 文件

[root@localhost ~]# ls

anaconda-ks.cfg install.log.gz install.log.syslog

#压缩文件生成,但是源文件也消失了

gunzip

".bz2"格式是 Linux 的另一种压缩格式,从理论上来讲,".bz2"格式的算法更先进、压缩比更好;而 ".gz"格式相对来讲的时间更快。

     -d:解压缩。

     -k:压缩时,保留源文件。

     -v:显示压缩的详细信息。

     -数字:这个参数和 gzip 命令的作用一样,用于指定压缩等级,-1 压缩等级最低,压缩比最差;-9 压缩比最高。

注意,gzip 只是不会打包目录,但是如果使用“-r”选项,则可以分别压缩目录下的每个文件;而 bzip2 命令则根本不支持压缩目录,也没有“-r”选项

这个压缩命令依然会在压缩的同时删除源文件。

bunzip2

   -k:解压缩时,保留源文件

 

".tar"格式的打包和解打包都使用 tar 命令,区别只是选项不同。

    -c:打包;

    -f:指定压缩包的文件名。压缩包的扩展名是用来给管理员识别格式的,所以一定要正确指定扩展名;

    -v:显示打包文件过程;

[root@localhost ~]# tar -cvf anaconda-ks.cfg.tar anaconda-ks.cfg

#把anacondehks.cfg打包为 anacondehks.cfg.tar文件

".tar"格式的解打包也需要使用 tar 命令,但是选项不太一样。命令格式如下

   -x:解打包;

   -f:指定压缩包的文件名;

   -v:显示打包文件过程;

   -t:测试,就是不解打包,只是査看包中有哪些文件;

   -C 目录:指定解打包位置   

   -z:压缩和解压缩 ".tar.gz"格式

   -j:压缩和街压缩 ".tar.bz2"格式

当我们在计算机上保存数据的时候,其实是先在内存中保存一定时间,再写入硬盘。这其实是一种缓存机制,当在内存中保存的数据需要被读取的时候,从内存中读取要比从硬盘中读取快得多。不过,这也会带来一些问题,如果数据还没有来得及保存到硬盘中,就发生了突然岩机(比如断电)的情况,数据就会丟失。sync 命令的作用就是把内存中的数据强制向硬盘中保存。这个命令在常规关机的命令中其实会自动执行,但如果不放心,则应该在关机或重启之前手工执行几次,避免数据丟失。

shutdown 其中 reboot命令重启   halt和poweroff命令关机   init是修改 Linux 运行级别的命令,也可以用于关机和重启  init 0关机   init 6重启

  -c:取消已经执行的 shutdown 命令;

  -h:关机;

  -r:重启

[root@localhost ~]# shutdown -r now

#重启, now是现在重启的意思

[root@localhost ~]# shutdown -r 05:30

#指定时间重启,但会占用前台终端

[root@localhost ~]# shutdown -r 05:30 &

#把定义重启命令放入后台,&是后台的意思

[root@localhost ~]# shutdown -c

//取消定时重启

[root@localhost ~]# shutdown -r +10

#10分钟之后重启

Linux 当然也需要配置 IP 地址才可以正常使用网络。其实 Linux 主要是通过修改网卡配置文件来永久修改 IP 地址的。setup 是一个简化命令,是 Red Hat 系列专有的命令,其他的 Linux 系列不一定有此命令。

ifconfig 是 Linux 中査看和临时修改 IP 地址的命令

 

ping 是常用的网络命令,主要通过 ICMP 协议进行网络探测,测试网络中主机的通信情况。

   -b: 后面加入广播地址,用于对整个网段进行探测;

   -c 次数: 用于指定 ping 的次数;

   -s 字节: 指定探测包的大小;

[root@localhost ~]# ping -c 3 192.168.103.151

#只探测3次,就中止ping命令

netstat 是网络状态查看命令,既可以查看到本机开启的端口,也可以查看有哪些客户端连接。

    -a:列出所有网络状态,包括 Socket 程序;

    -c秒数:指定每隔几秒刷新一次网络状态;

    -n:使用 IP 地址和端口号显示,不使用域名与服务名;

    -p:显示 PID 和程序名;

    -t:显示使用 TCP 协议端口的连接状况;

    -u:显示使用 UDP 协议端口的连接状况;

    -I:仅显示监听状态的连接;

    -r:显示路由表;

查看本机开启的端口。

这是本机最常用的方式,使用选项"-tuln"。因为使用了"-I"选项,所以只能看到监听状态的连接,而不能看到已经连接状态的连接。

 

 

linux命令学习

原文:https://www.cnblogs.com/qxwpw/p/10581112.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!