本文共 8915 字,大约阅读时间需要 29 分钟。
Linux的文件系统
根文件系统(rootfs) root fileysystemLSB,FHS(Filesystem Heirache Standard)文件系统层级结构标准,如:/etc、/usr、/var、/root、/home、/dev/boot:引导文件存放目录,内核文件(vmlinuz)、引导加载器(bootloader,grub)都存放于此目录;/bin:供所有用户使用的基本命令;不能关联至独立分区,OS启动即会用到的程序;/sbin:管理类的基本命令;不能关联至独立分区,OS启动即会用到的程序;/lib:基本共享库文件,以及内核模块文件(/lib/moudules);/lib64:专用于x86_64系统上的辅助共享库文件;/etc:配置文件目录(纯文本文件);/home/username:普通用户家目录/root:管理员的家目录;/media:便携式移动设备挂载点;(cdrom、usb)/mnt:临时文件系统挂载点;/dev:设备文件及特殊文件存储位置; b:block device 随机访问设备 c:character device 线性访问设备/opt:第三方应用程序的安装位置;/srv:系统上运行的服务用到的数据;/tmp:临时文件存储位置/usr:universal shared,read-only data bin:保证系统拥有完整功能而提供的应用程序; sbin: lib: lib64: include:C程序的头文件(header files); share:结构化独立的数据,例如:man,doc等 local:第三方应用程序的安装位置; bin、sbin、lib、lib64、etc、share/var:variable data files 可变数据文件 cache:应用程序缓存数据目录; lib:应用程序状态信息数据; local:专用于为/usr/local下的应用程序存储可变数据; lock:锁文件 log:日志目录及文件 opt:专用于为/opt下的应用程序存储可变数据; run:运行中的进程相关的数据;通常用户存储进程的pid文件 spool:应用程序数据池 tmp:保存系统两次重启之间产生的临时数据/proc:用于输出内核与进程信息相关的虚拟文件系统;/sys:用于输出当前系统上硬件设备相关信息的虚拟文件系统/selinux:security enhanced linux,selinux相关的安全策略等信息的存储位置
Linux上的应用程序的组成部分:
二进制程序:/bin、/sbin、/usr/bin、/usr/sbin、/usr/local/bin、/usr/local/sbin库文件:/lib、/lib64、/usr/lib、/usr/lib64、/usr/local/lib、/usr/loacl/lib64配置文件:/etc、/etc/directory、/usr/local/etc帮助文件:/usr/share/man、/usr/share/doc、/usr/local/share/man、/usr/loacl/share/docLinux的文件类型
-(f):普通文件;d:目录文件b:块设备c:字符设备l:符号链接文件,仅表示软链接;p:管道文件s:套接字文件、socket;系统管理类命令:
关机或重启halt、poweroff 关机reboot 重启选项:-f:强制,不调用shutdown;-p:切断电源shutdownshutdown [option]... time [message]选项:-r:reboot 重启;-h:halt 关机 ;-c:cancel 取消关机或重启time时间表示法:now:立刻,0亦可表示现在+m:相对时间表示法,从命令提交开始多久之后,例如:+3;hh:mm:绝对时间表示法,指明具体时间,24小时制;用户登录信息查看命令:whoami:显示当前登录有效用户[root@localhost ~]# whoamirootwho:系统当前所有的登录会话:[root@localhost ~]# whoroot pts/1 2018-03-21 11:25 (192.168.152.1)root pts/2 2018-03-21 14:15 (192.168.152.1)w:系统当前所有的登录会话及所做的操作[root@localhost ~]# w 14:18:12 up 2:57, 2 users, load average: 0.00, 0.00, 0.00USER TTY FROM LOGIN@ IDLE JCPU PCPU WHATroot pts/1 192.168.152.1 11:25 2:53m 0.02s 0.02s -bashroot pts/2 192.168.152.1 14:15 0.00s 0.01s 0.00s w
bash的基础特性:
(1)命令历史history环境变量:HISTSIZE:命令历史记录的条数;[root@localhost ~]# echo $HISTSIZE1000HISTFILE:命令历史文件
[root@localhost ~]# echo $HISTFILE/root/.bash_historyHISTFILESIZE:命令历史文件记录历史的条数
[root@localhost ~]# echo $HISTFILESIZE1000history -d #:删除命令历史中第#条命令
[root@localhost ~]# history1 history2 ls3 cd4 history[root@localhost ~]# history -d 2[root@localhost ~]# history1 history2 cd3 history4 history -d 25 historyhistory -c:清空命令历史;
history #:显示命令历史中最近的#条命令[root@localhost ~]# history1 history2 ls3 cd4 history[root@localhost ~]# history 24 history5 history 2history -a:手动追加当前会话缓冲区的命令历史到命令历史文件中;
调用历史中的命令:
!#:重复执行第#条命令[root@localhost ~]# history1 history2 ls3 cd4 history[root@localhost ~]# !2lsanaconda-ks.cfg Desktop install.log install.log.syslog scsrun.log!!:重复执行上一条命令
[root@localhost ~]# history1 history[root@localhost ~]# !!history1 history2 history!string:重复执行以string开头的命令
[root@localhost ~]# history1 history2 ls3 cd4 history[root@localhost ~]# !llsanaconda-ks.cfg Desktop install.log install.log.syslog scsrun.log调用上一条命令的最后一个参数:
!$ESC,.alt+.控制命令历史的记录方式:
环境变量:HISTCONTROLignoredups 忽略重复的命令;连续且相同方为重复;ignorespace:忽略所有以空白开头的命令;ignoreboth:兼容以上两者的特性(2)命令补全
bash执行命令:bash根据PATH环境变量定义的路径,自左而右在每个路径搜寻以给定命令名命名的文件,第一次找到即为要执行的命令;直接补全:Tab,用户给定的字符串只有一条唯一对应的命令;以用户给定的字符串为开头对应的命令不唯一,则再次Tab会给出列表;(3)路径补全
把用户给出的字符串当做路径开头,并在其指定上级目录下搜索以指定的字符串开头的文件名如果唯一,则直接补全否则,则再次Tab,给出列表;(4)命令行展开
~:展开为用户的主目录~username:展开为指定用户的主目录{}:可承载一个逗号分隔的列表,并将其展开为多个路径示例如下:/tmp/{a,b}=/tmp/a,/tmp/b/tmp/{tom,jerry}/hi=/tmp/tom/hi,/tmp/jerry/hi(5)命令的执行状态结果
成功;失败bash使用特殊变量$?保存最近一条命令的执行状态结果0:成功1-255:失败[root@localhost ~]# cat /etc/issueRed Hat Enterprise Linux Server release 5.7 (Tikanga)Kernel \r on an \m[root@localhost ~]# echo $?0[root@localhost ~]# catt /etc/issue-bash: catt: command not found[root@localhost ~]# echo $?127[root@localhost ~]# cat /etc/issueecat: /etc/issuee: No such file or directory[root@localhost ~]# echo $?1程序执行有两类结果:程序的返回值;程序的执行状态结果;
目录管理类命令:
cd,pwd,lsmkdir,rmdirmkdir [options] /path/to/somewhere-p:存在时不报错,且可自动创建所需的各目录,按层级递归创建[root@localhost tmp]# ls -ltotal 16drwx------ 2 root root 4096 Mar 15 19:49 gconfd-rootsrwxr-xr-x 1 root root 0 Mar 15 19:04 mapping-root-rw-r--r-- 1 root root 1580 Mar 20 22:01 passwddrwxr-xr-x 2 root root 4096 Mar 21 14:57 tom[root@localhost tmp]# mkdir -p tom[root@localhost tmp]# mkdir -p x/y/z[root@localhost tmp]# tree xx`-- y `-- z-v:显示详细信息[root@localhost tmp]# mkdir -v marymkdir: created directory `mary'-m MODE:创建目录时直接指定权限[root@localhost tmp]# mkdir -m 755 abc[root@localhost tmp]# ls -dl abcdrwxr-xr-x 2 root root 4096 Mar 21 15:02 abctree:查看目录的层级结构 -d:只显示目录,文件不予显示 [root@localhost tmp]# tree -d /tmp /tmp |-- abc |-- gconfd-root |-- mary |-- tom `-- x `-- y `-- z -L level:指定显示的层级数目 [root@localhost tmp]# tree -L 2 /tmp /tmp |-- abc |-- gconfd-root |-- mapping-root |-- mary |-- passwd |-- tom `-- x `-- y -P pattern:只显示有指定pattern匹配到的路径rmdir:删除空目录 rmdir [option]... directory... -v:显示详细信息 [root@localhost tmp]# rmdir -v mary rmdir: removing directory, mary -p:递归删除空目录练习:1、如何创建/tmp/x/y1、/tmp/x/y2、/tmp/x/y1/a、/tmp/x/y1/b、/tmp/x/y2/a、/tmp/x/y2/b[root@localhost ~]# mkdir -pv /tmp/x/{y1,y2}/{a,b}mkdir: created directory `/tmp/x'mkdir: created directory `/tmp/x/y1'mkdir: created directory `/tmp/x/y1/a'mkdir: created directory `/tmp/x/y1/b'mkdir: created directory `/tmp/x/y2'mkdir: created directory `/tmp/x/y2/a'mkdir: created directory `/tmp/x/y2/b'2、如何创建x_m、y_m、x_n、y_n[root@localhost ~]# mkdir -v /tmp/{x,y}_{m,n}mkdir: created directory `/tmp/x_m'mkdir: created directory `/tmp/x_n'mkdir: created directory `/tmp/y_m'mkdir: created directory `/tmp/y_n'3、如何创建/tmp/bin、/tmp/sbin、/tmp/usr、/tmp/usr/bin、/tmp/usr/sbin[root@localhost ~]# mkdir -pv /tmp/{bin,sbin,usr/{bin,sbin}}mkdir: created directory `/tmp/bin'mkdir: created directory `/tmp/sbin'mkdir: created directory `/tmp/usr'mkdir: created directory `/tmp/usr/bin'mkdir: created directory `/tmp/usr/sbin'文本文件查看类命令: cat、tac more、less、tail、head more more [option...] [file...] -d:显示翻页及退出提示 +#:定位在第#行开始显示 less less [option...] [file...] head head [option...] [file...] -c #:指定获取前#字节 [root@localhost ~]# head -c 5 /tmp/passwd root: -n #:指定获取前#行 [root@localhost ~]# head -n 3 /tmp/passwd root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin -#:指定获取前#行 [root@localhost ~]# head -3 /tmp/passwd root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin tail tail [option...] [file...] -c #:指定获取后#字节 [root@localhost ~]# tail -c 5 /tmp/passwd tom. -n #:指定获取前#行 [root@localhost ~]# tail -n 3 /tmp/passwd I am tom. I am tom. I am tom. -#:指定获取前#行 [root@localhost ~]# tail -3 /tmp/passwd I am tom. I am tom. I am tom. -f:跟踪显示文件新追加的内容; 文件的时间戳管理工具 touch 文件:metadata元数据,data数据 查看文件状态:stat [root@localhost ~]# stat /tmp/passwd File: `/tmp/passwd' Size: 1580 Blocks: 8 IO Block: 4096 regular file Device: fd00h/64768d Inode: 1336933 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2018-03-21 15:35:58.000000000 +0800 Modify: 2018-03-20 22:01:10.000000000 +0800 Change: 2018-03-20 21:58:31.000000000 +0800 三个时间戳: access time:访问时间,atime 读取文件内容 modify time:修改时间,mtime 改变文件内容 changetime:改变时间,ctime 元数据发生改变 touch命令: touch [option...] [file...] -a:only atime -m:only mtime -t 具体时间 [[CC]YY]MMDDhhmm.ss [root@localhost ~]# touch -a -t 201803211540.10 /tmp/passwd [root@localhost ~]# touch -m -t 201803211541.10 /tmp/passwd [root@localhost ~]# stat /tmp/passwd File: `/tmp/passwd' Size: 1580 Blocks: 8 IO Block: 4096 regular file Device: fd00h/64768d Inode: 1336933 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2018-03-21 15:40:10.000000000 +0800 Modify: 2018-03-21 15:41:10.000000000 +0800 Change: 2018-03-21 15:45:00.000000000 +0800 -c:如果文件不存在,则不予创建
转载于:https://blog.51cto.com/3832598/2089456