此篇文章摘抄自老师讲课笔记。
绝对路径:/
根文件系统:rootfs
文件系统挂载:
LSB:FHS(文件系统层级结构标准)
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程序的头文件;headerfiles
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
Linux的文件类型:
-(f):普通文件
d:目录文件
b:块设备文件
c:字符设备文件
l:符号链接文件
p:命名管道文件
s:套接字文件
bash的基础特性(1)
(1)命令历史
bash会记录此前用户在shell会话中执行的命令于缓冲区中;正常退出时,会被记录于当前用户家目录下隐藏文件.bash_history中;
环境变量:
HISTSIZE:命令历史记录的条数;
HISTFILE:命令历史文件路径;
HISTFILESIZE:
history命令:
-c:清空命令历史;
-d#: 删除历史中指定的命令;
-a:当缓冲区中的历史手动追加文件;
history#: 显示最近的多少条命令;
调用过去执行过的命令:
!#:调用历史中的第#条命令;
!!:重复执行上一条命令
!string:调用历史中最近一个以string开头的命令;
调用过去执行过的命令的最后一个参数:
!$:
ESC,.
Alt+.
(2)命令补全
bash内建命令
外部命令
命令搜索机制:
PATH环境变量:由冒号分隔的路径
hash:把此前搜索到路径缓存到内存中;
kv:key-value
ls--> /bin/ls
命令补全:
(3)路径补全
把用户给出的路径字符串当前路径起始,并在其指定的上级目录下搜索以指定的字符串开头的文件名;
如果惟一:直接补全;
否则:两次Tab,可列出;
(4)命令行展开的功能
~:展开为当前用户的主目录;
~USERNAME:展开为指定用户的家目录;
{}:可承载一个以逗号分隔的列表,并其展开为多个路径;
/var/{log,cache,run}= /var/log /var/cache /var/run
(5)命令的执行结果状态,由bash追踪和保存
成功:0
失败:1-255
bash使用特殊变量$?保存最近一条命令的状态结果;
程序的执行结果有两种:
程序的返回值;
程序的状态结果;
(6)命令别名
命令的另一个引用符号,由bash程序维护;
alias/unalias
alias:查看所有已经定义别名;
aliasNAME=COMMAND:定义别名;
如果别名同原命令名,想直接执行原命令,则需使用\COMMAND
unaliasNAME: 撤消别名;
目录管理类命令:
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:只层级目录类型的文件;
-Llevel: 只显示几个层级;
文本文件查看命令:
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
-tSTAMP:
[[CC]YY]MMDDhhmm[.ss]
-c:不创建空文件
文件管理命令:
cp,mv, rm
复制命令:cp, copy
cp[OPTION]... [-T] SOURCE DEST
cp [OPTION]... SOURCE... DIRECTORY
cp [OPTION]... -t DIRECTORYSOURCE...
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
bash的基础特性(02)
(1)glob
文本名“通配”
*:匹配任意长度的任意字符;
?:匹配任意单个字符;
a*b:aab, ab, a123b;
a?b:
[]:匹配指定范围内的任意单个字符;
[0-9]
[^]:匹配范围外的任意单个字符;
[^a-b]
字符集合:
[:lower:]
[:upper:]
[:alnum:]
[:digit:]
[:space:]
[:punct:]
[:alnum:]
练习:
显示/etc/目录下,以非字母开头,后面跟了一具字母及其它任意长度任意字符的文件或目录;
复制/etc目录下,所有以.d结尾的文件或目录至/tmp/mageedu.com目录中;
(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:删除字符
HereDocument:<<
cat>> /path/to/somefile << EOF
管道:
COMMAND1| COMMAND2 | ...
练习:tee命令的用法;
文件处理工具:
wc,cut, sort, uniq
wc:word counts
wc[OPTION]... FILE...
-l:显示行数
-w:显示单词数
cut:
cutOPTION... [FILE]...
-d:指明分隔符;-d'', -d:
-f:指明要显示的字段
#:
#-#:1-3
#,#:1,3,7
sort命令:排序
sort[OPTION]... [FILE]...
-r:逆序
-f:忽略字符大小写
-u:排序后去重
-tCHAR: 指明分隔符
-k#: 字段
-n:表示以数值大小排序
uniq命令:
uniq[OPTION]... [FILE]...
-c:显示每行重复的次数;
-d:只显示重复过的行;
-u:只显示不曾重复的行;