Linux 是操作系统内核 ,内核是来负责对于软件资源和硬件设备的管理。
操作系统 = 内核 + 一组配套的应用程序搭建Linux 安装Xshell ,是远程终端工具,可以和vmware(虚拟机)互动,可远程访问CentOS镜像 Linux 完全可以安装在物理电脑上(真实电脑)
Linux基本操作
ls(list) 相当于windows上的文件资源管理器,桌面 ls -l 更详细的显示
ls -a 列出目录下的所有文件
ls -r 反向排序
ls -t 以时间排序
ll 列出的信息更加详细,有时间,是否可读写等信息。 ll的结果的的一个字母为 -表示是普通文件d的目录
在Linux终端中(xshell)不能ctrl+c +v 复制剪贴 ctrl+insert复制 shift+insert 剪切
tab 能够快速完成命令的补全
快速两个tab提示出所以可能的命令
clear 清屏 ctrl+l也可以清屏
Pwd 查看当前目录的路径
/home/test是test用户 —登录主机进就入的默认目录,这个目录就叫做test用户的home目录
~ 表示用户的home目录
cd: 修改当前目录
cd … 返回上级目录
cd - 返回最近访问目录
绝对路径 /home /test 以 /开头的
相对路径 以.或者…开头 从当前目录出发经历若干结点达到最终目录
通道相对目录,必须明确当前目录是什么
ctrl+c 有特定的功能 终止当前程序,或者重新输入一个命令
不管当前目录是什么,直接 cd ~都能进入home目录 cd 也是同样效果 cd~工作目录
cd -可以 两个目录之间的来回转换
touch 创建一个新文件
mkdir 创建目录 mkdir -p test/test1 递归创建多个目录
rmdir(rm) 是删除命令 删除文件/目录
rm -r 递归删除 删除目录及其下所有文件
如何理解递归删除? 递归删除是后序遍历。
rm -f 即使文件属性为只读(即写保护),亦直接保护
rm -i 删除前逐一询问确认
rm -rf c 强制删除
Man 能够查看命令的方法 jk向下向上 q退出
Man man 前三 man3
cp 拷贝文件/目录 指定两个以上的文件/目录,且最后目的是一个已存在的目录,则把前面指定的所有文件复制到此目录中。
cp -r 递归式的拷贝 将指定目录下单文件与子目录一并处理
强制拷贝 cp -f 无论目的文件/目录文件是否存在
mv(move) 移动文件/目录 亦可以重命名 touch一个trash目录配合mv命令可以充当垃圾桶 , trash/a.txt ./
当第二个参数类型是文件时,mv完成文件重命名,此时源文件只能有一个
是已存在的目录名称时,源文件/目录可以有多个,mv将个参数指定的源文件移至目标目录中
mv -f 若目标文件已存在,强制覆盖
mv -i 若存在,询问是否覆盖
cat 查看文件内容 -n 对输出的所有行编号 -b 非空输出行编号 -s 不输出多行空
tac 将文件最后一行开始倒过来将内容输出到屏幕上
more 类似cat ,, 不能往前翻
使用less 可以打开一个较大的文件,效率很高
less打开文件的时候,只把一小部分数据记载到内存中,而大部分其他的编辑器都是之间吧整个文件都加载(延迟加载/懒加载)
-i 忽略搜索时候的大小写
-N 每行行号 /向上搜索 ?向下 n: 重复前一个搜索 N: 反向重复前一个
head 与 tail 显示开头/结尾某个数量的文字区块 默认打印10行
echo 输出一个字符串
echo >重定向 把字符串写道文件中
echo ” ” > a > 重定向,覆盖之前内容 >> 追加重定向 在原有的内容进行添加
Yum install 管理器 安装一个程序
Su 切换到管理员 root exit / ctrl+d 可切回
使用命令操作的好处:
1.避免出现访问卡顿的问题
2.更方便进行自动化批量的操作
3.Git 在命令行下的使用
还原快照 ,虚拟机里——快照,, 提前备份 还原之前状态,版本还原解决策略 最好经常关机状态备份
tree 树形图
whereis 能够找到某个指令的可执行文件路径
时间相关的指令
date显示
date 指定格式显示时间: date +%Y:%m:%d
date 用法:date [OPTION]… [+FORMAT]
1.在显示方面,使用者可以设定欲显示的格式,格式设定为一个加号后接数个标记,其中常用的标记列表如下
%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-%
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″ //这样可以设置全部时间
3.时间戳
时间->时间戳:date +%s即获取到当前的时间戳
时间戳->时间:date -d@1508749502
Unix时间戳是从1970年1月1日开始所经过的秒数,不考虑闰秒。
闰秒:闰秒,是指为保持协调世界时接近于世界时时刻,由国际计量局统一规定在年底或年中(也可能在季末)对协调世界时增加或减少1秒的调整。由于地球自转的不均匀性和长期变慢性(主要由潮汐摩擦引起的),会使世界时(民用时)和原子时之间相差超过到±0.9秒时,就把协调世界时向前拨1秒(负闰秒,最后一分钟为59秒)或向后拨1秒(正闰秒,最后一分钟为61秒); 闰秒一般加在公历年末或公历六月末。
获得任意格式化的时间 srand(time(NULL)
格式化时间和时间戳的换算 rand()
头文件函数 inclue<stdint.h>
假设给定一个时间戳,如何计算三天之前的同一刻的时间戳是多少??一年之前的今天呢?
- 。。。。。。。。下个文档回答
find -name 在目录结构中按照文件名来查找文件 * 表示通配符.代表着多个字符
大部分Linux指令都支持通配符 P1
cal 显示阳历日历 -3 系统前一月,当前月,下一月 -j 在当年的第几天 -y 当前年份的日历
grep在文件中搜索字符串,将找到的行打印出来常用选项:
-i :忽略大小写的不同,所以大小写视为相同
-n :顺便输出行号
-v :反向选择,亦即显示出没有 ‘搜寻字符串’ 内容的那一行
zip/unzip指令
语法: zip 压缩文件.zip
目录或文件功能: 将目录或文件压缩成zip格常用选项:-r 递 归处理,将指定目录下的所有文件和子目录一并处理
举例:
将test2目录压缩:zip test2.zip test2/*
解压到tmp目录:unzip test2.zip -d /tmp
tar指令(重要):打包/解包,不打开它,直接看内容
tar [-cxtzjvf] 文件与目录 … 参数:
-c :建立一个压缩文件的参数指令(create 的意思);
-x :解开一个压缩文件的参数指令!
-t :查看 tarfile 里面的文件!
-z :是否同时具有 gzip 的属性?亦即是否需要用 gzip 压缩?
-j :是否同时具有 bzip2 的属性?亦即是否需要用 bzip2 压缩?
-v :压缩的过程中显示文件!这个常用,但不建议用在背景执行过程!
-f :使用档名,请留意,在 f 之后要立即接档名喔!不要再加参数!
-C : 解压到指定目录
uname用来获取电脑和操作系统的相关信息
补充说明:uname可显示linux主机所用的操作系统的版本、硬件的名称等基本信息。
常用选项:-a或–all 详细输出所有信息,依次为内核名称,主机名,内核版本号,内核版本,硬件名,处理器类型,硬件平台类型,操作系统名称
热键
[Tab]按键—具有『命令补全』和『档案补齐』的功能
[Ctrl]-c按键—让当前的程序『停掉』
[Ctrl]-d按键—通常代表着:『键盘输入结束(End Of File』的意思;另外,他也可以用来取代exit
关机命令shutdown
-h : 将系统的服务停掉后,立即关机。
-r : 在将系统的服务停掉之后就重新启动
-t sec : -t 后面加秒数,亦即『过几秒后关机』的意思
init 0也可以关机
Linux权限管理
a.文件类型
d:文件夹
-:普通文件
l:软链接(类似Windows的快捷方式)
b:块设备文件(例如硬盘、光驱等)
p:管道文件
c:字符设备文件(例如屏幕等串口设备)
s:套接口文件
b.基本权限
i.读(r/4):Read对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限
ii.写(w/2):Write对文件而言,具有修改文件内容的权限;对目录来说具有新增删除移动目录内文件的权限
iii.执行(x/1):execute对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限
iv.“—”表示不具有该项权限
c.文件类型和访问权限(事物属性)
d.文件权限的表示方法
.字符类表示方法
e.文件访问权限设置的相关方法
1) chmod 修改文件的权限
权限字符
+:向权限范围增加权限代号所表示的权限
-:向权限范围取消权限代号所表示的权限
=:向权限范围赋予权限代号所表示的权限
用户符号:
u:拥有者
g:拥有者同组用
o:其它用户
a:所有用户
举例
chmod u-r u+r 只处理当前文件拥有者
chmod g-r 操作同组者的权限
chmod o-r 其他用户的权限
chmod 664
chmod 777
绿色——可执行
R -> 递归修改目录文件的权限
说明:只有文件的拥有者和root才可以改变文件的权限
chmod ( 三位八进制的数字 ) 修改文件权限
— — — rwx三个位 777三种情况
二进制 000 110 100 八进制 0 6 4
2)chown
功能:修改文件的拥有者
格式:chown [参数] 用户名 文件名
实例:
chown user1 f1
chown -R user1 filegroup1
3)chgrp
功能:修改文件或目录的所属组
格式:chgrp [参数] 用户组名 文件名
常用选项:-R 递归修改文件或目录的所属组
实例:chgrp users /abc/f2d)
4)umask
功能:查看或修改文件掩码新建文件夹默认权限=0666新建目录默认权限=0777但实际上你所创建的文件和目录,看到的权限往往不是上面这个值。原因就是创建文件或目录的时候还要受到umask的影响。假设默认权限是mask,则实际创建的出来的文件权限是: mask & ~umask
格式:umask 权限值
说明:将现有的存取权限减去权限掩码后,即可产生建立文件时预设权限。超级用户默认掩码值为0022,普通用户默认为0002。 umask 去掉在xx中出现的权限 文件的最终权限是缺省权限去掉umask中出现的权限
实例:
umask 755
umask //查看
umask 044//设置
f.关于权限的总结
- 目录的可执行权限是表示你可否在目录下执行命令。
- 如果目录没有-x权限,则无法对目录执行任何命令,甚至无法cd 进入目, 即使目录仍然有-r 读权限(这个地方很容易犯错,认为有读权限就可以进入目录读取目录下的文件)
- 而如果目录具有-x权限,但没有-r权限,则用户可以执行命令,可以cd进入目录。但由于没有目录的读权限
所以在目录下,即使可以执行ls命令,但仍然没有权限读出目录下的文档。
粘滞位
- 创建新用户:
sudouseradd 【用户名】
- 为新用户添加密码:
sudo passwd 【用户名】
- 删除用户
userdel -r 【用户名】
- 切换用户
su 【用户名】
当一个目录被设置为"粘滞位"(用chmod +t),则该目录下的文件只能由
一、超级管理员删除
二、该目录的所有者删除
三、该文件的所有者删除
只要用户具有目录的写权限, 用户就可以删除目录中的文件, 而不论这个用户是否有这个文件的写权限,(设计不足) 怎么解决————粘滞位
[root@localhost yhs]# chmod 777 /home/
[root@localhost yhs]# ls /home/ -ld
drwxrwxrwx. 6 root root 52 Apr 28 05:25 /home/
[root@localhost yhs]# touch /home/root.c
[root@localhost yhs]# ls -l /home/
total 4
drwx------. 5 hsy hsy 107 Apr 28 05:27 hsy
-rw-r--r--. 1 root root 0 Apr 28 05:39 root.c
drwx------. 12 yhs yhs 4096 Apr 28 04:56 yhs
drwx------. 3 yhs2 yhs2 78 Apr 28 05:16 yhs2
drwx------. 3 yhss yhss 78 Apr 28 05:13 yhss
[root@localhost yhs]# su - hsy
Last login: Sun Apr 28 05:27:41 PDT 2019 on pts/1
[hsy@localhost ~]$ rm /home/root.c // hsy可以删除root创建的文件
rm: remove write-protected regular empty file ‘/home/root.c’? y
[hsy@localhost ~]$ exit
logout
[root@localhost hsy]# chmod +t /home/ //加上粘滞位
[root@localhost hsy]# ls -ld /home/
drwxrwxrwt. 6 root root 52 Apr 28 05:40 /home/
[hsy@localhost ~]$ rm /home/yhs/test.c
rm: cannot remove ‘/home/yhs/test.c’: Permission denied //不允许的操作
所谓的执行权限是一个程序能执行的必要条件,但非充要条件。
必须文件满足系统可执行格式要求才是真的能执行,平时敲的大部分指令都是可执行指令
可以把Linux 上的文件发到 windows上 Windows 到Linux 拖拽 都不可以执行
file指令:
功能说明:辨识文件类型。
语法:file [选项] 文件或目录…
常用选项:
-c 详细显示指令执行过程,便于排错或分析程序执行的情形。
-z 尝试去解读压缩文件的内容。
使用 sudo分配权限
(1)修改/etc/sudoers 文件分配文件
chmod 740 /etc/sudoers
vi /etc/sudoer
格式:接受权限的用户登陆的主机 =(执行命令的用户) 命令
(2)使用 sudo 调用授权的命令
$ sudo –u 用户名 命令
实例:
sudo -u root /usr/sbin/useradd u2