注意:本篇博客除了讲解Linux的相关指令,还穿插着Linux相关概念及原理的讲解。
whoami:查看当前用户
adduser 用户名: 添加新用户
passwd 用户名:为这个用户设置密码
文件是Linux中存储数据的基本单位;
Linux中的一个文件,是由文件属性+文件内容组成的,文件属性包括:文件名、文件类型、文件创建时间、文件修改时间、文件大小等;
我们每次对文件的操作,就是对文件内容和文件属性的操作;
每次谈论文件,不要狭隘的看到文件的内容,文件的属性也是数据,也要占据磁盘空间,所以一个空文件也是要占磁盘空间的。
Linux下一切皆是文件!显示器和键盘也是文件,这样可以减少Linux编码的维护成本。
语法: ls 选项 功能:对于目录,该命令列出该目录下的所有子目录与文件。对于文件,将列出文件名以及其他信息。
常用选项:
-l : 列出文件的详细信息。
-a : 列出目录下的所有文件,包括以 . 开头的隐含文件。(Linux下以.开头的文件是隐藏文件)
Xshell展示:
ls指令:
ls指令的简写:
ls -al <=> ls -a -l
ll <=> ls -l
ll -a <=> ls -al
目录就是文件夹,只是Linux官方术语上称作目录。Windows操作系统习惯上称作文件夹,Linux称作目录。
Linux整体的目录结构是一棵多叉树,而 / 就是这棵树,也就是整个目录结构的根目录。
注意家目录和根目录的区别,/home/是家目录,所有用户都在这个家目录下,每次打开Xshell都默认在家目录底下;而根目录下都是一些系统文件、库文件,这里的文件至关重要,如果丢失会导致整个系统的瘫痪。
Xshell下使用ls指令查看根目录/家目录下的文件/目录:
Linux中定位一个文件或者目录,就是根据这个文件/目录的路径来搜索的,路径也是一个文件/目录的唯一标识符。
Linux下的路径:/home/zwj/lesson1
Windows下的路径:F:\Linux板书\110Linux
/和\是一个路径的分隔符,不同操作系统的分隔符可能不同,我们以后需要注意不要写反了。
路径本质上就是一个多叉树的搜索路径,根据这个路径我们可以在整个多叉树的目录结构中唯一标识一个文件/目录。
叶子结点:文件或者空目录
非叶子节点:目录
找文件的本质:在一个多叉树上进行结点的查找
我们发现,一个目录下的隐藏文件必定会有这两个东西:
那么这一个点和两个点是什么东西呢?
. 当前路径
.. 上一级路径
注意:这里的路径分隔符/可加可不加,都能唯一标识这个目录/文件。
绝对路径:从/(根目录)开始,定位一个文件或者目录的方式,形成的路径叫做绝对路径。通过绝对路径,我们无论在目录中的哪个位置,都能定位到一个文件/目录的位置。绝对路径我们一般在配置文件中使用,不常用。
/home/zwj/lesson1/file1.txt
相对路径:以当前所处目录为参考点,我们定位一个文件/目录的路径,叫做相对路径。相对路径我们经常使用。
./file1.txt
../lesson1/file1.txt
语法: pwd 功能:显示用户当前所在的目录
常用选项: 无
将当前目录以树状结构展示出来:
语法:cd 目录路径 功能:改变工作目录。进入这个目录中去。
常用:
cd 目录路径(绝对路径和相对路径)
cd .. 进入上一级目录
cd ~ 进入家目录
cd - 跳转最后一次所处的目录
语法:touch [选项] 文件名
功能:touch命令参数可更改文档或目录的日期时间,包括存取时间和更改时间,或者新建一个不存在的文件
注意:touch试一次可以创建多个文件的:
语法:mkdir [选项] 目录名
功能:在当前目录下创建一个名为 “目录名”的目录
常用选项:
-p, 多级目录创建,后面是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立。
rmdir和mkdir相对,rmdir是删除目录
语法:rmdir [-p][dirName]
功能:删除空目录
常用选项:
-p 当子目录被删除后如果父目录也变成空目录的话,就连带父目录一起删除。
rmdir只能删除空目录,所以rmdir很少使用,rm指令相对使用的更多。
语法:rm [选项][目录名/文件名]
功能:删除文件或目录
常用选项:
-f force强制性删除
-i 删除前逐一询问确认
-r recursion递归删除,删除目录及其下所有文件
rm删目录:
rm删文件:
补充:*通配符
*是通配符,表示该目录下的所有文件和目录!
这种东西一定要谨慎使用,很容易出问题;不仅仅是*,rm -rf 删除文件/目录也要谨慎;我们知道/是根目录,如果rm -rf /并且是root用户权限,整个系统的库文件和系统文件也会删除,这样整个系统就废了,所以一定要谨慎!
Linux的命令有很多参数,我们不可能全记住,我们可以通过查看联机手册获取帮助。访问Linux手册页的命令是man。
语法: man [选项] 命令
-k 根据关键字搜索联机帮助 num 只在第num章节找。
-a 将所有章节的都显示出来,比如 man printf 它缺省从第一章开始搜索,知道就停止,用a选项,当按下q退出,他会继续往后面搜索,直到所有章节都搜索完毕。
解释一下,面手册分为8章
1 是普通的命令
2 是系统调用,如open,write之类的(通过这个,至少可以很方便的查到调用这个函数,需要加什么头文 件)
3 是库函数,如printf,fread
4是特殊文件,也就是/dev下的各种设备文件
5 是指文件的格式,比如passwd, 就会说明这个文件中各个字段的含义
6 是给游戏留的,由各个游戏自己定义
7 是附件还有一些变量,比如向environ这种全局变量在这里就有说明
8 是系统管理用的命令,这些命令只能由root使用,如ifconfig
cp就是copy复制的意思,mv就是remove剪切的意思。复制和剪切的区别和Windows环境下一致。
语法:cp [选项] 源文件或目录 目标文件或目录
功能: 复制文件或目录并拷贝到目标目录中,如果目标文件/目标目录不存在,创建一个新文件/新目录。
常用选项:
-f 强行复制文件或目录, 不论目的文件或目录是否已经存在
-i 覆盖文件之前先询问用户
-r 目录的复制
-R 或 --recursive递归处理,将指定目录下的文件及子目录一并处理
复制文件:
复制目录
mv除了剪切,还有重命名功能。
语法: mv [选项] 源文件或目录 目标文件或目录
功能:
视mv命令中第二个参数类型的不同,mv命令将文件/目录重命名或将其剪切至一个新的目录中。
当第二个参数类型是不存在的文件名/目录名时,mv命令完成文件/目录重命名。
当第二个参数是已存在的目录名时,源文件或目录参数可以有多个,mv命令将完成文件/目录的剪切。
语法:cat [选项][文件]
功能: 查看目标文件的内容
常用选项:
-b 对非空输出行编号
-n 对输出的所有行编号
-s 不输出多行空行
nano是Linux独有的记事本,可以用来写文件:
nano 文件名
文件不存在则创建之。
写完后ctrl+x并Y退出。
echo指令可以把输入的数据打印到屏幕上:
echo默认把数据打印到屏幕上,如果想写入文件中则需要输出重定向>:
这里的屏幕,我们可以也理解为没有读方法的文件,键盘则是没有写方法的文件,Linux一切皆文件!
两个额外功能:
写入文件时如果文件不存在则创建之,所以输出重定向还有创建空文件的功能:
输出重定向每次写入文件都会先清空文件,所以输出重定向还有清空目标文件的功能:
前面所说,输出重定向每次写入文件都会先清空文件,如果想保留之前的写入就使用追加重定向>>:
cat如果后面什么都没有,则默认从键盘中读取数据:
如果加上输入重定向<,默认从键盘读数据变为从文件读数据:
more和less的功能和cat相似。只不过当遇见一个文件很大时,内容会超过一页,使用cat不好查看,比如打印一个1000行的文件,系统会一直打印不会停下来,这样我们想查看某一行就很麻烦。
这时候就要用more了:
语法:more [选项][文件]
功能:more命令,功能类似 cat
常用选项:
-n 对输出的所有行编号
q 退出more
more指令打满一行后就不会打印了,我们想继续打印就回车打印下一行内容,想退出就按q。
但是more有一个缺点,不能向上翻阅,所以相比more,我们更习惯使用less这个富有弹性的指令:
语法: less [参数] 文件
功能: less与more类似,但使用less可以随意浏览文件,而more仅能向前移动,却不能向后移动,而且less在查看之前不会加载整个文件。
选项:
-i 忽略搜索时的大小写
-N 显示每行的行号
/字符串:向下搜索“字符串”的功能
?字符串:向上搜索“字符串”的功能
n:重复前一个搜索(与 / 或 ? 有关)
N:反向重复前一个搜索(与 / 或 ? 有关)
q:quit
实际应用中我们不会查看文件中的所有数据,只是查看部分数据,那就用到head和tail了。
语法: head [参数] [文件]
功能: head 用来显示档案的开头至标准输出中,默认head命令打印其相应文件的开头10行。
选项: -n 显示第n行
语法: tail [参数] [文件]
功能: 用于显示指定文件末尾内容.
选项:
-f 循环读取
-n 显示第n行
那如何取中间部分呢?比如8000~8010行
方法一:创建临时文件
head -8010 file1.txt > tmp.txt
tail -10 tmp.txt
方法二:使用管道 |
head -8010 file1.txt | tail -10
管道的作用就是连接多个指令,前一个指令的输出作为后一个指令的输入。
date指令
date 指定格式显示时间: date +%Y:%m:%d
%H : 小时(00..23)
%M : 分钟(00..59)
%S : 秒(00..61)
%X : 相当于 %H:%M:%S
%d : 日 (01..31)
%m : 月份 (01..12)
%Y : 完整年份 (0000..9999)
%F : 相当于 %Y-%m-%d
时间戳:
时间->时间戳:date +%s
时间戳->时间:date -d@1508749502
cal指令
cal命令可以用来显示公历(阳历)日历。公历是现在国际通用的历法,又称格列历,通称阳历。“阳历”又名“太阳历”,系以地球绕行太阳一周为一年,为西方各国所通用,故又名“西历”。
命令格式:cal [参数][月份][年份]
功能: 用于查看日历等时间信息
语法: find pathname -options
功能: 用于在文件树种查找文件,并作出相应的处理(可能访问磁盘)
常用选项: -name 按照文件名查找文件。
语法: grep [选项] 搜寻字符串 文件
功能:用于在文件中搜索字符串,将找到的行打印出来
常用选项:
-i :忽略大小写的不同,所以大小写视为相同
-n :顺便输出行号
-v :反向选择,亦即显示出没有 '搜寻字符串' 内容的那一行
查找命令还可以配合着通配符*一起使用:
grep指令通常使用 命令行管道 配合着其他指令使用
补充命令:
which/whereis
sort/uniq:通过ASCII码对文件信息进行排序、去重(去重前要排序,sort、uniq组合可以去重)。
wc:word coun字符统计,-l选项:按行统计
打包压缩的目的 :
节省空间,网络传输时 效率更高。
数据传输过程中不容易损坏丢失。
zip: .zip后缀文件
zip压缩/打包:zip dst_name.zip 目录或文件
unzip解压:unzip dst_name.zip (-d 指定目录)
-r:目录的压缩、解压。
tar : .tgz后缀文件
> tar [-cxtzjvf] 文件与目录 .... 参数:
-c :建立一个压缩文件的参数指令(create 的意思);
-x :解开一个压缩文件的参数指令!
-t :查看 tarfile 里面的文件!
-z :是否同时具有 gzip 的属性?亦即是否需要用 gzip 压缩?
-j :是否同时具有 bzip2 的属性?亦即是否需要用 bzip2 压缩?
-v :压缩的过程中显示文件!这个常用,但不建议用在背景执行过程!
-f :使用档名,请留意,在 f 之后要立即接档名喔!不要再加参数!
-C : 解压到指定目录
压缩:tar -cvzf dst_name.tgz 目录或文件
解压:tar -xvzf dst_name.tgz (-C 指定目录)
语法:uname [选项] 功能: uname用来获取电脑和操作系统的相关信息。 补充说明:uname可显示linux主机所用的操作系统的版本、硬件的名称等基本信息。 常用选项: -a或–all 详细输出所有信息,依次为内核名称,主机名,内核版本号,内核版本,硬件名,处理器类 型,硬件平台类型,操作系统名称
Tab 命令补全、档案补全
Ctrl + c 停掉当前进程
Ctrl + d 退出当前用户
shutdown [选项]
常见选项 -h : 将系统的服务停掉后,立即关机。 -r : 在将系统的服务停掉之后就重新启动 -t sec : -t 后面加秒数,亦即『过几秒后关机』的意思