1.shell
在计算机中,shell俗称壳(用来区别于核),基本上是一个命令解释器,接收用户指令。
2. bash
bash就是一种Linux默认的shell,它解释用户输入的字符串(空白符切割,第一个元素作为命令),判断是内部或外部指令,如果是内部命令直接执行,如果是外部命令,在$PATH(环境变量)中给定的目录中从左到右寻找该指令。总之,bash是一个解释器、执行器。
3. type
[root@node01 ~]# type -a ifconfig
ifconfig is /sbin/ifconfig
表示ifconfig这个命令程序所在位置;type可以看出当前命令是内部OR外部命令,例如:
[root@node01 ~]# type cd
cd is a shell builtin
builtin表示内部命令。输入help回车,可以查看所有的内部命令;
4. file
[root@node01 ~]# file /sbin/ifconfig
/sbin/ifconfig: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, stripped
检查当前外部命令是什么类型的文件,从返回的内容中可以看出,ifconfig是一个二进制程序(ELF表示Linux系统中的二进制程序),类似于windows中的.exe程序;
5. man
查看某个命令的帮助文档,如果执行提示没有找到该指令,可以通过yum install man来进行安装(一般使用yum install man-pages安装,可以将man相关指令集全部安装);
外部命令分为8类:
- 1.用户命令
- 2.系统调用
- 3.库用户
- 4.特殊文件(设备文件)
- 5.文件格式(配置文件的语法)
- 6.游戏
- 7.杂项(Miscellaneous)
- 8.管理命令(/sbin,/usr/sbin,/usr/local/sbin)
6. help
可以通过help查看内部命令的帮助文档,直接输入help回车,能显示所有内部命令;
7. yum
是一个Python脚本语言,解释执行指令集;
8. df
查看文件系统分区
文件系统层次化标准:
- /boot:系统启动相关的文件,如内核、initrd,以及grub(bootLoader);
- /dev:设备文件;
- /etc:配置文件;
- /home:用户的家目录,每一个用户的家目录通常默认为/home/USERNAME;
- /root:管理员的家目录;
- /lib:库文件
- /media:挂载点目录,移动设备
- /mnt:挂载点目录,额外的临时文件系统
- /opt:可选目录,第三方程序的安装目录
- /proc:伪文件系统,内核映射文件
- /sys:伪文件系统,跟硬件设备相关的属性映射文件
- /tmp:临时文件,/var/tmp
- /var:可变化的文件
- /bin:可执行文件,用户命令
- /sbin:管理命令
9. ls -l
文件类型:
- -:普通文件(f);
- d:目录文件;
- b:块设备文件(block)
- c:字符设备文件(character);
- l:符号链接文件(symbolic link file);
- p:命令管道文件(pipe);
- s:套接字文件(socket);
10. mkdir
一次创建多个目录
[root@node01 ~]# mkdir -p ./x/{a,b,c}
[root@node01 ~]# ll ./x
total 12
drwxr-xr-x. 2 root root 4096 Sep 6 05:52 a
drwxr-xr-x. 2 root root 4096 Sep 6 05:52 b
drwxr-xr-x. 2 root root 4096 Sep 6 05:52 c
11. ln
硬链接:
[root@node01 ~]# vi a
[root@node01 ~]#
[root@node01 ~]# ln a b
[root@node01 ~]#
[root@node01 ~]# ll
total 32
-rw-r--r--. 2 root root 6 Sep 6 05:59 a
-rw-------. 1 root root 900 Aug 20 02:08 anaconda-ks.cfg
-rw-r--r--. 2 root root 6 Sep 6 05:59 b
-rw-r--r--. 1 root root 8815 Aug 20 02:08 install.log
-rw-r--r--. 1 root root 3384 Aug 20 02:07 install.log.syslog
drwxr-xr-x. 5 root root 4096 Sep 6 05:52 x
以上是将b硬链接a,新创建的a中有内容”hello”,vi b打开发现也有同样的内容,此时修改任意一个文件内容,两边内容将保持同步。
查看一下a 和 b文件的inode号,发现a 和 b的索引号都是一样(有点类似java里面两个变量引用同一个对象),如果此时删除a或者b两者相互不影响,删除一个另一个还正常存在,并且注意-rw-r–r–. 2 这个链接数,在没有链接的时候显示为1,硬链接后显示为2,最后删除任意一个将会变为1:
[root@node01 ~]# ll -i
total 32
1966096 -rw-r--r--. 2 root root 13 Sep 6 06:02 a
1966089 -rw-------. 1 root root 900 Aug 20 02:08 anaconda-ks.cfg
1966096 -rw-r--r--. 2 root root 13 Sep 6 06:02 b
1966082 -rw-r--r--. 1 root root 8815 Aug 20 02:08 install.log
1966083 -rw-r--r--. 1 root root 3384 Aug 20 02:07 install.log.syslog
1966091 drwxr-xr-x. 5 root root 4096 Sep 6 05:52 x
软链接:
[root@node01 ~]# ln -s a c
[root@node01 ~]# ll
total 28
-rw-r--r--. 1 root root 13 Sep 6 06:02 a
-rw-------. 1 root root 900 Aug 20 02:08 anaconda-ks.cfg
lrwxrwxrwx. 1 root root 1 Sep 6 06:14 c -> a
-rw-r--r--. 1 root root 8815 Aug 20 02:08 install.log
-rw-r--r--. 1 root root 3384 Aug 20 02:07 install.log.syslog
drwxr-xr-x. 5 root root 4096 Sep 6 05:52 x
以上是将c软链接到a,此时修改任意一个文件两者都将同时修改,但是如果将a删除掉,c链接将找不到实体文件,ll查看的时候linux将会给出明显提示,这点是和硬链接的不同之处(有点类似windows中的快捷方式)。
12. stat
查看文件的元数据
[root@node01 ~]# stat profile
File: `profile'
Size: 1796 Blocks: 8 IO Block: 4096 regular file
Device: 803h/2051d Inode: 1966096 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2018-09-06 06:27:27.900118033 +0800
Modify: 2018-09-06 06:27:27.900118033 +0800
Change: 2018-09-06 06:27:27.900118033 +0800
13. touch
如果touch一个存在的文件,那么touch之后文件的元数据中access、modify和change时间都将会变为最新的,如果touch一个不存在的文件,那么将会创建它。
14. du
也是查看使用空间的,与df不同的是,du查看的是目录和文件的占用空间;
[root@node01 ~]# du -h
4.0K ./x/a
4.0K ./x/c
4.0K ./x/b
16K ./x
68K .
以上是查看当前目录及当前目录下子目录的大小,最后一个为目录及子目录的大小总和;
查看指定文件大小:
[root@node01 ~]# du -h profile
4.0K profile
查看指定目录大小:
[root@node01 ~]# du -h x
4.0K x/a
4.0K x/c
4.0K x/b
16K x
查看多个文件大小:
[root@node01 ~]# du -h a profile
0 a
4.0K profile
查看总大小(-h转换为人可读的大小单位):
[root@node01 ~]# du -h -s
68K .