什么是linux?
linux它是一种系统,只不过它自由以及源码开放。
为什么要使用llinux系统呢?
总结了这么几点,安全,效率,可定制,免费等等。
都应用在哪些领域?
IT服务器、嵌入式、桌面应用等等
都有那些人在用?
教育、企业、科研、医疗、军事等等
了解linux
在llinux界有一句恒古不变的话“一切皆文件”就是把几乎所有资源,包括硬件设备都组织为文件格式
认识基础命令:
查看显示类 | 参数 |
---|---|
cat | -E:显示行的结束符$ -n:对行进行编号 cat /etc/shell //查看系统安装的shell |
tac | 倒着查看文件 |
rev | 倒着显示 例如aaaabbbb.123.456 执行后456.123.aaaabbbb |
file | 查看文件的类型 |
type | 查看命令的类型 |
enable | 查看所有以启动的内部命令 -n:查看禁止的内部命令 -a:查看所有内部命令 |
hash | 显示以缓存的外部命令的路径 -d:删除指定命令的缓存 -r:删除所有缓存 |
alias | 别名 |
echo | -n:禁止添加换行符 -e:允许使用转义符;\n:换行 \t:制表符 echo $SHELL //查看当前使用的shell echo "$VAR_NAME": 变量会替换,双引号表弱引用 echo '$VAR_NAME': 变量不会替换,强引用 |
which | 显示命令对应的程序文件路径 |
whatis | 获取帮助精确搜索 基于数据库的查找命令 优点:查找速度快 缺点:不具有实时性 |
makewhatis | 更新数据库 数据库存放在:/var/cache/man/whatis |
more | -d:显示翻页及退出提示 |
less | |
head | -c #:指定获取前#字节 -n #:指定获取前#行 |
tail | -c #:指定获取后#字节 -n #:指定获取后#行 -f:跟踪文件新追加的内容 |
history | 查看历史记录 -a:将当前终端的新命令追加到历史记录 |
whoami | 显示当前的用户名 |
who am i | 显示当前用户名,终端,登陆时间 |
who | 显示当前系统的登陆信息 |
w | 详细显示当前系统的所有登陆信息 |
时间日历 | |
date | %Y:年份(全/数字) %y:年份(简/数字) %m:月(数字) %h:月(英文) %d:日(数字) %H:时(数字)%M:分(数字) %S:秒(数字)%D:月/日/年 %F:年-月-日 %T:时:分:秒 |
cal | 日历 |
clock / hwclock | -s:以硬时间为准同步 -w:以软时间为准同步 |
关机与重启 | |
reboot, shutdown, init 6 | 重启 |
halt, poweroff, shutdown,init | 关机 |
文件的管理 | |
cp | 复制文件 |
mv | 移动文件 |
rm | 删除文件 |
目录管理 | |
mkdir | 创建目录 -p:递归创建 -v:显示详情信息 -m:指定权限 |
rmdir | 删除空目录 |
tree | 显示目录树 -d:只显示目录 -L 3:指定显示的层级数 |
cd | 进入目录 |
pwd | 显示当前的路径 |
ls | 列出当前目录的列表 |
文件编辑 | |
Linux 文件类型
- :表示常规文件
d :目录文件
b:block ;块设备
c:字符设备
l:软连接文件---说白了就是快捷方式
p:管道
s:套接字文件
//红色圈圈内的d就是文件的类型
bash的基础特性
(1)命令的历史
history查看命令历史记录 -a 手动追加新命令到历史记录
(2)命令的补全
Tab键补齐
(3)路径的补齐
Tab键补齐
(4)命令行展开
~:展开用户的主目录
{}:,位分割,将其展开为多个路径
(5)命令的执行结果状态
成功或失败 用bash查看,如bash $?
执行的程序有两种结果,返回值和状态值
pwd命令:显示当前绝对路径
-p:如果当前位置是软连接目录,则显示源文件路径 如下图
第一个红线标识的是个软连接 // 下一个红线就是源文件路径
- 绝对路径:就是从根部出发
- 相对路径:就是从当前位置出发
.:一个点表示当前位置
..:两个点往上走一步
例子:
在app下有个文件叫etc它下面有个A111 -----把A111移动到app下
dirname命令:去除文件名,只留文件目录
cd命令:目录的切换(可以使用相对路径)
cd -:进入上一次的目录,也就是两个目录之间来回切换
cd..:进入父目录
ls命令:列出目录内容
-a:显示所有文件包括隐藏的
-l:显示属性
-d:仅显示文件目录
-R:递归显示子目录中的文件(就是显示子目录的文件)
-i:显示indoe号:
划红线这一串数字就是 indoe号
indoe是什么?
一个文件的节点,每个文件就有一个indoe号,和block快,
那indoe号有什么用呢?
就是利用文件的indoe号找到该文件的数据,就相当于公民身份证号码,独一无二的。
数据是由 原数据和数据组成,而indoe存放的是数据的原数据(数据类型,大小,权限,组类别等等)
而block块存放的就是数据内容。
如用户访问根目录下 /etc/a文件 ,问根你下面有没有一个叫etc的文件,有,它indoe号多少,indoe号5
就去找到indoe5这个indoe 里面有对应的block编号比如是1.2,就去找到对应的block编号1和2
你目录下有没有一个叫a的文件,有它的indoe号是3,这是找到indoe3,有个block编号如5.6.12
这个5.6.12就是数据a。配合着建议图看吧。
stat命令:显示文件的状态详细信息
touch命令:创建文件
在123文件下创建了1000个文件
touch -a :是更新atime和ctime时间
touch -m:更新mtime和ctime时间
touch -c:文件存在更新三种状态,不存在,没反应
文件通配符的使用:
*:表示所有字符0或多个 ?:表示一个字符 []:表示单个字符且或者的关系
[0-9]:表示任意数字 [a-Z]:表示单个大小写字母 [^]:没有的意思 例:[^0-9]:匹配除了数字的内容
[[:alnum:]]单个任意数字和字母 [[:alpha:]]单个任意大小写字母
[[:blank:]]单个空格和tab [[:digit:]]单个任意数字
[[:lower:]]单个任意小写字母 [[:upper:]]单个任意大写字母
[[:punct:]]单个标点符号 [[:space:]]单个空格或tab或回车
cp命令:复制
源是一个文件:
如果目标存在则替换源文件内容,名字不一样就重命名
如果目标不存在则复制
源是一个目录:
如果目标存在则在复制到本目录下 ,如果目标不存在则复制到当前目录
源是多个文件
目标不存在则报错,目标是存在且是目录是则复制到该目录下
源是多个目录
目标不存在则测创建指定的目录复制过去,目标存在且是目录是则复制到该目录下,如果该目录下
有和源文件重名的文件则源文件覆盖目标文件。
cp -r 源文件是目录递归复制(目录下的子文件一起复制过去)
cp -d 复制文件是软连接文件时,仅复制软连接本身(就是复制过去这个软连接是未激活的,不可用。)
cp -p 复制时保留源文件属性,就是保留文件的权限,时间,所属组
cp -a 归档复制,就是-rdp的组合
mv命令:移动和重命名(指定的文件没有则创建)
mv -i:移动的时候有提醒
mv -f:没有提醒
rename命令:重命名
rename 旧名字 新名字 要改名的文件
例如rename doc txt *.doc
rm: remove,删除
rm [OPTION]... FILE...
常用选项:
rm -r:递增删除
rm -f:强制删除
rm -rf *删除所有
tree: 树状显示目录
-d: 只显示目录
-L level:指定显示的层级数目
-P pattern: 只显示由指定pattern匹配到的路径;
rmdir:删除空目录
rmdir [OPTION]... DIRECTORY...
-v: 显示过程;-r:递归删除
附加几道练习题
(1) 如何创建/tmp/x/y1, /tmp/x/y2, /tmp/x/y1/a, /tmp/x/y1/b, /tmp/x/y2/a, /tmp/x/y2/b
mkdir /tmp/x/{y1,y2}/{a,b}
(2) 如何创建x_m, y_m, x_n, y_n
mkdir {x,y}_{m,n}
(3) 如何创建/tmp/bin, /tmp/sbin, /tmp/usr, /tmp/usr/bin, /tmp/usr/sbin
mkdir -p /tmp/{bin,sbin,usr/{bin,sbin}}
(4)显示前天星期几
date -d '-2 day' "+%F 星期%w"