8-23 linux文件管理常用命令和Bash特性
一、Linux目录配置标准和文件类型
1、Linux 目录配置标准FHS(Filesystem Hierarchy Standard)
FHS:
/boot: 引导文件存放目录,例如kernel(vmlinuz)、bootloader(grub, grub2);
/bin: binary,供用户使用的基本的命令;OS启动即会用到程序;
/sbin:管理类的基本命令;
/lib: 基本共享库;内核模块;
/lib64:x86_64系统的共享库;
/etc:配置文件目录;
/home/USERNAME: 普通用主目录的默认位置;
/root: 管理员的主目录;
/media:便携式移动设备;
/mnt:临时文件系统挂载点;
/opt: 可选目录,第三方应用程序的默认安装位置;
/dev:devices,设备文件
b:block devices,random access
c: character deivces,linear access
/proc:
伪文件系统;用于输出内核与进程的相关信息;
/sys:
伪文件系统;
/srv:services,系统上运行服务用到中间数据;
/tmp:临时文件目录;
/usr:Universal Shared, Read-only data;
bin:保证系统提供基本功能;
sbin
lib
lib64
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
spool:应用程序的数据池;
run:运行中的进程的相关数据;通常用守护进程的pid文件;
/selinux
2、Linux的文件类型:
-(f):普通文件
d: 目录文件
b: 块设备文件
c: 字符设备文件
l: 符号链接文件
p: 命名管道文件
s:套接字文件
二、Bash的基础特性(1)
1、history
预设保存命令条数:HISTSIZE=1000
持久保存位置:~/.bash_history
用法:history N:显示最近的N个
例:
history -c:清空命令历史中的命令
history -d OFFSET:删除指定位置的命令
history –a /PATH/TO/SOMEFILE:保存当前命令历史中缓冲区的命令至指定文件
调用此前执行过的命令
!#:再次执行命令历史中第#条命令
!!:再次执行上一条
!STRING:再次执行命令历史中最近一次以STRING开头命令
2、命令补全功能:TAB
3、命令执行状态回值
命令执行成功与否的状态,由bash自己追踪:保存在特殊变量“#?”中;
0:成功 1-255:失败
例:
4、命令行展开
~:自动展开为当前用户的主目录
~ USERNAME:自动展开为指定用户的家目录
{}:使用花括号中内容可依次展开
例: /tmp/{x,y,z} 展开后为/tmp/x /tmp/y /tmp/z
/tmp/{x,y}/{m,n} 展开后为tmp/x/m /tmp/x/n /tmp/y/m /tmp/y/n
5、命令别名和命令引用
可用alias命令查看目前定义的别名
例:
命令别名的定义方式:alias ALIAS=’command’
取消命令别名:unalias
例:
特性:命令别名设置只对当前进程有效,重启后恢复
命令别名和命令相同时,可使用\command,调用命令本身
三、Bash的基础特性(02)
1、文件名通配符(globbing)
文件名可用通配符
*:匹配任意长度的任意字符
例:p*d表示pad,ipad,pd等
?:匹配任意单个字符
[ ]:字符范围,匹配指定字符集合中的任意单个字符
例:[a-z]表示任意单个字母 [0-9]表示任意单个数字 [a-z0-9]表示任意单个字母或数字
[^ ]:字符范围,匹配指定字符集合中的任意单个字符
字符集合表示方式
[:lower:]:所有的小写字母
[:upper:]:所有的大写字母
[:alpha:]:所有的字母
[:alnum:]:所有的数字和字母
[:punct:]:所有标点符号
[:space:]:所有的空白字符
[^[:lower:]]:取反
练习:
显示/etc/目录下,以非字母开头,后面跟了一具字母及其它任意长度任意字符的文件或目录;
2、组合键
Ctrl+l:清屏
Ctrl+a: 切换至命令行首
Ctrl+e:切换至命令行尾
Ctrl+c:取消命令执行
Ctrl+u:删除光标所在处至行首的内容;
Ctrl+k: 删除光标所在处至行尾的内容;
3、IO重定向和管道
程序:指令+数据
读入数据:Input
输出数据:Output
打开的文件都一个fd:file descriptor
标准输入:keyboard, 0, /dev/stdin
标准输出:monitor, 1, /dev/stdout
标准错误输出:monitor, 2, /dev/stderr
I/O重定向:
输入重定向
输出重定向:
COMMAND > NEW_POS, COMMAND >> NEW_POS
>:覆盖重定向;
>>:追加重定向;
set -C
如果覆盖重定向目标文件存在,则禁止执行;
>|
set +C
错误重定向:
2>:覆盖
2>>:追加
同时重定向标准输出流和错误输出流:
COMMAND > /path/to/file.out 2> /path/to/file.err
COMMAND > /path/to/file.out 2>&1
COMMAND &> /path/to/file.out
输入重定向:
<
tr命令:
tr [OPTION]... SET1 [SET2]
-d: 删除字符
Here Document:<<
cat >> /path/to/somefile << EOF
管道:
COMMAND1 | COMMAND2 | ..
四、目录管理类命令:
mkdir, rmdir, tree, dirname, basename
(1) mkdir
mkdir [OPTION] /PATH/TO/SOMEWHERE
-p:创建父目录
-v: 显示创建过程
练习:
如何创建目录:x_m, x_n, y_m, y_n?
(2) rmdir
rmdir /PATH/TO/SOMEWHERE
删除空目录;
(3) tree
tree [OPTION]... [DIR]
-d:只层级目录类型的文件;
-L level: 只显示几个层级;
五、文本文件查看命令:
cat, tac, more, less, tail, head
more, less
翻屏查看;
more [OPTIONS]... FILE...
-d: 显示翻页有退出提示
Space: 向后一屏;
Enter: 向后一行;
b: 向前一屏;
less [OPTION]... FILE...
文本搜索:
/KEYWORD
?KEYWORD
n: 与命令方向相同的下一个;
N:与命令方向相反的前一个;
head和tail:
head [OPTION]... FILE
tail [OPTION]... FILE
-n #
-#
-c #: 显示前/后#个字节
tail的专用选项:
-f: follow
时间戳管理工具:touch
每个文件都有三个时间戳:
atime: 文件最近一次被访问的时间;
mtime: 文件最近一次被“修改”的时间;
ctime:文件最近一次被“改变”的时间;
文件数据:
metadata
data
touch [OPTION]... FILE...
更新时间戳至当前时间;
-a: 只更新atime
-m: 只更新mtime
-t STAMP:
[[CC]YY]MMDDhhmm[.ss]
-c: 不创建空文件
六、文件管理命令:
cp, mv, rm
复制命令:cp, copy
cp [OPTION]... [-T] SOURCE DEST
cp [OPTION]... SOURCE... DIRECTORY
cp [OPTION]... -t DIRECTORY SOURCE...
cp SRC DEST:
SRC是文件:
如果DEST不存在:新建目标文件,并将SRC复制到目标文件;
如果DEST存在:
如果DEST是文件:用SRC的内容覆盖至DEST文件中;
如果DEST是目录:在DEST目录中新一个与原文件同名的文件,将将SRC内容复制到新建的同名的目标文件中;
cp SRC... DEST:
如果DEST不存在:
是错误的;
如果DEST存在:
如果DEST是文件:错误;
如果DEST是目录:
常用选项:
-r, -R: 递归复制;
-d: 不跟踪符号链接;
--preserve[=ATTR_LIST]:
mode, ownership, timestamps
context, links, xattr, all
-a: -dR --preseve=all
-i: interactive
-f: force
-v: 显示过程
mv: move, 移动文件
mv [OPTION]... [-T] SOURCE DEST
mv [OPTION]... SOURCE... DIRECTORY
mv [OPTION]... -t DIRECTORY SOURCE...
常用选项:
-i:交互式
-f:强制
rm: remove
rm [OPTION]... FILE...
只删除文件;
常用选项:
-r:
-f:
-i:
文本编辑器:
nano
七、文件处理工具:
wc:word counts
wc [OPTION]... FILE...
-l: 显示行数
-w: 显示单词数
cut:
cut OPTION... [FILE]...
-d: 指明分隔符;-d‘ ‘, -d:
-f:指明要显示的字段
#:
#-#:1-3
#,#: 1,3,7
sort命令:排序
sort [OPTION]... [FILE]...
-r: 逆序
-f: 忽略字符大小写
-u: 排序后去重
-t CHAR: 指明分隔符
-k #: 字段
-n: 表示以数值大小排序
uniq命令:
uniq [OPTION]... [FILE]...
-c: 显示每行重复的次数;
-d: 只显示重复过的行;
-u: 只显示不曾重复的行;