命令的本质起始就是文件。
命令的本质 = 可执行文件 = 我们写的程序
在Linux中*是通配符,可以指代任意内容。
文件 = 内容 + 属性(非常重要,后续会经常提到)
ls
显示当前目录(我这个用户(whoami)所处的目录(pwd))下的文件:ls。
ls默认显示文件名。(在Linux中,以.开头的文件是隐藏文件,默认不会显示)
下面是一些常用的显示文件的操作:
-a 列出目录下的所有文件,包括以.开头的隐含文件。
-d 将目录象文件一样显示,而不是显示其下的文件。如:Is-d指定目录
-i输出文件的i节点的索引信息。如ls-ai 指定文件
-k以k字节的形式表示文件的大小。ls-alk指定文件
-1列出文件的详细信息。
-n用数字的UID,GID代替名称。(介绍UID,GID)
-F在每个文件名后附上一个字符以说明该文件的类型,"*"表示可执行的普通文件;"/"表示目录;"@"表
示符号链接;"|"表示FIFOs;"="表示套接字(sockets)。(目录类型识别)
-r对目录反向排序。
-t以时间排序。
-s在I文件名后输出该文件的大小。(大小排序,如何找到目录下最大的文件)
-R列出所有子目录下的文件。(递归)
-1一行只输出一个文件。
pwd
显示当前所在目录的绝对地址。
cd
cd:路径切换
cd ..:返回上一级目录
Linux中 / 是路径分隔符,但最开始的 / 是Linux的根目录,不是分隔符
cd ~:返回当前用户自己的 家目录(任何Linux用户用特定的用户名登录系统时,默认就在家目录下)
cd -:跳转到最近所处的路径
Linux的文件结构
Linux的文件结构,是一颗从 /(根目录) 开始的一个多叉树:
叶子结点:一定是普通文件或是空目录
非叶子结点:一定是一个非空目录

绝对路径 :从根目录开始,一直到目标文件的路径叫绝对路径
相对路径:以不是根目录的位置为参照位置,定位一个文件相对路径
| 绝对路径 | 相对路径 |
|---|---|
| 在配置文文件中进行使用 | 日常操作用的多 |
./test.c:一个 . 方便定位当前目录下的文件
../test.c:定位上一个目录的文件
任何一个目录,即使是一个空目录,默认系统都会自带.(当前路径)和..(上一级路径)
touch & stat
touch+文件名:创建一个文件(创建普通文件只能用touch命令)
stat+文件名:查看文件按详细的属性介绍
在查看属性介绍时会出现Access Modify Change这三个字样,其中:
内容更改:modify改变
属性更改:change改变
查看内容:access改变
mkdir
mkdir:创建一个目录
mkdir -p a/b/c/d:创建一串路径
tree
以树状结构递归的显示目录的内容。
which
查找并显示可执行文件的路径,可以用来指定目录下查找指定的指令。
alias
可以用来给其他命令起别名。
alias lils='ls -la' 给ls -la起一个lila的别名
rmdir & rm
rmdir只能删除空目录
rm删除,默认只能删普通文件
rm -f:强制删除文件
rm -r:删除目录
man
可以用来查看命令、函数、配置文件 等的详细手册页。

cp
拷贝文件。
cp hello.txt lesson:将hello文件拷贝到lesson目录里面去
cp xxx 目录:会把指定的文件拷贝到指定的目录内部
echo & cat & tac
cat显示指定文件名里面的内容
tac反向显示文件内容
echo把后续内容当做字符串打印出来
echo "helloworld" > hello.txt:新建一个hello.txt文件,再写入helloworld
> :重定向,后续文件不存在,新建文件,存在,先清空后写入
>>:追加重定向,在文件后追加,不清空
<:输入重定向
文件类型
Linux下不以文件后缀区分文件类型,但是不代表禁止使用后缀,系统不关心后缀,但是工具(例如:gcc)关心
-开头:普通文件,文本,可执行文件,库,图片,视频...
d开头:目录文件
c开头:字符文件,键盘、显示器、终端、输入的数据具有顺序性
b开头:块设备文件、磁盘
l开头:链接文件
p开头:管道文件
mv
mv srcfile dstdir:将srcfile移动到dstdir
mv src dst:对指定文件重命名
如果dst不是目录或是不存在,重命名,不然就是移动
less & more
less打开文件可以上翻下翻搜索等
more只能下翻
tail & head
tail只显示结尾的几条内容
head只显示开头的几条内容
head -n 文件:只显示开头n行内容
tail -n 文件:只显示结尾n行内容
head -510 log.txt | tail -10:(其中 | 称为管道,上述命令本质是两条命令,第一条命令的执行结果通过管道再执行第二行命令)取500到510行的内容
find
whereis:很少用
find ~ -name * .c:从家目录开始,查找所有以.c结尾的文件
grep
行文本过滤指令
cat /var/log/messages | grep "Remove":筛选出素有含有remove的指令
常用指令:
-i:忽略大小写的不同,所以大小写视为相同
-n:顺便输出行号
-v:反向选择,选出没有相关指令的
在Linux系统中, 为找到文件try_grep含有以a字母为行开头的内容, 可以使用命令:grep -E ^a try_grep
zip & unzip
zip lesson.zip lessons:将lessons文件夹打包压缩成lesson.zip
zip -r lesson.zip lessons:打包成目录,打包目录必须有-r
unzip lesson.zip -d /root:将这个文件指定解压到root目录下
sz & rz
sz lesson.zip:将lesson这个压缩包传到Windows上
rz:从Windows上传到云服务器
tar
tar 选项 XXX.tgz srcdir:将后者打包压缩成前者
-c:建立一个压缩文件的参数指令(create的意思);
-x:解开一个压缩文件的参数指令!
-t:查看tarfile里面的文件!
-z:是否同时具有gzip的属性?亦即是否需要用gzip压缩?
-j:是否同时具有bzip2的属性?亦即是否需要用bzip2压缩?
-v:压缩的过程中显示文件!这个常用,但不建议用在背景执行过程!
-f:使用档名,请留意,在f之后要立即接档名喔!不要再加参数!
-C:解压到指定目录
解包也用tar
tar xzf XXX.tgz 目标目录:解压到其他目录
scp
scp命令,远程拷贝
scp 目标文件 用户名@公网IP:目标机器指定路径
bc
Linux中的简单计算器
uname
在Linux环境中查看你的体系结构和系统内核版本?
uname -a:打印所有体系结构
uname -r:操作系统内核版本
top
查看CPU占用率
重要热键
tab:补全指令,档案补齐
ctrl+c:停止当前程序
ctrl+d:键盘输入结束/代替exit
ctrl+r:搜索历史命令
shell命令第一次理解
从技术角度,最简单的定义:命令行解释器,主要包含:
- 将使用者的命令翻译给核心处理
- 将核心的处理结果翻译给使用者
为什么要存在外壳程序?
- 方便用户操作
- 外壳程序,保护内核
外壳程序->进程->新命令到来->创建子进程执行
shell是所有外壳程序的总称,bash是Linux具体shell外壳的名字