Shell命令进阶
通配符
通配符列表:
通配符 | 说明 |
---|---|
* | 任意字符 |
? | 任意单个字符 |
[characters] | 其中的任意一个字符 |
[!characters] | 不能是其中的任意一个字符 |
[[:class:]] | 指定分类中的任意一个字符 |
常用字符分类表:
字符分类 | 说明 |
---|---|
[:alnum:] | 字母和数字 |
[:alpha:] | 字母 |
[:digit:] | 数字 |
[:lower:] | 小写字母 |
[:upper:] | 大写字母 |
通配符示例:
模式 | 说明 |
---|---|
* | 任何文件 |
g* | 以g开头的任何文件 |
b*.txt | 任何以b开头以.txt结尾的文件 |
Data??? | 以Data开头后跟3个任意字符 |
[abc]* | 以a或者b或者c开头的任意文件 |
BACKUP.[0-9][0-9][0-9] |
以BACKUP.开头后跟3个数字 |
[[:upper:]]* | 任何以一个大写字母开头的文件 |
[![:digit:]]* | 任何不以数字开头的文件 |
*[[:lower:]123] | 任何以小写字母结尾或者以1,2,3任何一个数字结尾的文件 |
文件链接
ln-建立链接
ln-Create Links,用于建立硬链接或者符号链接(软链接)
命令格式:
ln file link
功能: 建立硬链接
命令格式:
ln -s item link
功能: 建立符号链接
硬链接与软链接原理
原理图:
硬链接
硬链接:通过文件数据块的inode(索引节点)号指向文件
- 默认情况下,每个文件都有一个硬链接,它就是这个文件的文件名
- 硬链接就是到某个文件的直接入口
- 一个文件只有一个inode,但可以有多个硬链接,同一个文件的硬连接保存的inode号是相同,也就是一个文件可以有多个入口,或者说一个文件有多个别名
- 每增加一个硬链接,inode节点对应的链接数就加1,每删除一个就减1,只有inode节点的链接数为0时,该文件才被系统回收
硬链接的限制:
- 不能跨文件系统建立硬链接,因为inode节点号可能相同
- 不能对目录建立硬链接,因为linux系统默认有两个特殊目录:(.)当前目录 (…)父目录,都是硬链接,如果对目录建立硬链接会形成访问循环
- 只能对已存在文件创建硬链接
软链接
软链接又称符号链接,为了克服硬链接的限制。
软链接类似于windows中的快捷方式
软链接将建立一个特殊类型的文件,在该文件内容是一个文件或者目录的指针
软链接特性:
- 可以对不存在的文件或者目录建立软链接
- 可以跨文件系统建立软链接
- 可以针对目录建立软链接
- 删除软链接不会删除原始文件
- 删除原始文件后,软连接指向失效,称为链接悬挂或者链接断开
- 建立软链接时尽量使用绝对路径
硬链接及软链接存在的原因
链接为 Linux 系统解决了文件的共享问题,还带来了隐藏文件路径、增加权限安全及节省存储等好处。
阶段练习
- 确认当前工作目录在登陆者home目录,并在该目录下建立playground目录,进入playground目录建立dir1及dir2两个子目录:
cd
mkdir playground
cd playground
mkdir dir1 dir2
- 拷贝文件
将/etc目录下的passwd文件拷贝到playground目录下
cp /etc/passwd .
查看当前目录:
ls -l
total 12
drwxrwxr-x 2 me me 4096 2012-01-10 16:40 dir1
drwxrwxr-x 2 me me 4096 2012-01-10 16:40 dir2
-rw-r--r-- 1 me me 1650 2012-01-10 16:07 passwd
使用-v选项:
cp -v /etc/passwd .
`/etc/passwd' -> `./passwd'
使用 -i选项
cp -i /etc/passwd .
cp: overwrite `./passwd'?
-
移动及重命名
重命名passwd文件为fun:
mv passwd fun
将fun移到dir1目录下:
mv fun dir1
继续移到dir2下:
mv dir1/fun dir2
继续移回当前文件夹:
mv dir2/fun .
- 建立硬链接
ln fun fun-hard
fun dir1/fun-hard
fun dir2/fun-hard
查看playground目录:
ls -l
total 16
drwxrwxr-x 2 me me 4096 2012-01-14 16:17 dir1
drwxrwxr-x 2 me me 4096 2012-01-14 16:17 dir2
-rw-r--r-- 4 me me 1650 2012-01-10 16:33 fun
-rw-r--r-- 4 me me 1650 2012-01-10 16:33 fun-hard
*注意查看fun以及fun-hard文件的第2个域是4,表明当前文件有4个硬链接(默认情况下文件名本身就是一个硬链接)
硬链接保存的inode是相同的,可以通过-i选项查看:
ls -li
total 16
12353539 drwxrwxr-x 2 me me 4096 2012-01-14 16:17 dir1
12353540 drwxrwxr-x 2 me me 4096 2012-01-14 16:17 dir2
12353538 -rw-r--r-- 4 me me 1650 2012-01-10 16:33 fun
12353538 -rw-r--r-- 4 me me 1650 2012-01-10 16:33 fun-hard
这里的第一个域就是inode号
-
建立软链接
软链接主要是为了克服硬链接的两个缺点:1)硬链接不能跨物理驱动器 2)硬链接不能指向目录
建立软链接:
ln -s fun fun-sym
ln -s ../fun dir1/fun-sym
ln -s ../fun dir2/fun-sym
注意:后两条命令使用的是相对路径,是目标文件相对于符号链接的位置(因此是…/)
查看dir1下的软链接:
ls -l dir1
total 4
-rw-r--r-- 4 me me 1650 2012-01-10 16:33 fun-hard
lrwxrwxrwx 1 me me 6 2012-01-15 15:17 fun-sym -> ../fun
注意:fun-sym这一行开始的l表明它是一个符号链接,实际指向的是…/fun,这里的第5个域表示文件长度为6,它不是原始文件的长度,而是字符串"…/fun"的长度,因为软链接的文件内容存储的是链接文件的引用位置。
可以使用绝对路径建立软链接:
ln -s /home/me/playground/fun dir1/fun-sym
指向目录的软链接:
ln -s dir1 dir1-sym
ls -l
total 16
drwxrwxr-x 2 me me 4096 2012-01-15 15:17 dir1
lrwxrwxrwx 1 me me 4 2012-01-16 14:45 dir1-sym -> dir1
drwxrwxr-x 2 me me 4096 2012-01-15 15:17 dir2
-rw-r--r-- 4 me me 1650 2012-01-10 16:33 fun
-rw-r--r-- 4 me me 1650 2012-01-10 16:33 fun-hard
lrwxrwxrwx 1 me me 3 2012-01-15 15:15 fun-sym -> fun
-
移除文件和目录
删除硬链接:
rm fun-hard
ls -l
total 12
drwxrwxr-x 2 me me 4096 2012-01-15 15:17 dir1
lrwxrwxrwx 1 me me 4 2012-01-16 14:45 dir1-sym -> dir1
drwxrwxr-x 2 me me 4096 2012-01-15 15:17 dir2
-rw-r--r-- 3 me me 1650 2012-01-10 16:33 fun
lrwxrwxrwx 1 me me 3 2012-01-15 15:15 fun-sym -> fun
fun-hard被删除,同时链接计数变为3
删除文件fun,并使用-i选项:
rm -i fun
rm: remove regular file `fun'?
输入y,文件被删除,使用ls -l查看,此时符号链接指向的文件由于不存在而变成断开或悬挂。对于大多数linux发行版会用特殊方式显示该符号链接已经断开
ls -l
total 8
drwxrwxr-x 2 me me 4096 2012-01-15 15:17 dir1
lrwxrwxrwx 1 me me 4 2012-01-16 14:45 dir1-sym -> dir1
drwxrwxr-x 2 me me 4096 2012-01-15 15:17 dir2
lrwxrwxrwx 1 me me 3 2012-01-15 15:15 fun-sym -> fun
如果使用less查看文件则显示相应信息:
less fun-sym
fun-sym: No such file or directory
清理断开的符号链接:
rm fun-sym dir1-sym
ls -l
total 8
drwxrwxr-x 2 me me 4096 2012-01-15 15:17 dir1
drwxrwxr-x 2 me me 4096 2012-01-15 15:17 dir2
注意:对符号链接的大多数操作都是针对链接的目标,而不是链接本身,但是rm是一个例外,当你删除链接时,仅是删除了链接而不是目标文件
-
删除playground目录
递归删除playground目录
cd
rm -r playground
查看磁盘可用空间
df:disk free space
df
查看可用内存
free:free memory
free
进程操作
ps:显示当进程,无参数则显示与当前会话关联的进程
可选参数:
-e:(everything)显示所有进程(包含不属于当前用户的进程)
-f:(full)完整格式列表
-u username:以username身份运行的进程
-p pid:显示指定进程id的进程
pstree:显示进程树
kill pid:杀死进程(kill -9 pid,-9是信号代码即终止的意思)
top:动态显示系统运行中的进程
命令实践
ps
ps -e
ps -f
ps -u root
pstree
ps -ef |head
ps -p 9
ps -p 1577
kill 1577
ps -p 1577
来源:CSDN
作者:luckybeggar
链接:https://blog.csdn.net/luckybeggar/article/details/103819702