云计算全栈-系统管理03-目录和文件管理(一)

作者信息: 房佳亮 ([email protected])
 
学习环境:
操作系统
IP地址
主机名
软件包
备注
CentOS7.5
192.168.200.111
localhost
   
 
实验初始配置:所有主机关闭防火墙与selinux
[root@localhost ~]# iptables -F
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# systemctl disable firewalld
 
[root@localhost ~]# setenforce 0
[root@localhost ~]# sed -i '/SELINUX/ s/enforcing/disabled/g' /etc/sysconfig/selinux
 
SHELL
  • 是Linux系统中运行的一种特殊程序(软件)
  • 位于用户和Linux内核之间充当解释器(翻译官)
  • 用户在登录Linux系统时,会被分配到一个Shell程序
  • Bash是Linux系统中默认使用的Shell程序(文件位于/bin/bash)
  • Shell负责接收用户输入的操作命令、解释、提交给内核执行
 

[root@localhost ~]# echo $SHELL #查看用户的shell程序
/bin/bash
[root@localhost ~]# cat /etc/shells #查看操作系统支持的所有shell程序
/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin
/bin/tcsh
/bin/csh

 
Linux命令的分类
内部命令
外部命令
集成于 Shell 解释器程序内部的一些特殊指令,也称为内建(Built-in)指令
Linux系统中能够完成特定功能的脚本文件或二进制程序文件
属于 Shell 内的一部分
属于 Shell 解释器程序之外的程序文件
没有单独对应的系统文件
每个外部命令对应了系统中的一个程序文件和多个库文件
shell运行时内部命令自动载入内存,可以直接使用
必须知道其对应的程序文件位置,由 Shell 加载后才能执行
 
Linux 命令的通用格式
命令字 [选项]... [参数]...
  • 命令字
是整条命令中最关键的一部分(不可忽略)
  • 选项
短格式选项:使用“-”符号引导,后面通常是单个字母
多个单字符选项可以组合在一起使用,例如:-a -l -h = -alh
长格式选项:使用“--”符号引导,后面通常是一个完整单词
参数是命令字的处理对象,可以是文件名、目录(路径)名或用户名等内容,个数可以是零个到多个
注意:部分命令中选项和参数的位置可以互换
Linux 命令的通用格式:
  • 没有被括号括起来的表示必选的,例如:命令字
  • [] 括起来的表示可有可无
  • {a|b|c} 表示abc中必须也只能选一个
  • ... 表示前面的部分可以出现多个
 
例如:
用法:mkdir [选项]... 目录...
mkdir命令必须写;选项可有可无,可以出现多个;目录必须写,目录可以出现多个
 
编辑 Linux 命令行的辅助操作
  • Tab 键:自动补齐或者列出符合开头的命令
  • 反斜杠"\":强制换行和转义
  • 快捷键 Ctrl+u:从光标处清空至行首
  • 快捷键 Ctrl+k:从光标处清空至行尾
  • 快捷键 Ctrl+Y:黏贴刚才所删除(剪切)的字符
  • 快捷键 Ctrl+a:快速跳转至行首
  • 快捷键 Ctrl+e:快速跳转至行尾
  • 快捷键 Ctrl+l:清屏等同于clear命令
  • 快捷键 Ctrl+c:取消本次命令编辑
  • 快捷键 Ctrl+r:搜索历史命令
  • 快捷键 Ctrl+D:从shell提示中注销关闭,类似输入exit
  • 快捷键 Ctrl+Z:转入后台运行
  • 快捷键 Ctrl+R:在历史命令中查找(常用并且很好用)
 
通过type命令查看命令类型

[root@localhost ~]# type cd
cd is a shell builtin 内部命令
[root@localhost ~]# type mkdir
mkdir is /usr/bin/mkdir 外部命令

 
内部命令 help
查看shell内部命令的帮助信息
[root@localhost ~]# help cd
[root@localhost ~]# help #列出所有的内部命令
 
命令的“--help”选项
适用于大多数外部命令
[root@localhost ~]# mkdir --help
[root@localhost ~]# find --help
使用 man 命令阅读手册页
适用于大多数外部命令
翻屏:
向后翻一屏:SPACE PgDn
向前翻一屏:b PgUp
向后翻一行:ENTER 下键
向前翻一行:k 上键
 
查找:
/KEYWORD: 向后
n: 下一个
N:前一个
 
?KEYWORD:向前
n: 下一个
N:前一个
qQ: 退出
 
按 Q 或 q 键退出阅读环境、按“/” 键从上往下查找内容(“?”从下往上查找)n表示下一个,N表示上一个
 
