目录管理

mkdirmake directory(创建空目录)
-m #创建目录同时设置权限
-p #递归创建新目录
-v #显示创建目录的过程

rmdir xxx
删除xxx目录,不过只能删空的目录,无法删除嵌套目录,换句话说就是目录里不能有任何文件和其他目录

ls list的简写用于列出目录

-l(--long以长格式显示):显示属性
-h #为文件大小添加单位(显示文件大小带上大小单位)
-a #显示目录下所有文件(包含.    ..    以.开始的隐藏文件)
-A #与-a相同,但是不显示.与..
-R #递归显示目录中的内容(会显示子目录中的内容)
-r #逆序显示目录内容(默认用ls查看会以26个字母的顺序进行排列,用-r刚好相反)
-i #打印这个file的index node值
-d #只列出目录

-rw-r--r--. 1 root root 1648 oct 14 14:16 initial-setup-ks.cfg 

第一位:

  • 代表普通文件(file)

    d #代表目录(directory)
    b #块设备(block)比如硬盘、u盘等
    c #字符设备(char)键盘鼠标打印机等
    s #套接字文件(socket)用于进程之间的通信
    p #命名管道(pipe)
    l #符号链接文件(symolic link file)

第二到十位:权限位(rwx:读写执行)
234位 #文件属主权限(owner 所有者)
567位 #文件属组权限(group 所属组)
8 9 10位 #其他用户权限(other 其他非本群组用户)

.:文件或目录中使用了SELinux content属性是一个点,如果用了ACL(访问控制列表)是+

1:代表文件硬链接的次数

第一个root:代表文件属主(owner)
第二个root:代表文件属组(group)
1648:文件的大小(byte字节)

oct 14 14:16:文件最后被访问的时间戳(stat命令查看文件时间戳)
文件的时间戳:
Access:访问的时间戳
Modify:文件被修改时间戳(修改文件数据:添加删除数据等)
Change:文件被更改时间戳(更改文件属性)

initial-setup-ks.cfg:文件名

在shell里输入外部命令他们是如何查找到的?
环境变量:内存中的命名空间
PATH变量:存放系统命令路径,以冒号隔开。
查看PATH变量:
PATH.png

如果在以上路径中没有找到相关命令(该命令是外部命令),提示用户command not found,一个命令在以上多个路径中存在,系统会按照从前往后的顺序查找,找到即停止向后查找。

hash 查看命令缓存及命中率(一个命令如果执行成功就记录下执行成功的次数与路径,下次查找就优先查找,查找缓存的速度比重新搜索的速度快)
hits.png

tree 以树状格式列出目录的内容。(tree = ls -R 显示样式不同)

cd 切换目录(change directory)
cd不加选项,返回当前用户的宿主目录
-返回到上一次的工作路径
~username #切换到username用户的宿主目录

pwd打印当前所在的工作目录(print working directory)

文件管理

file 查看文件类型(Windows是用拓展名识别文件类型)
语法:file [options] [args]
-b #显示结果时,不显示文件名
-c #显示执行file命令的执行过程(file是如何去判断文件类型),便于排错或分析file命令执行过程
-i #输出MIME类型的字符串
-z #显示压缩文件的内容
-L #查看软连接对应文件的类型
-f #查看文件中文件名的类型

查看文件大小
语法:du -h

查看文本文件内容

cat 一次查看文件所有内容(跳到文件结尾)
语法:cat [options] [args]
新建新文件:cat > new_file_name << EOF //EOf:end of file

内容1
内容2
内容3
EOF #结束书写

向现有文件中追加数据:
    cat >> file_name << EOF
        >内容1
        >内容2
        >内容3
        >EOF

把多个文件的内容合并到一个文件:
    cat file1 file2 > new_file_name
-n:显示文件内容同时显示行号,包括空行
-b:和-n功能相同,但不包括空行
-S:当文件中有多个空行时,合并为一个空行
-E:在显示内容时,结尾添加$符号

tac 与cat显示相反,第一行在下面最后一行在上面

more 可以翻页查看文本文件内容
enter键:向下翻一行
space键:向下翻一屏
Ctrl+B:向上翻一屏
Ctrl+F:向下翻一屏
=:显示当前行号
vi:调用编辑器
!command:调用shell执行命令
q:退出more命令
more +num file_name #从num行开始查看内容

less 可以翻页查看文本文件内容
-N,显示行号
enter键:向下翻一行
space键:向下翻一屏
PageDown:向下翻一屏
PageUp:向上翻一屏
上下方向键:向上/向下翻一行
/word:在该文件中向下查找word关键字
n:查找下一个
N:查找上一个
?word:在该文件中向上查找word关键字

head 默认查看文本文件的前10行
-n #查看文件前n行

tail 默认查看文本文件的后10行
-n #查看文本文件的后n行
-f #动态查看文本文件内容,如动态查看日志: tail -f /var/log/messages,也就是说日志内容改变会在你使用命令的的窗口实时显示

复制与移动

cp 复制文件或目录(copy)
语法:cp [options] [src_file] [des_file]
-f #强制(forece)复制文件或目录不进行提示
-r #递归复制目录
-s #为某个文件创建符号链接(软连接),而不是复制文件
-b #覆盖已有的文件前,对目标文件进行备份,在原有文件后面加上~
-l #为文件创建硬链接,而不是复制文件
-p #复制文件时保留文件的原有属性
-d #当复制软连接文件时,把目标文件或目录也会创建为软连接,并指向最原始的文件
-i #覆盖目标文件前询问(cp = cp -i 默认会询问)

