pwd:显示当前工作目录
每个shell 和系统进程都有一个当前的工作目录
CWD:current work directory
显示当前shell当前工作目录
#pwd: printing working directory
$PWD:保存了当前工作目录
$OLDPWD:保存上一次所在工作目录
PWD=/PATH/TO/DIR 可以切换当前工作目录
-P 显示真实物理的路径
centos7:
#cd /bin
#pwd -P 显示的是/usr/bin而不是/bin目录,因为/bin是链接指向/usr/bin的
cd:改变目录
路径可为绝对或相对路径
cd /home/joshua/work
cd project/docs
cd ..: 到当前目录的上一级目录
cd: 回到你的家目录
cd -: 到上一次的工作目录
存储当前工作目录和上一次工作目录的相关环境变量
PWD:保存了当前目录路径
OLDPWD:上一次所在目录路径
ls: 列出当前目录的内容或指定目录
ls [options] [files_or_dirs]
Example:
-a 显示所有文件包含隐藏文件
-A 显示除去.和..之外的所有文件
-l --long 显示文件的详细信息
-R 递归显示目录下的所有文件
-d 查看目录自身而非目录内的文件
-1 把显示的文件以每个文件一行的方式显示
–S 按文件的size大小从大到小排序文件
–u 配合-t选项,按atime时间从新到旧排序的排列文件
ls常用指令:ls -ld,ls -l
stat:查看文件时间戳
文件的两个属性:
metadata(元数据)文件的大小,类型,属主属组,atime mtime 时间
data(数据)文件的内部内容
三个时间戳:
access time:访问时间,读取文件内容时被修改
modify time: 修改时间,改变文件内容(数据)被修改
change time: 改变时间, 改变了文件的元数据时被修改
atime 比 mtime 时间更新时,则读取文件是 atime 时间不会被修改,atime 时间更新的条件
atime 是1天以前的时间,则读取的时候会被修改
atime 比 mtime 时间更老
touch:创建空文件和刷新时间戳
touch [OPTION]... FILE...
-a: 仅改变 atime 时间
-m: 仅改变 mtime 时间
-c: 如果文件不存在,则不予创建
-t:STAMP 手动设置时间戳
[[CC]YY]MMDDhhmm[.ss]
如何创建一个空文件
#touch FILE
#> FILE 可以创建一个空文件,但如果文件存在,会把文件覆盖成空文件
#>> FILE 可以创建一个空文件,文件存在不会覆盖文件
文件通配符
* 匹配零个或多个字符
? 匹配任何单个字符
~ 当前用户家目录
~username 用户家目录
~+ 当前工作目录
~- 前一个工作目录
[0-9] 匹配一个数字范围
[a-z] :大写和小写字母 匹配的是aAbBcC----zZ
[wxc] 匹配列表中的任何的一个字符
[^wxc] 匹配列表中的所有字符以外的字符
预定义的字符类:#man 7 glob
[[:digit:]]:任意一个数字,相当于0-9
[[:lower:]]:任意小写字母
[[:upper:]]: 任意大写字母
[[:alpha:]]: 任意大小写字母
[[:alnum:]]:任意数字或字母
[[:space:]]:空格
[[:punct:]]:标点符号
练习:
1、显示/var 目录下所有以l 开头,以一个小写字母结尾,且中间出现至少一位数字的文件或目录
2、显示/etc 目录下以任意一位数字开头,且以非数字结尾的文件或目录
3、显示/etc/ 目录下以非字母开头,后面跟了一个字母及其它任意长度任意字符的文件或目录
4、显示/etc 目录下所有以m 开头以非数字结尾的目录
5、显示/etc 目录下,所有以.d 结尾的目录
6、显示/etc 目录下,所有.conf 结尾,且以m,n,r,p 开头的目录
alias:命令别名
显示当前shell进程所有可用的命令别名
#alias
定义别名NAME,在命令行中定义的别名,仅对当前shell进程有效
#alias NAME='VALUE'
如果想永久有效,要定义在配置文件中
仅对当前用户:~/.bashrc
对所有用户有效:/etc/bashrc
编辑配置文件后不会立即生效,想要配置文件生效;
1):断掉当前终端在重新登陆
2):bash进程重新读取配置文件:
a:source /path/to/config_file
b:. /path/to/config_file
撤消别名:unalias,仅对当前shell生效,重启后无效
unalias [-a] name [name ...]
-a 撤销所有别名
如果别名同原命令同名,要执行原命令可使用
"\COMMAND"
'COMMAND'
/PATH/COMMAND: 给全命令路径
cp:复制文件和目录
cp [OPTION]... [-T] SOURCE DEST
cp [OPTION]... SOURCE... DIRECTORY
cp [OPTION]... -t DIRECTORY SOURCE...
cp SRC DEST
单源复制:cp [OPTION]... [-T] SOURCE DEST
如果目标不存在:新建DEST,并将SRC中内容填充至DEST中
如果目标存在:
如果DEST是文件:将SRC中的内容覆盖至DEST中
如果DEST是目录:在DEST下新建与原文件同名的文件,并将SRC中内容填充至新文件中
多源复制:cp [OPTION]... SOURCE... DIRECTORY
cp [OPTION]... -t DIRECTORY SOURCE...
如果目标不存在:报错
如果目标存在:
如果DEST非目录:报错
如果DEST是目录:分别复制每个文件至目标文件中,并保持原名
源为目录:(必须使用-r选项)
如果目标不存在:新建DEST目录,并将SRC中内容填充至DEST中,保持原名
如果目标存在:
如果DEST非目录:报错
如果DEST是目录:在DEST下新建与原目录同名的目录,并把数据复制到新的同名目录下
cp 常用选项
-i:交互式
-r, -R: 递归复制目录及内部的所有内容;
-a: 归档(相当于备份),相当于-dR --preserv=all
-d:--no-dereference --preserv=links 不复制链接指向的文件内容,只复制链接
--preserv[=ATTR_LIST]
ATTR_LIST(属性):
mode: 权限
ownership: 属主属组
timestamp: 时间戳
links:链接
xattr:扩展属性
context:安全标签
all:上述所以属性
-p: 等同--preserv=mode,ownership,timestamp
-v: --verbose
-f: --force 强制覆盖
练习:
1 、使用别名命令,每日将/etc/ 目录下所有文件,备份到/testdir/ 下独立的新目录下,并要求新目录为 格式为 backupYYYY-mm-dd ,备份过程可见
[root@CentOS6 ~]# alias cpetc='cp -rv /etc/ /testdir/backup$(date +%F)'
[root@CentOS6 ~]# cpetc
2 、先创建/testdir/rootdir 目录,再复制/root 所有下文件到该目录内,并要求保留原有权限
[root@CentOS6 ~]# cp -r /root/ /testdir/rootdir
mv:移动和重命名文件
mv [OPTION]... [-T] SOURCE DEST
mv [OPTION]... SOURCE... DIRECTORY
mv [OPTION]... -t DIRECTORY SOURCE...
常用选项:
-i: 交互式
-f: 强制覆盖
用法同cp指令
rm:删除
rm [OPTION]... FILE...
-i: 交互式
-f: 强制删除
-r: 递归
[root@CentOS6 ~]# rm -rf / 删除根和下所有文件,centos6,7默认不允许执行该命令
[root@CentOS6 ~]# rm -rf /* 删除根下所有文件,该命令可以执行,请勿轻易尝试
dd if=/dev/zero of=/boot/f1 bs=1M count=40
从/dev/zero 设备读取数据传送到/boot/f1文件中,一次读1M,共读40次
在释放磁盘空间的时候如果有用户在打开f1文件,则有可能删除f1文件失败,磁盘不能释放磁盘空间
释放磁盘空间的方法:
#> /dir/file 先用重定向把文件清零
#rm -rf /dir/file 在用rm指令删除命令
tree:显示目录树
-d: 只显示目录
-L level:指定显示的层级数目,1只显示1层,3只显示3层
-P pattern: 只显示由指定pattern匹配到的路径
mkdir:创建目录
-p: 若创建目录的路径上有不存的目录则不报错,且可自动创建所有不存在的目录;
-v: 显示创建过程的详细信息
-m MODE: 创建目录时直接指定权限;
(1) 如何创建/testdir/dir1/x, /testdir/dir1/y,
/testdir/dir1/x/a, /testdir/dir1/x/b,
/testdir/dir1/y/a, /testdir/dir1/y/b
#mkdir -pv /testdir/dir1/{x,y}/{a,b}
(2) 如何创建/testdir/dir2/x, /testdir/dir2/y,
/testdir/dir2/x/a, /testdir/dir2/x/b
#mkdir -pv /testdir/dir2/{x/{a,b},y}
(3) 如何创建/testdir/dir3, /testdir/dir4, /testdir/dir5,
/testdir/dir5/dir3, /testdir/dir5/dir4
#mkdir -pv /testdir/dir{3,4,5/dir{3,4}}
rmdir:删除空目录
-p: 递归删除目录,删除当前目录后若父目录为空目录则一并删除,删除父目录后,父目录的父目录不是空目录,则不删除,否则一并删除
-v: 显示详细信息