man 7 man
1:用户命令(user command)(/bin, /usr/bin, /usr/local/bin)
2:系统调用(system calls)
3:库用户(library calls)
4:特殊文件(设备文件)(special files)
5:文件格式与协议(配置文件的语法)(file formats and conventions)
6:游戏(games)
7:公约和杂项(conventions and Miscellaneous)
8:管理命令(system management commands)(/sbin, /usr/sbin, /usr/local/sbin)
9:内核程序(kernel routines)
 
[root@localhost ~]# man mkdir #等同于man 1 mkdir
[root@localhost ~]# man 5 passwd #查看passwd文件的帮助信息
 
使用 info 命令查看帮助
适用于大多数外部命令
[root@localhost ~]# info mkdir
 
用法:ls [选项]... [文件]...
List 显示目录下文件的详细信息,默认的操作目录为当前目录
  • -l:以长格式(Long)显示文件和目录的列表
  • -a:显示所有(All)子目录和文件的信息
  • -A:与-a选项的作用基本类似,但有两个特殊隐藏目录不会显示,“.”和“..”
  • -d:显示目录(Directory)本身的属性,而不是显示目录中的内容
  • -h:以更人性化(Human)的方式显示出目录或文件的大小,此选项需要结合-l选项一起使用
  • -R:以递归(Recursive)的方式显示指定目录及其子目录中的所有内容
  • --color=auto 使用色彩来区分文件类型的功能
 
 

[root@localhost ~]# ls
anaconda-ks.cfg epel-release-latest-7.noarch.rpm initial-setup-ks.cfg 公共 模板 视频 图片 文档 下载 音乐 桌面

[root@localhost ~]# ls -l
总用量 24
-rw-------. 1 root root 1847 5月 24 2018 anaconda-ks.cfg
-rw-r--r--. 1 root root 15080 10月 3 2017 epel-release-latest-7.noarch.rpm
-rw-r--r--. 1 root root 1904 5月 25 2018 initial-setup-ks.cfg
drwxr-xr-x. 2 root root 6 5月 25 2018 公共
drwxr-xr-x. 2 root root 6 5月 25 2018 模板
drwxr-xr-x. 2 root root 6 5月 25 2018 视频
drwxr-xr-x. 2 root root 6 5月 25 2018 图片
drwxr-xr-x. 2 root root 6 5月 25 2018 文档
drwxr-xr-x. 2 root root 6 5月 25 2018 下载
drwxr-xr-x. 2 root root 6 5月 25 2018 音乐
drwxr-xr-x. 2 root root 6 5月 25 2018 桌面

[root@localhost ~]# ls /boot/
config-3.10.0-862.el7.x86_64 grub2 symvers-3.10.0-862.el7.x86_64.gz vmlinuz-3.10.0-862.el7.x86_64
efi initramfs-0-rescue-78f0a89850f04bd595a5a80c50d5d223.img System.map-3.10.0-862.el7.x86_64
grub initramfs-3.10.0-862.el7.x86_64.img vmlinuz-0-rescue-78f0a89850f04bd595a5a80c50d5d223

用法:du [选项]... [文件]...
disk usage 用于统计指定目录(或文件)所占用磁盘空间的大小,du命令常用的几个选项如下:
  • -a:统计磁盘空间占用时包括所有的文件,而不仅仅只统计目录
  • -h:以更人性化的方式(默认以KB计数,但不显示单位)显示出统计结果
  • -s:只统计所占用空间总的(Summary)大小,而不是统计每个子目录、文件的大小
 
[root@localhost ~]# du -sh /boot/grub
4.0K /boot/grub
[root@localhost ~]# du -ah /boot/grub
4.0K /boot/grub/splash.xpm.gz
4.0K /boot/grub
 
用法:touch [选项]... 文件...
如果文件已存在,更新文件的访问时间和修改时间;若文件未存在,则创建会创建新的空文件
  • -a 只更改访问时间
  • -c, --no-create 不创建任何文件
  • -d, --date=字符串 使用指定字符串表示时间而非当前时间
  • -m 只更改修改时间

[root@localhost ~]# ls -l anaconda-ks.cfg
-rw-------. 1 root root 1847 5月 24 2018 anaconda-ks.cfg
[root@localhost ~]# touch anaconda-ks.cfg
[root@localhost ~]# ls -l anaconda-ks.cfg
-rw-------. 1 root root 1847 12月 12 14:03 anaconda-ks.cfg

[root@localhost ~]# touch test.txt
[root@localhost ~]# ls -l test.txt
-rw-r--r-- 1 root root 0 12月 12 14:04 test.txt

[root@localhost ~]# date
2018年 12月 12日 星期三 14:37:46 CST
[root@localhost ~]# date -s "2018-12-12 15:00:00"
2018年 12月 12日 星期三 15:00:00 CST
[root@localhost ~]# date
2018年 12月 12日 星期三 15:00:00 CST

 
用法:mkdir [选项]... 目录...
make directory 创建新的目录文件
  • -p 嵌套创建多层目录
  • -v 显示详细
  • -m 跳出当前的umask值