mv 移动(move)或从命名文件和目录(当原位置和目标位置是同一目录时,是重命名,当原位置和目标位置不是同一目录时,是移动)
-b #移动前先对源文件进行备份
-f #强制覆盖
-i #覆盖目标文件前询问
-t #将多个文件移动同一个目录(目标目录在前面,后面跟文件。 mv -t [directory] file1 file2 ...)

创建与删除文件

rm 删除(remove)文件或目录,与上面的rmdir的区别是,这个可以删除嵌套目录,来多少删多少~
-d #删除单一的空目录(与rmdir功能相同)
-f #强制删除
-i #删除前进行询问
-r #递归删除整个目录,可以删除非空的目录
-v #显示命令执行过程

touch 创建新文件或修改文件时间戳
-a #只改变访问时间(access)(touch -a file_name 会将现在的系统时间写入)
-d #使用指定时间戳创建新文件,而不是使用系统时间
(touch -d "03:00 am" file_name 只能更改过去的时间,改变的是access与change时间戳)
-c #不创建文件
-t #使用指定格式时间戳创建新文件,而不是使用系统时间
-f #解决与BSD系列Unix系统兼容性
-m #只更改变动(modify)时间 (touch -m file_name)

查找

which 查看命令所在的绝对路径

type -a 完全可以替代which

whereis 查看命令所在的路径,源代码,帮助信息文件所在目录
-b #只查看文件所在的位置(等同于 which)
-m #只查看帮助文件(man目录下的文件)所在位置
-s #支持看源代码所在的位置

locate 查找文件命令
非实时性(模糊匹配),根据自己的数据库查找文件,CentOS每天更新一次数据库,安装完locate后生成/var/lib/mlocate目录来存放数据库。
/var/lib/mlocate/mlocate.db //locate工具的数据库

yum -y install mlocate //安装locate工具

#  locate file_name
#  updatedb    //更新locate数据库

根文件系统

Linux文件类型

  • 普通文件
  • 纯文本文件(ASCII) #配置文件
  • 二进制文件(binary file) #命令
  • 数据格式文件(data) #/var/log/wpmp
  • d 目录文件
  • l 链接文件(软链接文件,类似于 Windows 快捷方式)
  • 设备文件(存放在/dev中)
  • b #block块设备
  • c #character字符集设备:一次性读取,按顺序读取
  • s #socket套接字文件:通常用在网络上数据连接: IP:PROT
  • p #管道:特殊的文件类型,解决多个程序同时访问一个文件所造成的错误问题

file 查看Linux中文件类型
语法:file [options] file_name

Linux文件名限制:

  1. 单个文件或目录名称不能超过255个字符
  2. 文件名中不能包含特殊字符(/ . - +等)

FHS标准(filesystem hierarchy standard)

Linux中每个目录都有用意,其实是约定每个目录的作用,避免更换使用其他 Liunx 发行版本时增加学习时间成本,也是为了更好的协同开发。

/ #根文件文件系统(rootfs:root file system )。
/bin #二进制,存放一些命令
/boot #存放启动和内核相关文件
/dev #存放设备(硬件)文件
/etc #存放应用程序配置文件
/home #普通用户的家(宿主)目录,默认为/home/USERNAME
/lib和/lib64 #存放系统开机时需要用到的函数库及/bin和/sbin命令调用的函数库
    /lib/modules #存放内核相关的模块(驱动程序等)
/media和/mnt #挂载点,/media挂载移动设备    /mnt挂载临时设备
/opt #第三方软件存放目录(用户自行安装的软件存放处),现在一般安装到/usr/local下
/proc #为文件系统,数据存放在内存中,存放关于进程的相关信息
/root #管理员的家(宿主)目录
/sbin #存放管理员使用的命令
/srv #service缩写,存放服务数据目录,如可以把www服务的网页放到该目录
/tmp #存放临时文件,所有用户都可以访问创建文件,但是每个用户只能删除自己的文件,大约每个月自动清空一次
/sys #为文件系统,存放在内存中,记录内核相关的信息,包括目前加载内核模块和内核检测到的硬件设备等
/usr #UNIX SOFTWARTE RESOURCE:存放安装的应用程序
    /usr/bin #普通用户使用的命令(和/bin区别为是否与开机有关)
    /usr/sbin #网络服务器命令,secret binary 的缩写。
    /usr/share #存放共享文件目录(在线帮助文件,杂项,时区文件等)
    /usr/include #存放头文件
    /usr/src #释放源代码目录
/var #vary的缩写,存放经常变动的文件,如日志、mail等。
    /var/cache #存放应用程序运行时产生的缓存文件
    /var/lib #程序运行时,不要使用的数据文件的存放目录
    /var/lock #设备或资源一次只能被一个应用程序使用,如果多应用程序使用会产生错误,因为要为设备或资源上锁(存放锁文件)
    /var/log #存放日志目录(系统,用户登录,服务等)
    /var/mail #存放个人电子邮件(系统报警产生邮件信息等)
    /var/run #存放应用程序运行时PID文件(进程号.pid结尾)
    /var/spool #存放队列数据,排队等待其他用户程序使用的数据,数据通常使用完成后会被删除

FHS规定/etc/bin/dev/lib/sbin这五个目录必须要和根目录位于同一文件系统(不可以为这些目录建立独立分区)

显示文件系统信息
df -hlT #-T显示文件系统类型,-h=--human-readable会加上size单位,-l是local本地磁盘,不会显示远程磁盘。

查看日期

date 查看操作系统时间
-u #显示UTC时间
-s #设置时间(-s "20:20:20")
+%Y-%m-%d #格式化时间

cal 查看日历

uptime 查看系统运行的总时间

参考链接

标签: none

讨论讨论讨论!