显示用法总结和参数列表
使用的大多数,但并非所有的
示例:
date–help
Usage:date[OPTION]…[+FORMAT]or: date[-u|–utc|–universal][MMDDhhmm[[CC]YY][.ss]]
[]表示可选项
CAPS或<>表示变化的数据
…表示一个列表
x |y| z的意思是“x或y或z“
-abc的意思是-a -b –c
{ } 表示分组
man命令的操作方法:
使用less命令实现
space, ^v, ^f, ^F: 向文件尾翻屏
b, ^b: 向文件首部翻屏
d, ^d: 向文件尾部翻半屏
u, ^u: 向文件首部翻半屏
RETURN, ^N, e, ^E or j or ^J: 向文件尾部翻一行
y or ^Y or ^P or k or ^K:向文件首部翻一行
q: 退出
#:跳转至第#行
1G: 回到文件首部
G:翻至文件尾部
/KEYWORD:
以KEYWORD指定的字符串为关键字,从当前位置向文件尾部搜索;
不区分字符大小写;
n: 下一个
N:上一个
KEYWORD:
以KEYWORD指定的字符串为关键字,从当前位置向文件首部搜索;不区分字符大小写;
n: 跟搜索命令同方向,下一个
N:跟搜索命令反方向,上一个
man常用于命令参考,GNU工具info适合通用文档参考
没有参数,列出所有的页面
info 页面的结构就像一个网站
每一页分为“节点”
链接节点之前*
info [命令]
方向键,PgUp,PgDn导航
Tab键移动到下一个链接
d 显示主题目录
Home 显示主题首部
Enter进入选定链接
n/p/u/l进入下/前/上一层/最后一个链接
s文字文本搜索
q退出info
文件名规则
boot 文件夹装的是引导文件
etc文件夹装的是各种设置,配置文件等,等价于注册表
home文件夹存放用户数据
bin(binary)二进制,装的是普通用户可执行的二进制程序
sbin是系统管理员常用的工具,tem文件夹装的是临时数据
var文件夹装的是可变内容,系统日志(/var/log内)等
proc(process)进程,正在内存中运行的程序,该文件夹不在硬盘上
mount /dev/硬盘号/ 挂载硬盘
Linux系统对大小写不敏感,常用的Linux文件系统(xfs;ext4)对大小写敏感
而Linux系统识别fat文件格式时对大小写不敏感
文件名最长255个字节
包括路径在内文件名称最长4095个字节
蓝色–>目录绿色–>可执行文件红色–>压缩文件浅蓝色–>链接文件灰色–>其他文件
除了斜杠和NUL,所有字符都有效.但使用特殊字符的目录名和文件不推荐使用,有些字符需要用引号来引用它们
标准Linux文件系统(如ext4),文件名称大小写敏感
例如:MAIL,Mail,mail, mAiL
/boot:引导文件存放目录,内核文件(vmlinuz)、引导加载器(bootloader, grub)都存放于此目录
/bin:供所有用户使用的基本命令;不能关联至独立分区,OS启动即会用到的程序
/sbin:管理类的基本命令;不能关联至独立分区,OS启动即会用到的程序
/lib:启动时程序依赖的基本共享库文件以及内核模块文件(/lib/modules)
/lib64:专用于x86_64系统上的辅助共享库文件存放位置
/etc:配置文件目录
/home/USERNAME:普通用户家目录
/root:管理员的家目录
/media:便携式移动设备挂载点
/mnt:临时文件系统挂载点
/dev:设备文件及特殊文件存储位置
b: block device,随机访问
c: character device,线性访问
/opt:第三方应用程序的安装位置
/srv:系统上运行的服务用到的数据
/tmp:临时文件存储位置
/usr: universal shared, read-only data
bin: 保证系统拥有完整功能而提供的应用程序
sbin:
lib:32位使用
lib64:只存在64位系统
include: C程序的头文件(header files)
share:结构化独立的数据,例如doc, man等
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相关的安全策略等信息的存储位置
ls -R 列出当前文件夹的目录及子目录(所以文件和目录)
ls -r 反转顺序
文件有三个时间属性,
修改时间mtime(modify time)
读取时间atime(access time)ll --time=atime 查询文件读取的时间
元数据的更改时间 ctime (change time)
stat +文件名 查询文件的三个时间
绝对路径:
以正斜杠开始
完整的文件的位置路径
可用于任何想指定一个文件名的时候
相对路径名
不以斜线开始
指定相对于当前工作目录或某目录的位置
可以作为一个简短的形式指定一个文件名
基名:basename +文件可以取文件的基名
目录名:dirname +文件可以取文件的目录名
列出当前目录的内容或指定目录
用法:ls [options] [files_or_dirs]
示例:
ls -a包含隐藏文件
ls -l显示额外的信息
ls -R目录递归通过
ls -ld目录和符号链接信息
ls -1 文件分行显示
ls –S 按从大到小排序
ls –t 按mtime排序
ls –u 配合-t选项,显示并按atime从新到旧排序
ls –U 按目录存放顺序显示
ls –X 按文件后缀排序
ls /var l{0...9}
ls /etc rc{0...6}*
.>boot/111 快速清空文件111
touch +文件名创建空文件,若该文件已存在,就刷新文件的时间
. >> +文件名 创建空文件,若存在,不刷新文件时间,追加,重定向
rename +conf conf.bak *.conf 可以批量修改多个后缀为conf的文件名字
或者-开头的文件,要创建或者删除是只需在或者-前加./就可以了
date 0921221392018直接改时间 (重点)
data +%w -d '-2 day'显示两天前是星期几
data +%F 显示年月日
data +'%F %T' 显示年月日和时间
data +%Y 显示年
data +%Y%M%D 显示年月日
whatis +命令 查询该命令作用=man -f
mandb 生成whatis数据库 centos6
makewhatis 生成whatis数据库 centos7
df查找sr0挂载光盘,若无挂载光盘则创建挂载点
df -h #查看光盘是否已挂载
mkdir /data/cdrom #新建挂载目录
mount /dev/sr0/data/cdrom #挂载光盘到目录,然后执行下一步
df #查找sr0挂载路径
rpm -ivh +挂载光盘目录(右键复制media),再输入工具首字母补全,回车安装
file content 文件内容
file metadata 文件元数据
inode number 文件节点
ls -i 查询文件节点编号
节点编号存放在/boot,节点编号用完后无法存放文件 (面试)
ls -di +文件夹 查询挂载节点位置
ls -di /data /boot / centos6 这三个节点为2 centos7上着三个节点为64
移动复制的区别(重点)原理层面
cp /dir1/f1 /dir2/f2
mv /dir1/f1 /dir2/f2
相对路径(重点) 硬链接和软链接的区别?
通俗来说:
硬链接:对一个文件,起多个文件名
软连接:原始文件一般路径用相对路劲,
1.是否是同一个文件 硬链接是同一个文件,软链接不上是同一个
2.是否跨分区
3.链接数增长?
4.inode number 是否相同?
5.原始文件删除,链接文件可否访问?
6.大小?
7.支持目录?
8.相对路径
节点表
例子:
ln -s ../../dev/zero d1/d2/zero-link
0输入
1输出
2错误
命令+ &> /dev/null 将输出结果直接扔进null(垃圾箱),不在屏幕显示
*匹配零个或多个字符
?匹配任何单个字符
~ 当前用户家目录
~mage 用户mage家目录
~+ 当前工作目录
~-前一个工作目录
[0-9]匹配数字范围
[a-z]:字母
[A-Z]:字母
[wang]匹配列表中的任何的一个字符
[^wang]匹配列表中的所有字符以外的字符
预定义的字符类:man 7 glob
[:digit:]:任意数字,相当于0-9
[:lower:]:任意小写字母
[:upper:]: 任意大写字母
[:alpha:]: 任意大小写字母
[:alnum:]:任意数字或字母
[:blank:]:水平空白字符
[:space:]:水平或垂直空白字符
[:punct:]:标点符号
[:print:]:可打印字符
[:cntrl:]:控制(非打印)字符
[:graph:]:图形字符
[:xdigit:]:十六进制字符
创建空文件和刷新时间
touch [OPTION]… FILE…
-a #仅改变atime和ctime
-m #仅改变mtime和ctime
-t [[CC]YY]MMDDhhmm[.ss] #指定atime和mtime的时间戳
-c #如果文件不存在,则不予创建
例子:
复制文件和目录cp (重点)
cp[OPTION]… [-T] SOURCE DEST
cp[OPTION]… SOURCE… DIRECTORY
cp[OPTION]… -t DIRECTORY SOURCE…
cpSRC DEST
SRC是文件:
如果目标不存在:新建DEST,并将SRC中内容填充至DEST中
如果目标存在:
如果DEST是文件:将SRC中的内容覆盖至DEST中
基于安全,建议为cp命令使用-i选项
如果DEST是目录:在DEST下新建与原文件同名的文件,并将SRC中内容填充至新文件中
cpSRC… DEST
SRC…:多个文件
DEST必须存在,且为目录,其它情形均会出错
cpSRC DEST
SRC是目录:此时使用选项:-r
如果DEST不存在:则创建指定目录,复制SRC目录中所有文件至DEST中
如果DEST存在:
如果DEST是文件:报错
如果DEST是目录:
cp
-i:覆盖前提示–n:不覆盖,注意两者顺序
-r, -R: 递归复制目录及内部的所有内容
-a: 归档,相当于-dR--preserv=all
-d:--no-dereference --preserv=links 不复制原文件,只复制链接名
--preserv[=ATTR_LIST]
mode: 权限
ownership: 属主属组
timestamp:
links
xattr
context
all
-p: 等同–preserv=mode,ownership,timestamp
-v: --verbose
-f: --force
-u:–update 只复制源比目标更新文件或目标不存在的文件
-b:目标存在,覆盖前先备份
–backup=numbered 目标存在,覆盖前先备份加数字后缀
快捷键
cp +文件路径/a文件名 文件路径/a新文件名 #将a文件复制到另一文件夹并改名
cp +r +a目录 +b目录 将a目录复制到b目录,成为b目录的子目录
cp -a 常用来备份,保留复制文件的所有属性
cp file1 file1.bak 将file1文件备份为file1.bak
等同于cp file1{,.bak}
mv +a文件 +b文件 将文件a改名为文件b
mv +a文件 +文件夹 移动a文件到文件夹
mv -t +文件夹+多个文件 把多个文件移动到目标文件夹
移动和重命名文件
mv [OPTION]... [-T] SOURCE DEST
mv [OPTION]... SOURCE... DIRECTORY
mv [OPTION]... -t DIRECTORY SOURCE...
常用选项:
mv
-i: 交互式
-f: 强制
-b: 目标存在,覆盖前先备份
删除
rm[OPTION]... FILE...
常用选项:
-i交互式
-f强制删除
-r递归
--no-preserve-root 删除/
示例:
rm-rf/ 慎用
目录操作
tree 显示目录树
-d: 只显示目录
-L level:指定显示的层级数目
-P pattern: 只显示由指定pattern匹配到的路径
mkdir
-p: 存在于不报错,且可自动创建所需的各目录
-v: 显示详细信息
-m MODE: 创建目录时直接指定权限
rmdir删除空目录
-p: 递归删除父空目录
-v: 显示详细信息
rm-r递归删除目录树
标准输入和输出
程序:指令+数据
读入数据:Input
输出数据:Output
打开的文件都有一个fd: file descriptor (文件描述符)
Linux给程序提供三种I/O设备
标准输入(STDIN)-0默认接受来自键盘的输入
标准输出(STDOUT)-1默认输出到终端窗口
标准错误(STDERR)-2默认输出到终端窗口
STDOUT和STDERR可以被重定向到文件
命令操作符号文件名
支持的操作符号包括:
_> 把STDOUT重定向到文件
2>把STDERR重定向到文件
&>把所有输出重定向到文件
_> 文件内容会被覆盖
set –C 禁止将内容覆盖已有文件,但可追加
_>| file 强制覆盖
set +C 允许覆盖
_>> 原有内容基础上,追加内容
2>覆盖重定向错误输出数据流
2>> 追加重定向错误输出数据流
标准输出和错误输出各自定向至不同位置
COMMAND > /path/to/file.out2> /path/to/error.out
合并标准输出和错误输出为同一个数据流进行重定向
&>覆盖重定向
&>> 追加重定向
COMMAND > /path/to/file.out2>&1 (顺序很重要)
COMMAND >> /path/to/file.out2>&1
():合并多个程序的STDOUT
(cal2007;cal2008)> all.txt
.> 覆盖
.>>追加不覆盖原文件内容
2>将错误信息重定向到文件中
1+到100 echo {1…100} | tr ’ ’ + |bc
命令(mail) << EOF 写一封信,直到输入EOF结束
rwx
r–4 读取权限
w–2 写入权限
x–1 执行权限
-rwxrwxrwx -为文件类型 777
-rw-rw-rw- 只有读写权限,没有执行权限666
$ chgrp +组+用户 将此用户改为此组
cat与tac相反
abcd dcba
head +命令 默认显示该文件的前十行
head -n +数字 显示文件的前几行
tail +f跟踪文件号,文件被删除就失效
tail +F跟踪文件名,文件被删除后再新建的同名文件继续跟踪
tr转换和删除字符
tr[OPTION]… SET1 [SET2]
选项:
tr
-c–C --complement:取字符集的补集
-d--delete:删除所有属于第一字符集的字符
-s--squeeze-repeats:把连续重复的字符以单独一个字符表示
-t--truncate-set1:将第一个字符集对应字符转化为第二字符集对应的字符
[:alnum:]:字母和数字
[:alpha:]:字母
[:cntrl:]:控制(非打印)字符
[:digit:]:数字
[:graph:]:图形字符
[:lower:]:小写字母
[:print:]:可打印字符
[:punct:]:标点符号
[:space:]:空白字符
[:upper:]:大写字母
[:xdigit:]:十六进制字符
使用<来重定向标准输入
某些命令能够接受从文件中导入的STDIN
tr‘a-z’‘A-Z’ 该命令会把/etc/issue中的小写字符都转换成写写字符
tr–d abc< /etc/fstab删除fstab文件中的所有abc中任意字符
cat > file
mage
wangxiaochun
按ctrl+d离开,可以使用文件来代替键盘的输入
Cat > filea< fileb
把多行发送给STDIN … (重点)(重点)练习
使用“<<终止词”命令从键盘把多行重导向给STDIN
直到终止词位置的所有文本都发送给STDIN
有时被称为就地文本(heretext)
例如:
'mail-s'PleaseCall'[email protected]<HiWang,
>
>Pleasegivemeacallwhenyougetin.Wemayneed
>todosomemaintenanceonserver1.
>
>Detailswhenyou'reon-site
>Zhang
>END
例子:
cat >f1 回车
aa
bb
cc
#回车一次输出aa,再回车,输出bb,再回车,输出cc,此为单行重定向
cat >f1 <aa
>bb
>cc
>b
以b结尾,输出:
aa
bb
cc #此为多行重定向
管道(使用符号“|”表示)用来连接命令
命令1 | 命令2 | 命令3 | …
将命令1的STDOUT发送给命令2的STDIN,命令2的STDOUT发送到命令3的STDIN
STDERR默认不能通过管道转发,可利用2>&1 或|& 实现
最后一个命令会在当前shell进程的子shell进程中执行用来
组合多种工具的功能
ls| tr‘a-z' ‘A-Z'
less :一页一页地查看输入
ls-l/etc|less
mail:通过电子邮件发送输入
echo'testemail'|mail-s 'test'[email protected]
lpr:把输入发送给打印机
echo’testprint’|lpr-Pprinter_name
示例:
将/home 里面的文件打包,但打包的数据不是记录到文件,而是传送到stdout,
经过管道后,将tar -cvf-/home 传送给后面的tar -xvf-,
后面的这个-则是取前一个命令的stdout,因此,就不需要使用临时file了
tar -cvf-/home | tar -xvf-