[root@localhost ~]# ls ./
anaconda-ks.cfg epel-release-latest-7.noarch.rpm initial-setup-ks.cfg test.txt 公共 模板 视频 图片 文档 下载 音乐 桌面
[root@localhost ~]# mkdir aa bb cc
[root@localhost ~]# ls
aa anaconda-ks.cfg bb cc epel-release-latest-7.noarch.rpm initial-setup-ks.cfg test.txt 公共 模板 视频 图片 文档 下载 音乐 桌面

[root@localhost ~]# mkdir 11/22/33 -p
[root@localhost ~]# ls -R 11
11:
22

11/22:
33

11/22/33:

 
用法:cp [选项]... 源文件... 目录
copy 将需要复制的文件或目录(源)重建一份,并保存为新的文件或目录
  • -f 覆盖目标同名文件或目录时不进行提醒,直接强制复制
  • -i 覆盖目标同名文件或目录时提醒用户确认
  • -r 复制目录时必须使用此选项,表示递归复制所有文件及子目录
  • -p 复制时保持源文件的权限、属主及时间标记等属性不变
 
注意:系统中默认设置了cp别名
 
[root@localhost ~]# alias cp
alias cp='cp -i'
 
 
[root@localhost ~]# cp test.txt /tmp/
[root@localhost ~]# cp -r 11 /tmp/
[root@localhost ~]# ls -l /tmp/{11,test.txt}
-rw-r--r-- 1 root root  0 12月 12 14:12 /tmp/test.txt
 
/tmp/11:
总用量 0
drwxr-xr-x 3 root root 16 12月 12 14:12 22
 
复制时覆盖目标文件的方式:
[root@localhost ~]# \cp -r 11 /tmp/
[root@localhost ~]# /bin/cp -r 11 /tmp/
[root@localhost ~]# yes|cp -r 11 /tmp/
 
用法:rm [选项]... 文件...
remove 删除指定的文件或目录
  • -f 删除文件或目录时不进行提醒,直接强制删除(非常危险的选项)
  • -i 删除文件或目录时提醒用户确认
  • -r 删除目录时必须使用此选项,表示递归删除所有文件及子目录
注意:系统中默认设置了rm别名
 
[root@localhost ~]# alias rm alias rm='rm -i'
[root@localhost ~]# rm -f test.txt
[root@localhost ~]# rm -rf aa bb
 
mv [选项]... 源文件... 目录
move 将指定的文件或目录转移位置 如果目标位置与源位置相同,则相当于执行重命名操作
  • -f, --force 覆盖前不询问
  • -i, --interactive 覆盖前询问
  • -n, --no-clobber 不覆盖已存在文件
如果您指定了-i、-f、-n 中的多个,仅最后一个生效。
注意:系统中默认设置了rm别名
 
[root@localhost ~]# mv 11 one
[root@localhost ~]# mv one /tmp/first
 
which 查看命令程序文件路径
搜索范围由环境变量 PATH 的值决定(echo $PATH)
  • -a 查询是遍历PATH值中的所有目录
 
[root@localhost ~]# echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[root@localhost ~]# which mkdir
/usr/bin/mkdir
 
用法:find [查找范围] [查找条件表达式]
采用递归方式,根据目标的名称、类型、大小等不同属性进行精细查找
  • -name 根据目标文件的名称进行查找,允许使用“*”及“?”通配符
  • -size 根据目标文件的大小进行查找、 一般使用“+”、“-”号设置超过或小于指定的大小作为查找条件、常用的容量单位包括 kB(注意 k 是小写)、MB、GB
  • -type 根据文件是否属于目标用户进行查找
  • -user 根据文件的类型进行查找、文件类型包括普通文件(f)、目录(d)、块设备文件(b)、字符设备文件(c)链接文件(l)、管道文件(p)、套接字文件(s:socket)等、块设备是指成块读取数据的设备(如硬盘、内存等),字符设备是指按单个字符读取数据的设备(如键盘、鼠标等)
  • 各表达式之间使用逻辑运算符 “-a”表示 而且(and) “-o”表示 或者(or)
 
通配符
* 代表任意长度任意字符
? 代表一个任意字符
 
[root@localhost ~]# find /boot -name "vmlinuz*"
/boot/vmlinuz-3.10.0-862.el7.x86_64
/boot/vmlinuz-0-rescue-78f0a89850f04bd595a5a80c50d5d223
[root@localhost ~]# find /boot -name "vmlinuz*" -a -size +1M
/boot/vmlinuz-3.10.0-862.el7.x86_64
/boot/vmlinuz-0-rescue-78f0a89850f04bd595a5a80c50d5d223
[root@localhost ~]# find /boot -name "vmlinuz*" -o -size +1M

猜你喜欢

转载自www.cnblogs.com/crushlinux/p/10121970.html