-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"选项,所以只能看到监听状态的连接,而不能看到已经连接状态的连接。
原文:https://www.cnblogs.com/qxwpw/p/10581112.html