本章目标
- 学习并且熟悉
Linux
操作系统下的一些基础指令 - 能够在
Linux
下进行简单的编程
基础指令
ls
指令
- 语法规则
ls [选项] [目录/文件]
- 作用
列出该目录下的所有文件或者该文件的文件信息
- 常用选项:
-a //列出目录下的所有文件,包括隐藏文件
-d //将目录像文件一样显示目录名不会展示该目录下的文件
-i //输出文件i节点的索引信息
-k //以k字节的形式表示文件大小
-l //列出文件的详细信息
-t //以时间排序
-R //列出所有子目录下的文件(递归)
- 举例:
ls -a .
ls -d aaa
ls -i .
什么是i节点的索引信息呢?
简单讲就是Linux
下的保存标记文件的一种方式,通过该索引信息操作系统内部组织文件!
ls -alk .
ls -tl
以时间降序排序!
ls -R aaa
ls -l
可以简写成 ll
pwd
指令
- 语法
pwd
- 作用
显示用户当前所在目录
- 举例
pwd
cd
指令
- 语法
cd 目录名
-
作用
改变工作目录,将当前用户所在目录,改变到指定目录! -
举例
cd ..
返回上级目录!
cd 绝对路径
cd 相对路径
相对路径
..
表示上一级路径
.
表示当前路径
touch
指令
- 语法
touch [选项][文件名]
- 常用选项
-a //或--time=atime或--time=access或--time=use只更改存取时间。
-d //使用指定的日期时间,而非现在的时间。
-f //此参数将忽略不予处理,仅负责解决BSD版本touch指令的兼容性问题。
-m //或--time=mtime或--time=modify 只更改变动时间。
-r //把指定文档或目录的日期时间,统统设成和参考文档或目录的日期时间相同。
-t //使用指定的日期时间,而非现在的时间
- 作用
touch
命令参数可更改文档或目录的日期时间,包括存取时间和更改时间,或者新建一个不存在的文件!(人话就是创建一个文件)
- 举例
touch test.c
创建文件
touch -m test.c
更改文件时间
mkdir
指令
- 语法
mkdir [选项][目录名]
- 作用
在当前目录下创建一个目录!
- 常用选项
-p // --parents 可以是一个路径名称!
//如果有些目录已经存在就直接创建不存在目录,如果都不存在就直接创建这个路径目录!
- 举例
mkdir ccc
在当前目录下创建一个名为ccc
的目录!
mkdir -p ddd/eee/fff
在当前目录下创建一个ddd/eee/fff
的多级目录!
rmdir
指令
- 语法
rmdir [-p][目录名]
- 常用选项
-p //指定一整条路径,删除一个路径(里面无文件!)
//注意:
//当子目录被删除后如果父目录也变成空目录的话,就连带父目录一起删除
- 作用
删除当前目录下的目录文件(注意该目录下不能有文件,否则删除失败!)
- 举例
rmdir eee
rmdir -p eee
rmdir
只能删除空目录(里面不能包含文件)
rmdir ccc
删除当前目录下的ccc
目录
rmdir -p ddd/eee/fff
删除这个多级目录
rm
指令
- 语法
rm [-f/-i/-r/-v][文件名/路径名]
- 作用
删除文件或者目录!
- 常用选项
-f //忽略文件只读权限,直接删除!
-i //删除前逐一询问确认
-r //删除目录及其下的所有文件
rm -r a
将a目录下的所有可删除文件删除!
rm -rf bbb
将bbb
下所有文件(包括只读文件)删除!
删除的终极武器!!!
慎用!!!
man
指令
- 语法
man [选项][命令]
- 作用
Linux
的命令有很多参数,我们不可能全记住,我们可以通过查看联机手册获取帮助。访问Linux
手册页的命令是man
- 常用选项
-k
根据关键字搜索联机帮助
num
只在第num
章节找
-a
将所有章节的都显示出来,比如man printf
它缺省从第一章开始搜索,知道就停止,用a
选项,当按下
q
退出,他会继续往后面搜索,直到所有章节都搜索完毕。
解释一下,面手册分为8章
1 是普通的命令
2 是系统调用,如open,write之类的(通过这个,至少可以很方便的查到调用这个函数,需要加什么头文件
3 是库函数,如printf,fread4是特殊文件,也就是/dev下的各种设备文件
5 是指文件的格式,比如passwd, 就会说明这个文件中各个字段的含义
6 是给游戏留的,由各个游戏自己定义
7 是附件还有一些变量,比如向environ这种全局变量在这里就有说明
8 是系统管理用的命令,这些命令只能由root使用,如ifconfig
- 举例
man printf
查看
printf
命令
man -k mk
联机查找
mk
开头的命令!
cp
指令
- 语法
cp [选项] [源目录/文件] [目标目录/文件]
- 作用
复制文件或目录!
- 注意:
cp
指令用于复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则
它会把前面指定的所有文件或目录复制到此目录中。若同时指定多个文件或目录,而最后的目的地并非一个已存在的目录,则会出现错误信息!
通俗讲就是目录/文件可以复制到目录中,而目录不能复制到文件中!
- 常用选项
-f //或 --force 强行复制文件或目录, 不论目的文件或目录是否已经存在
-i //或 --interactive 覆盖文件之前先询问用户
-r //递归处理,将指定目录下的文件与子目录一并处理。若源文件或目录的形态,不属于目录或符号链接,则一律视为普通文件处理
-R //或 --recursive递归处理,将指定目录下的文件及子目录一并处理!
- 举例
cp -rf ggg eee
强制将ggg
目录复制到eee
目录下!
cp -i t1.txt fff/test.c
将t1.txt
文件复制到 fff/test.c
中,并且覆盖!
mv
指令
mv
命令是move
的缩写,可以用来移动文件或者将文件改名(move (rename) files),是Linux系统下常用的命令,经常用来备份文件或者目录。
- 语法
mv [选项] [源文件/目录] [目标文件/目录]
- 作用
- 视mv命令中第二个参数类型的不同(是目标文件还是目标目录),mv命令将文件重命名或将其移至一个新的目录中。
- 当第二个参数类型是文件时,mv命令完成文件重命名,此时,源文件只能有一个(也可以是源目录名),它将所给的源文件或目录重命名为给定的目标文件名。
- 当第二个参数是已存在的目录名称时,源文件或目录参数可以有多个,mv命令将各参数指定的源文件均移至目标目录中
- 常用选项
-f //:force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖
-i //:若目标文件 (destination) 已经存在时,就会询问是否覆盖!
- 举例
rm t1.txt fff/test.c
将t1.txt
文件移动(重写覆盖)到test.c
rm test1.c eee/ggg
将test1.c
文件移动到eee/ggg
目录下!
cat
指令
- 语法
cat [选项][文件名]
- 作用
查看文件内容!
- 常用选项
-b //对非空输出行标号(不计空行标号)
-n //输出所有行标号
-s //不输出多行空行(多行空行就输出一行空行标号)
- 举例
cat -b eee/test.c
cat -n eee/test.c
tac
指令
看这个指令是不是有点眼熟,这不是刚刚cat
倒过来嘛!
确实如此
这个指令的作用就是逆序输出目标文件内容!
tac
没有选项!
tac eee/test.c
date
指令
date 指定格式显示时间: date +%Y:%m:%d
date 用法:date [OPTION]… [+FORMAT]
1.在显示方面,使用者可以设定欲显示的格式,格式设定为一个加号后接数个标记,其中常用的标记列表如下:
%H : 小时(00..23)
%M : 分钟(00..59)
%S : 秒(00..61)
%X : 相当于 %H:%M:%S
%x : 相当于 %m/%d/%Y
%d : 日 (01..31)
%m : 月份 (01..12)
%Y : 完整年份 (0000..9999)
%F : 相当于 %Y-%m-%d
date
查看时间!
date +%F
date +%Y
date +%m
date +%d
date +%x
小写x
相当于%m/%d/%Y
date +%X
大写的X
相当于 %H:%M:%S
date +%Y_%m_%d.%H:%M:%S
2.在设定时间方面:
date -s //设置当前时间,只有root权限才能设置,其他只能查看。
date -s 20080523 //设置成20080523,这样会把具体时间设置成空00:00:00
date -s 01:01:01 //设置具体时间,不会对日期做更改
date -s “01:01:01 2008-05-23′′ //这样可以设置全部时间
date -s “01:01:01 20080523′′ //这样可以设置全部时间
date -s “2008-05-23 01:01:01′′ //这样可以设置全部时间
date -s “20080523 01:01:01′′ //这样可以设置全部时间
date -s 20500506
date -s "20500506 12:00:00"
3.时间戳
时间->时间戳
date +%s
时间戳->时间
date +%Y:%m:%d -d @1599642565
Unix时间戳(英文为Unix epoch, Unix time, POSIX time 或 Unix timestamp)是从1970年1月1日(UTC/GMT的午夜)开始所经过的秒数,不考虑闰秒。
date +%s
date +%Y:%m:%d -d @0
top
指令
Linux
下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows
的任务管理器!
- 常用选项
-u<用户名> //指定用户名
-p<进程号> //指定进程
-n<次数> //循环显示的次数
top -n 3
top -p 2
查看进程
id
为2的进程!
shutdown -
关机
- 语法
shutdown [选项]
- 常见选项
-h //将系统的服务停掉后,立即关机
-r //将系统的服务停掉后,立即重启
-t sec //sec指定秒数,过sec秒就关机
-c //取消关机操作!
如果是虚拟机就可以使用shutdown
指令!
云服务器不建议使用,我们可以使用快捷键ctrl+d
退出或者exit
指令退出!
exit
退出!
shutdown -t 30
30秒后关机!
shutdown -c
取消关机!
重要的几个快捷键
[Tab]
按键—具有『命令补全』和『档案补齐』的功能
[Ctrl]-c
按键—让当前的程序『停掉』
[Ctrl]-d
按键—通常代表着:『键盘输入结束(End Of File, EOF 戒 End OfInput)』的意思;另外,他也可以用来取代exit
ca
+ Tab
键
查看所有以 ca
开头的命令!
通过Ctrl+c
停掉当前程序!
这里的Ctrl+c
并不是Windows
下的复制了!!!
Linux
下的复制粘贴操作!
复制: Ctrl + insert
粘贴:Shift+insert