Shell
什么是Shell ?
Shell 是一种应用于linux系统的命令行解释器工具的通称。(功能实现层面)
- 用户向shell 发出命令时
- 1 如果是内置命令,则直接在当前进程执行内置命令。(内置命令如cd,echo,可以使用type查询)
- 2如果是非内置命令,则fork() 一个子进程,在子进程中执行用户输入的命令。
Shell 是新用户接入服务器后启动的默认挂起程序。 (应用层面)
- 应用执行完毕后,会关闭进程。为了使用户可以正常与服务器交互,
Shell 是作用于用户和操作系统内核间的中间程序,为用户提供服务,执行操作系统功能。(系统架构层面)
- 许多程序需要通过系统调用来实现其功能,而允许用户直接访问内核功能是不安全的。所以通过shell命令来进行系统调用完成系统。

Shell 的执行格式
独立的命令的安装
1 2 3 4 5 6 7
|
ln -s /user/local/bin/xxx /user/bin/xxx
|
基础命令
清空屏幕打印 - clear
回显打印 - echo
查看当前工作目录 - pwd
查看返回路径中的文件名 - basename
- basename [ path ] [ suffix ]
1 2 3 4
| [root@iZbp19tqlmjz1dmnm8w43uZ ~]# touch hello.world [root@iZbp19tqlmjz1dmnm8w43uZ ~]# basename /root/hello.world .world hello
|
查询目录下的内容 - ls
修改文件权限
linux中 文件的 读,写,执行权限 被设置为了3种 : 所有者,所属用户组,其他用户
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| [root@iZbp19tqlmjz1dmnm8w43uZ hello]# ls -l total 4 -rw-r--r-- 1 root root 7 Mar 28 00:44 hello.txt
[root@iZbp19tqlmjz1dmnm8w43uZ hello]# chmod +100 hello.txt [root@iZbp19tqlmjz1dmnm8w43uZ hello]# ls -l total 4 -rwxr--r-- 1 root root 7 Mar 28 00:44 hello.txt
[root@iZbp19tqlmjz1dmnm8w43uZ hello]# chmod +006 hello.txt [root@iZbp19tqlmjz1dmnm8w43uZ hello]# ls -l total 4 -rwxr--rw- 1 root root 7 Mar 28 00:44 hello.txt
[root@iZbp19tqlmjz1dmnm8w43uZ hello]# ls -l total 4 -rwx---rw- 1 root root 7 Mar 28 00:44 hello.txt
|
用户访问权限
在文件的inode中存储了4字节的文件权限内容描述
所以当我们想要访问文件时
- 查看当前用户是否具有当前文件的读写执行权限,使用chmod 添加对应的权限(影响最小
- 使用chown , chgrp 修改文件所有者 ,所属组 来获得权限
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
| [root@iZbp19tqlmjz1dmnm8w43uZ hello]# ls -l total 4 -rwx---rw- 1 root root 7 Mar 28 00:44 hello.txt
[root@iZbp19tqlmjz1dmnm8w43uZ hello]# chmod -006 hello.txt
[root@iZbp19tqlmjz1dmnm8w43uZ hello]# su cod
[cod@iZbp19tqlmjz1dmnm8w43uZ hello]$ cat hello.txt cat: hello.txt: Permission denied [cod@iZbp19tqlmjz1dmnm8w43uZ hello]$ echo hello >hello.txt bash: hello.txt: Permission denied [cod@iZbp19tqlmjz1dmnm8w43uZ hello]$ exit exit [root@iZbp19tqlmjz1dmnm8w43uZ hello]# chown cod hello.txt
[root@iZbp19tqlmjz1dmnm8w43uZ hello]# su cod [cod@iZbp19tqlmjz1dmnm8w43uZ hello]$ cat hello.txt 你好 [cod@iZbp19tqlmjz1dmnm8w43uZ hello]$ echo hello > hello.txt [root@iZbp19tqlmjz1dmnm8w43uZ hello]# chmod +070 hello.txt
[root@iZbp19tqlmjz1dmnm8w43uZ hello]# ls -l total 4 -rwxrwx--- 1 root root 6 Apr 9 17:45 hello.txt [root@iZbp19tqlmjz1dmnm8w43uZ hello]# chgrp cod hello.txt [root@iZbp19tqlmjz1dmnm8w43uZ hello]# chown root hello.txt
[root@iZbp19tqlmjz1dmnm8w43uZ hello]# ls -l total 4 -rwxrwx--- 1 root cod 6 Apr 9 17:45 hello.txt [root@iZbp19tqlmjz1dmnm8w43uZ hello]# su cod [cod@iZbp19tqlmjz1dmnm8w43uZ hello]$ cat hello.txt hello [cod@iZbp19tqlmjz1dmnm8w43uZ hello]$ echo 你好 >hello.txt [cod@iZbp19tqlmjz1dmnm8w43uZ hello]$ cat hello.txt 你好 [root@iZbp19tqlmjz1dmnm8w43uZ hello]# chmod+7777 hello.txt
[root@iZbp19tqlmjz1dmnm8w43uZ hello]# ls -l total 4 -rwsrwsrwt 1 root cod 7 Apr 9 18:07 hello.txt
|
切换目录 - cd
1 2 3 4 5 6 7 8
| [root@iZbp19tqlmjz1dmnm8w43uZ codfish]# cd hello/
[root@iZbp19tqlmjz1dmnm8w43uZ hello]# cd ..
[root@iZbp19tqlmjz1dmnm8w43uZ codfish]# cd ~
[root@iZbp19tqlmjz1dmnm8w43uZ ~]#
|
拷贝文件或目录 - cp
1 2 3 4
| [root@iZbp19tqlmjz1dmnm8w43uZ cod]# cp hello hello2 [root@iZbp19tqlmjz1dmnm8w43uZ cod]# ls hello hello2
|
创建文件目录 - mkdir
1 2 3 4 5 6
| [root@iZbp19tqlmjz1dmnm8w43uZ cod]# mkdir hi [root@iZbp19tqlmjz1dmnm8w43uZ cod]# mkdir -p one/two
[root@iZbp19tqlmjz1dmnm8w43uZ cod]# cd one/two/ [root@iZbp19tqlmjz1dmnm8w43uZ two]#
|
移动文件或目录 - mv
1 2 3 4 5 6
| [root@iZbp19tqlmjz1dmnm8w43uZ cod]# ls hello2 hello [root@iZbp19tqlmjz1dmnm8w43uZ cod]# mv hello hi [root@iZbp19tqlmjz1dmnm8w43uZ cod]# ls hello2 hi
|
删除文件或目录 - rm
1 2 3 4 5 6 7 8
| [root@iZbp19tqlmjz1dmnm8w43uZ cod]# rm hi rm: remove regular empty file 'hi'? y [root@iZbp19tqlmjz1dmnm8w43uZ cod]# mkdir hi [root@iZbp19tqlmjz1dmnm8w43uZ cod]# rm -r hi rm: remove directory 'hi'? y [root@iZbp19tqlmjz1dmnm8w43uZ cod]# rm -rf hi
|
创建空文件 - touch
1 2 3
| [root@iZbp19tqlmjz1dmnm8w43uZ cod]# touch file [root@iZbp19tqlmjz1dmnm8w43uZ cod]# ls file
|
查看文件内容
cat 直接查看整个文件的内容
1 2 3 4 5 6 7 8 9 10 11
| [root@iZbp19tqlmjz1dmnm8w43uZ cod]# cat file 1 2 3 4 5 6 7 8 9 10
|
more 交互式查看文件内容
less
head 从头部查看文件
1 2 3 4 5
| [root@iZbp19tqlmjz1dmnm8w43uZ cod]# head -n 3 file 1 2 3
|
tail 从尾部查看文件
1 2 3 4
| [root@iZbp19tqlmjz1dmnm8w43uZ cod]# tail -n 3 file 8 9 10
|
查看文件/目录 实际信息 (inode/block 地址)- stat
1 2 3 4 5 6 7 8 9 10
| [root@iZbp19tqlmjz1dmnm8w43uZ cod]# stat file File: file Size: 21 Blocks: 8 IO Block: 4096 regular file Device: fd03h/64771d Inode: 1224103 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2025-04-09 21:05:51.065782226 +0800 Modify: 2025-04-09 21:05:49.079699125 +0800 Change: 2025-04-09 21:05:49.081699209 +0800 Birth: 2025-04-09 21:05:49.079699125 +0800
|
查看文件信息 - file
压缩/解压缩 - tar(czf/xzf)