Linux 基础命令快速入门:
目录
本文档是面对具有一定的 linux 基础的朋友,脱离了命令的 liunx 是失去灵魂的,但是对于新入门的菜鸡(我这样的),左耳朵学过的指令平时不怎么使用很快又右耳朵出去( vim 最易忘,整合在最前面 ),所以在此辛苦整理一份基础命令合集,目录已重新补充完整,希望和大家共同进步。
另起 pdf 版:https://download.csdn.net/download/w2462140956/11087787
1、vim 命令记录
1.1、进入vi操作
#进入vi的命令
vi filename :打开或新建文件,并将光标置于第一行首
vi filename :打开文件,并将光标置于最后一行首(filename存在)
vi n filename :打开文件,并将光标置于第n行首
vi /pattern filename:打开文件,并将光标置于第一个与pattern匹配的串处
vi r filename :在上次正用vi编辑时发生系统崩溃,恢复filename
1.2、 插入光标(编辑模式)
操作 | 功能说明 |
---|---|
i | 光标前插入 |
I | 光标所在行首位置插入 |
a | 光标后插入 |
A | 光标所在行行尾位置插入 |
o | 光标行下另起一行插入 |
O | 光标行上另起一行插入 |
1.3、文件定位
#--表示centOS7测试
按 0:移到该行的开头位置。[常用]
按 G:移动到文章的最后。[常用] --最后一行行首
按 gg:文章开头第一个字符
按 w:光标跳到下个word的开头。[常用]
按 e:光标跳到下个word的字尾。
按 b:光标回到上个word的开头。
按 $:移到光标所在行的行尾。[常用]
按 ^:移到该行第一个非空白的字符。
# 还有就是常用的上下左右箭头键移动!!!
# h、j、k、l,分别控制光标左、下、上、右移一格。
1.4、上下翻页
按Ctrl+B:屏幕往上移动一页。[常用]
按Ctrl+F:屏幕往下移动一页。[常用]
按Ctrl+U:屏幕往上移动半页。
按Ctrl+D:屏幕往下移动半页。
1.5、复制粘贴剪切删除
#删除(这种都是命令删除,BackSpace ,delete 键删除是在插入模式下进行)
x :每按一次删除光标所在位置上的一个字符。[超常用]
nx :例如,6x 表删除光标所在位置的后面6个字符。[常用]
X :大字的X,每按一次删除光标所在位置的前面一个字符。
nX :例如,20X 表删除光标所在位置的前面20个字符。
#剪切,删除
dd :删除光标所在行。[超常用]{剪切}
ndd :例如,6dd表删除从光标所在的该行往下数6行之文字。[常用]{剪切}
#复制粘贴,通常一起是使用
yw :将光标所在处到word尾(包括尾部空格)的字符复制到缓冲区中。
yy :复制光标所在行。[超常用]
nyy :如:6yy表示拷贝从光标所在的该行往下数6行之文字。[常用]
p:复制的内容往光标后粘贴。(指令‘nyy’与‘p’必须搭配使用)
1.6、替换,撤销
# 取代,替换
r : 取代光标所在处的字符:[常用]
R :取代字符直到按Esc为止。
ncw或nCW:修改指定数目的 word
nCC :修改指定数目的行
# 复原(undo)上一个指令,也就是撤销
u :假如您误操作一个指令,可以马上按u,回复到上一个操作。[超常用]
1.7、行号,收索
#显示行号
:set nu #显示行号
:set nonu #隐藏行号
#跳到指定行号
正常模式,先输入跳到的行号15,然后 Shift+g ,就跳到了15行
#跳到指定行, n 代表一个数字,再按Enter就会跳到该行了,如:15[Enter]就会跳到文章的第15行。[常用]
:n 回车(enter)键
#字符查找,word为你要查找的字符
:/word 回车(enter)键
#对查找到的内容进行查找
n : 匹配下一个
N : 匹配上一个
#关键字模糊查找,word为你要查找的字符
:?word 回车(enter)键
1.8、退出
:w #filename (输入“w filename”,将文章存入指定的文件名filename)
:wq #(输入“wq”,因为进入之时已经指定文件名testfile,所以会写入testfile并离开vi)
:x #保存退出
:q #不保存退出
:q! #(输入“q!”,强制离开并放弃编辑的文件)
2、开机、重启和用户登录注销
2.1、关机&重启命令
# 当我们关机或者重启时,都应该先执行以下 sync 指令,把内存的数据写入磁盘,防止数据丢失。
shutdown
shutdown -h now : 表示立即关机
shutdown -h 1 : 表示 1 分钟后关机
shutdown -r now : 立即重启
halt
就是直接使用,效果等价于关机
reboot
就是重启系统。
sync : 把内存的数据同步到磁盘
2.2、用户登录和注销
1) 登录时尽量少用 root 帐号登录,登录后再用”su - 用户名’命令来切换成系统管理员身份.
[root@localhost ~]# su - datian
su: user datian does not exis(还没建立大天啊)
2) 在提示符下输入 logout 即可注销用户
[root@localhost ~]# logout
3、用户管理
3.1、添加用户,添加密码
#新建用户
#当创建用户成功后,会自动的创建和用户同名的家目录
[root@localhost datian]# useradd mx
#也可以通过 useradd -d 指定目录 新的用户名,给新创建的用户指定家目录
[root@localhost home]# useradd -d /home/dog xiaoming
#给用户指定或者修改密码,root用户就是强大,无视密码规则
[root@localhost home]# passwd xiaoming
更改用户 xiaoming 的密码 。
新的 密码:
无效的密码: 密码少于 8 个字符
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
[root@localhost home]#
#当前登录用户自己改密
[root@localhost home]# passwd
更改用户 root 的密码 。
新的 密码:
3.2、删除用户
#删除用户 xm,但是要保留/home/mx
[root@localhost ~]# userdel mx
#删除用户 xiaoming 以及用户/home/xiaoming
--在删除用户时,我们一般不会将家目录删除
[root@localhost ~]# userdel -r xiaoming
3.3、查询用户
#uid就是用户id,gid就是所在组的id,组就是组名
[root@localhost ~]# id root
uid=0(root) gid=0(root) 组=0(root)
# 不存的用户返回如下
[root@localhost ~]# id xiaoming
id: xiaoming: no such user
3.4、切换用户
1)从权限高的用户切换到权限低的用户,不需要输入密码,反之需要。
2)当需要返回到原来用户时,使用 exit 指令则直接切换回去了
[root@localhost home]# useradd mx
[root@localhost home]# ls
mx
[root@localhost home]# su mx #中间不写 - 切换用户
[mx@localhost home]$ exit #退出,返回到原来的root用户
exit
[root@localhost home]#
4、用户组相关
4.1、添加,删除组
# 添加组名为 zc 的组
[root@localhost home]# groupadd zc
# 删除组名为 zc 的组
[root@localhost home]# groupdel zc
4.2、用户指定组别
[root@localhost home]# useradd -g hah xixi
useradd:“hah”组不存在
#添加xixi用户时为其指定hah组,看 gid
[root@localhost home]# groupadd hah
[root@localhost home]# useradd -g hah xixi
[root@localhost home]# id xixi
uid=1001(xixi) gid=1001(hah) 组=1001(hah)
#为已经存在的xixi用户更换新租 lbl ,看 gid
[root@localhost home]# groupadd lbl
[root@localhost home]# usermod -g lbl xixi
[root@localhost home]# id xixi
uid=1001(xixi) gid=1002(lbl) 组=1002(lbl)
5、用户信息文件
5.1、/etc/passwd 文件
#用户(user)的配置文件,记录用户的各种信息
#每行的含义:用户名:口令:用户标识号id:组标识号id:注释性描述:主目录:登录 Shell
[root@localhost ~]# vi /etc/passwd
root:x:0:0:root:/root:/bin/bash
....
mx:x:1000:1000::/home/mx:/bin/bash #新增的用户在最下方,注释性描述好像为空
xixi:x:1001:1002::/home/xixi:/bin/bash
5.2、/etc/shadow 文件
口令的配置文件
#每行的含义:登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
[root@localhost ~]# vi /etc/shadow
root:$6$zEUWu7wLAgXY6iHE$WUSOhFRh1SeuMGUDrvr2BgUfxZjTB32GyvbCLPnJMY/RX1fy1MS19DSDy6oPuWau3DXgY3GkTloAdhJFyzAdX.::0:99999:7:::
...
mx:!!:17981:0:99999:7::: #新建用户还没有设置密码
xixi:!!:17981:0:99999:7:::
5.3、/etc/group 文件
组(group)的配置文件,记录 Linux 包含的组的信息
#每行含义:组名:口令:组标识号id:组内用户列表
[root@localhost ~]# cat /etc/group
root:x:0:
...
mx:x:1000: #创建用户时,没指明所属组,就自动为其创建同名的组
hah:x:1001:
lbl:x:1002:
6、实用指令
6.1、指定运行级别
#运行级别说明:
0 :关机
1 :单用户【找回丢失密码】
2:多用户状态没有网络服务
3:多用户状态有网络服务
4:系统未使用保留给用户
5:图形界面
6:系统重启
#常用运行级别是 3 和 5 ,要修改默认的运行级别可改文件/etc/inittab
id:5:initdefault 这一行中的数字
but:
打开文件后并没有,看注释,inittab在使用systemd时不再使用。
#systemd使用“targets”而不是runlevels。默认情况下,有两个主要目标:
#multi-user.target:类似于运行级别3
#graphical.target:类似于运行级别5
systemctl set-default multi-user.target #文本启动
systemctl set-default graphical.target #图形启动
#修过修改了图形界面启动,启动后没成功,则如下:
重新启动,进入单用户模式
1、开机按e,然后要先择系统,接着选择内核kernel这一行,再按e, 然后在 quiet最后+空格+1
2、回车,再按b,就这样,可以启动单用户模式了,你再修改回来
3、vim /etc/inittab
4、id:5:initdefault: //这里的的5改成3
5、最后reboot(重启)就可以了
6.2、切换到指定运行级别的指令
#基本语法
init [012356]
#案例 1: 通过 init 来切换不同的运行级别,关机,重启
init 0
init 6
6.3、linux忘记密码
如何找回 root 密码,如果我们不小心,忘记 root 密码,怎么找回。
思路: 进入到 单用户模式 ,然后修改 root 密码。因为进入单用户模式,root 不需要密码就可以登录。
#主要是要进入到单用户模式,上面6.1也是进入单用户模式
解决:开机->在引导时输入 回车键-> 看到一个界面输入 e -> 看到一个新的界面,选中第二行(编辑
内核)在输入 e-> 在这行最后输入 1 ,再输入 回车键->再次输入 b ,这时就会进入到单用户模式。
这时,我们就进入到单用户模式,使用 passwd 指令来修改 root 密码。
7、帮助指令
当我们对某个指令不熟悉时,我们可以使用 Linux 提供的帮助指令来了解这个指令的使用方法。
7.1、man 获得帮助信息
基本语法:
man [命令或配置文件](功能描述:获得帮助信息)
#案例:查看 ls 命令的帮助信息
[root@Zsoft244 ~]# man ls #查询结果后,就是vim的命令模式,按 q 退出即可
7.2、help 指令
基本语法:
help 命令 (功能描述:获得 shell 内置命令的帮助信息)
#案例:查看 cd 命令的帮助信息
[root@Zsoft244 ~]# help cd
8、指令千万条,勤练第一条
8.1、文件目录类
8.1.1、各种操作指令
# pwd: 显示当前工作目录的绝对路径
pwd
[root@Zsoft244 home]# pwd #显示当前工作目录的绝对路径
/home
# ls: 查看当前目录的所有内容信息
ls [选项] [目录或是文件]
常用选项:
-a :显示当前目录所有的文件和目录,包括隐藏的,隐藏的文件linux是以点开头的文件[.文件名]
-l :以列表的方式显示信息
[root@Zsoft244 home]# ls
jboss lost+found svn svnconfig
[root@Zsoft244 home]# ls -l
total 48 #这个应该是文件夹
drwx------. 6 jboss jboss 24576 Mar 27 00:01 jboss #文件
[root@Zsoft244 home]# ls -al #组合命令
# cd: 切换到指定目录
cd [参数]
cd ~ 或者 cd :回到自己的家目录
cd .. 回到当前目录的上一级目录
# mkdir: 指令用于创建目录
mkdir [选项] 要创建的目录
常用选项:
-p :创建多级目录
[root@Zsoft244 ~]# mkdir -p /home/dog/cat #由于只存在home,想在路径下逐层创建多个,就要加p
# rmdir: 指令删除空目录
rmdir [选项] 要删除的空目录
rmdir 删除的是空目录,如果目录下有内容时无法删除的。
提示:如果需要删除非空目录,需要使用 rm -rf 要删除的目录(这是一个强制删除)
[root@localhost ~]# rmdir /home/dog/ #删除一个目录 /home/dog
# touch: 指令创建空文件
touch 文件名称
[root@localhost home]# touch hello.txt #创建一个hello空文本文件
[root@localhost home]# ls
hello.txt mx xixi
8.1.2、cp 复制指令[重要]
#cp [选项] source dest
常用选项
-r :递归复制整个文件夹
1、拷贝单个文件,拷贝指定的路径必须存在,例如下面拷贝到 111 目录,但是系统 111 目录不存在
[root@localhost ~]# cp /home/hello.txt /home/111/
cp: 无法创建普通文件"/home/111/": 不是目录
2、拷贝时更改拷贝后文件名,例如拷贝后文件名为dog ,如果存在dog 文件,就会问是否覆盖,dog后是没有 ‘/’的
[root@localhost ~]# cp /home/hello.txt /home/dog
cp:是否覆盖"/home/dog"? y
[root@localhost ~]# vi /home/dog
3、递归复制
[root@localhost home]# ls #查看当前目录
dog hello.txt mx xixi
[root@localhost home]# cd mx
[root@localhost mx]# touch a.txt b.txt c.txt # 在 mx 下创建三个文件
[root@localhost mx]# ls
a.txt b.txt c.txt
[root@localhost mx]# cd ..
[root@localhost home]# cp mx/ xixi/ # 没有 -r 选项复制 mx 直接略过
cp: 略过目录"mx/"
[root@localhost home]# cd xixi
[root@localhost xixi]# ls
[root@localhost xixi]# cd ..
[root@localhost home]# cp -r mx/ xixi/ # 将 mx 目录整个复制到了 xixi目录下
[root@localhost home]# ls xixi/
mx
[root@localhost home]# ls xixi/mx/ # 文件也被复制了过来
a.txt b.txt c.txt
[root@localhost home]#
【注意】:
由于文件递归复制可能会有覆盖情况,而大量文件覆盖需要用户逐一手动确认,很麻烦,这样解决
[root@localhost home]# cp -r mx/ xixi/ # 再次使用上面的复制命令
cp:是否覆盖"xixi/mx/.bash_logout"? y
cp:是否覆盖"xixi/mx/.bash_profile"? y
cp:是否覆盖"xixi/mx/.bashrc"? y
cp:是否覆盖"xixi/mx/.bash_history"? y
cp:是否覆盖"xixi/mx/a.txt"? y
cp:是否覆盖"xixi/mx/b.txt"? y
cp:是否覆盖"xixi/mx/c.txt"? y
[root@localhost home]# \cp -r mx/ xixi/ #强制覆盖,不会再有提示
8.1.3、rm 删除指令
#rm 指令移除【删除】文件或目录
rm [选项] 要删除的文件或目录
•常用选项
-r :递归删除整个文件夹
-f : 强制删除不提示
[root@localhost home]# rm -rf xixi/mx/ #删除就这个, rm -rf
[root@localhost home]# ls xixi/
8.1.4、mv 移动或重命名指令
#mv 移动文件与目录或重命名
mv oldNameFile newNameFile (功能描述:重命名)
mv /temp/movefile /targetFolder (功能描述:移动文件)
[root@localhost home]# ls
a.txt b.txt c.txt dog mx xixi
[root@localhost home]# mv a.txt xixi/ #移动到xixi目录下,xixi存在,系统知道是目录
[root@localhost home]# ls xixi/
a.txt hello.txt
[root@localhost home]# mv b.txt xixi/dog/ # dog目录不存在,后面 '/' ,表示目录
mv: 无法将"b.txt" 移动至"xixi/dog/": 不是目录
[root@localhost home]# mv b.txt xixi/dog # 将b.txt移到xixi目录下,并重命名为 dog文件
[root@localhost home]# ll xixi/
总用量 4
-rw-r--r--. 1 root root 0 3月 28 10:18 a.txt
-rw-r--r--. 1 root root 0 3月 28 10:18 dog
-rw-r--r--. 1 root root 8 3月 28 09:19 hello.txt
8.2、查看文件指令
8.2.1、cat,more查看
# cat: 查看文件内容,是以只读的方式打开
cat [选项] 要查看的文件
•常用选项
-n :显示行号
#cat 只能浏览文件,而不能修改文件,为了浏览方便,一般会带上管道命令 | more
[root@localhost home]# cat hello.txt | more #分页显示
# more: 指令是一个基于 VI 编辑器的文本过滤器,它以全屏幕的方式按页显示文本文件的内容
# more指令中内置了若干快捷键
more 要查看的文件
•常用选项
+num :从第num行开始显示;
-num :定义屏幕大小,为num行;
+/pattern :从文件中pattern单词的前两行开始显示;
-c :从顶部清屏然后显示;
-l :忽略Ctrl+l (换页)字符;
-p :通过清除窗口而不是滚屏来对文件进行换页。和-c参数有点相似;
-s :把连续的多个空行显示为一行;
-u :把文件内容中的下划线去掉
[root@localhost home]# more /etc/profile #环境变量,这里修改会对所有用户起作用
more 快捷键 | 功能说明 |
---|---|
Space(空格键) | 向下滚动一屏 |
Enter (回车键) | 向下n行,需要定义,默认为1行; |
q | 立即退出,不再查看此文件内容 |
Ctrl+f | 向下滚动一屏 |
Ctrl+b | 返回上一屏 |
= | 输出当前行的行号 |
:f | 输出文件名和当前行的行号 |
! 命令 | 调用Shell,并执行命令 |
8.2.2、less 查看
#less 指令,大文件显示
less 指令用来分屏查看文件内容,它的功能与 more 指令类似,但是比 more 指令更加强大,支持各种显示终端。less 指令在显示文件内容时,并不是一次将整个文件加载之后才显示,而是根据显示需要加载内容,对于显示大型文件具有较高的效率。
•常用选项
-p :pattern 搜索pattern;比如在/etc/profile搜索单词MAIL,就用 less -p MAIL /etc/profile
-c :从顶部(从上到下)刷新屏幕,并显示文件内容。而不是通过底部滚动完成刷新;
-f :强制打开文件,二进制文件显示时,不提示警告;
-i :搜索时忽略大小写;除非搜索串中包含大写字母;
-I :搜索时忽略大小写,除非搜索串中包含小写字母;
-m :显示读取文件的百分比;
-M :显法读取文件的百分比、行号及总行数;
-N :在每行前输出行号;
-s 把连续多个空白行作为一个空白行显示;
[root@localhost home]# less /opt/金庸-射雕英雄传精校版.txt
less 快捷键 | 功能说明 |
---|---|
Enter | 向下移动一行 |
b (backword) | 向上滚动一屏 |
f (forword) | 向下滚动一屏 |
Space | 向下滚动一屏 |
d | 向下滚动半屏 |
u | 向上滚动半屏 |
g | 跳到第一行 |
G | 跳到最后一行 |
p n% | 跳到文件的n%处 |
/pattern | 搜索pattern ,比如 /MAIL表示在文件中搜索MAIL单词 |
q | 退出less |
PageUP,PageDown | 自己测咯 |
8.2.3、> 指令 和 >> 指令
#> 指令 和 >> 指令,主要是可将 【各种命令】 的结果进行保存
> 输出重定向 : 会将原来的文件的内容覆盖
>> 追加: 不会覆盖原来文件的内容,而是追加到文件的尾部
#ls -l > a.txt ,将 ls -l 的显示的内容覆盖写入到 a.txt 文件,如果该文件不存在,就创建该文件
[root@localhost home]# ls -l > a.txt
8.2.4、echo 打印输出
# echo: 输出内容到控台
echo [选项] [输出内容]
#使用 echo 指令输出环境变量,输出当前的环境路径
[root@localhost ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[root@localhost ~]# help echo
echo: echo [-neE] [参数 ...]
将参数写到标准输出。
在标准输出上显示 ARG 参数后跟一个换行。
选项:
-n 不要追加换行,不加参数,echo打印内容后会在内容后换一行
-e 启用下列反斜杠转义的解释,打印下面的字符就会转成对应的键盘效果
-E 显式地抑制对于反斜杠转义的解释
`echo' 对下列反斜杠字符进行转义:
\a 警告(响铃)
\b 退格
\c 抑制更多的输出
\e 转义字符
\f 格式提供
\n 换行
\r 回车
\t 横向制表符
\v 纵向制表符
8.2.5、head,tail 头尾查看
#head: 用于显示文件的开头部分内容,默认情况下 head 指令显示文件的前 10 行内容
head 文件 (功能描述:查看文件头 10 行内容)
head -n 5 文件 #功能描述:查看文件头 5 行内容,5 可以是任意行数)
# tail 用于输出文件中尾部的内容,默认情况下 tail 指令显示文件的后 10 行内容
tail 文件 #功能描述:查看文件后 10 行内容
tail -n 5 文件 #功能描述:查看文件后 5 行内容,5 可以是任意行数
tail -f 文件 #功能描述:实时追踪该文档的所有更新,工作经常使用,动态的,可查看日志
8.3、ln 链接指令
# ln 可以用来创建软硬链接,而软链接又较为常用
ln [选项] 源文件 目标文件
•常用选项:
-s:建立软链接文件。如果不加"-s"选项,则建立硬链接文件;
-f:强制,如果目标文件已经存在,则删除目标文件后再建立链接文件;
#建立硬链接:可同时多人协作编辑同一个文件
[root@localhost home]# ls
a.txt c.txt dog hello.txt mx xixi
[root@localhost home]# ln a.txt aln
[root@localhost home]# ls -il
12603230 -rw-r--r--. 2 root root 304 3月 28 11:59 aln
12603230 -rw-r--r--. 2 root root 304 3月 28 11:59 a.txt
结论:
1)硬链接就是将源文件完全复制,甚至 id 节点都是一样,故有如下特点
2)不论是修改源文件,还是修改硬链接文件,另一个文件中的数据都会发生改变
3)不论是删除源文件,还是删除硬链接文件,只要还有一个文件存在,这个文件(inode 号是 12603230 的文件)都可以被访问,文件的存储是系统按 inode 节点记录的
4)硬链接不能跨文件系统(分区)建立,因为在不同的文件系统中,inode 号是重新计算的
5)硬链接不能链接目录,因为如果给目录建立硬链接,那么不仅目录本身需要重新建立,目录下所有的子文件,包括子目录中的所有子文件都需要建立硬链接,这对当前的 Linux 来讲过于复杂
#建立软连接
#软链接也叫符号链接,类似于 windows 里的快捷方式,主要存放了链接其他文件的路径
【注意】:
软链接文件的源文件必须写成绝对路径,而不能写成相对路径(硬链接没有这样的要求);否则软链接文件会报错。这是初学者非常容易犯的错误。
#在/home 目录下创建一个软连接 linkToRoot,连接到 /root 目录
[root@localhost home]# ln -s /root/ linkToRoot
[root@localhost home]# ls
aln a.txt linkToRoot mx xixi
[root@localhost home]# cd linkToRoot/
[root@localhost linkToRoot]# ls # 这里其实进入 /root 目录
anaconda-ks.cfg
结论:
1)软链接可以链接目录
2)软链接可以跨分区
8.4、history 指令
# history :查看已经执行过历史命令,也可以执行历史指令
[root@localhost home]# history #显示所有的历史指令
[root@localhost home]# history 3 #显示最近执行的 3 条指令
150 cd /home/
151 ls
152 history 3
[root@localhost home]# !151 # 根据历史指令前的编号执行 ls 指令
ls
aln a.txt c.txt dog hello.txt mx xixi
8.5、时间日期类
#date 指令-显示当前日期
•基本语法
1) date (功能描述:显示当前时间)
2) date +%Y (功能描述:显示当前年份)
3) date +%m (功能描述:显示当前月份)
4) date +%d (功能描述:显示当前是哪一天)
5) date "+%Y-%m-%d %H:%M:%S"(功能描述:显示年月日时分秒)
[root@localhost home]# date
2019年 03月 28日 星期四 13:55:05 CST
[root@localhost home]# date +%Y
2019
[root@localhost home]# date "+%Y-%m-%d %H:%M:%S" # 多个格式化应该要字符串括起来
2019-03-28 13:56:08
#date 指令-设置日期
date -s 字符串时间
[root@localhost home]# date -s "2019-3-28 16:08:20"
2019年 03月 28日 星期四 16:08:20 CST
# cal:查看日历指令
# 用于查看日历等时间信息,如只有一个参数,则表示年份(1-9999),如有两个参数,则表示月份和年份
cal [参数][月份][年份]
•常用选项:
-3 显示系统前一个月,当前月,下一个月的月历
-s 显示星期天为一个星期的第一天,默认的格式
-m 显示星期一为一个星期的第一天
-j 显示在当年中的第几天(一年日期按天算,从1月1号算起,默认显示当前月在一年中的天数)
[root@localhost home]# cal #功能描述:不加选项,显示本月日历
三月 2019
日 一 二 三 四 五 六
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
[root@localhost home]# cal 2019 #显示2019年全年日历
[root@localhost home]# cal 5 2019 #显示2019年5月
8.6、搜索查找类
# find: 指令将从指定目录向下递归地遍历其各个子目录,将满足条件的文件或者目录显示在终端
find [查找起始路径] [查找条件] [处理动作]
#根据名称查找
[root@localhost home]# find ./ -name 'a*' # 查询的name区分大小写
./mx/a.txt
./xixi/a.txt
./a.txt
./aln
[root@localhost home]# find ./ -iname 'a*' # 查询的name不区分大小写
#根据文件从属关系查找
-user USERNAME:查找属主指定用户的所有文件;
-group GRPNAME:查找属组指定组的所有文件;
-uid UID:查找属主指定的UID的所有文件;
-gid GID:查找属组指定的GID的所有文件;
-nouser:查找没有属主的文件; (用户的文件在,但用户已被删除)
-nogroup:查找没有属组的文件;
[root@localhost home]# find ./ -user root # 查找 root 用户的文件,ll可查看嘛
#根据文件的类型查找
-type:根据不同的文件类型筛选
文件类型:
f 普通文件
d 目录文件
l 符号链接文件
b 块设备 文件
c 字符设备文件
p 管道文件
s 套接字文件
[root@localhost home]# find ./ -type d # 查找此路径下有哪些目录
#根据文件的大小查找
-size [+ | -] num指定单位 # 常用单位:k, M, G
# 查找整个 linux 系统下大于 20m 的文件(+n 大于 -n 小于 n 等于)
[root@localhost home]# find / size +20M
# locate 指令,
locaate 指令可以快速定位文件路径。locate 指令利用事先建立的系统中所有文件名称及路径的,locate 数据库实现快速定位给定的文件。Locate 指令无需遍历整个文件系统,查询速度较快。为了保证查询结果的准确度,管理员必须定期更新 locate 时刻。
•基本语法
locate 搜索文件
•特别说明
由于 locate 指令基于数据库进行查询,所以第一次运行前,必须使用 updatedb 指令创建 locate 数
据库。
# CentOs7 更新后
# mlocate 新型的 locate,updatedb速度更快
[root@localhost ~]# updatedb
-bash: updatedb: 未找到命令
[root@localhost ~]# yum install mlocate
....
[root@localhost ~]# updatedb
[root@localhost ~]# locate a.txt
/home/a.txt
/home/mx/a.txt
/home/xixi/a.txt
....
# whereis: 指令只能用于程序名的搜索,如果省略参数则返回所有的信息
•常用选项:
-b 定位可执行文件
-m 定位帮助文件
-s 定位源代码文件
[root@localhost ~]# whereis -b ls # 查询 ls 指令的执行二进制程序
ls: /usr/bin/ls
# which: 命令是在PATH变量指定的路径中搜索指定的系统命令的位置
# 也只收索的指令在环境变量里记录了才能找到
[root@localhost ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[root@localhost ~]# which find # 存放 find 的目录在环境变量里设置了哦
/usr/bin/find
8.7、grep 指令和 管道符号 |
grep 过滤查找 , 管道符,“|”,表示将前一个命令的处理结果输出传递给后面的命令处理
grep [选项] 查找内容 源文件
[选项] :
-n :显示匹配行及行号
-i :忽略字母大小写
# hello.txt 文件中,查找 "yes" 所在行,并且显示行号,区分大小写
[root@localhost home]# cat hello.txt | grep -n yes
2:yes
[root@localhost home]# cat hello.txt | grep -ni yes #不区分大小写
2:yes
3:Yes
4:YES
8.8、压缩解压类指令
8.8.1、gzip/gunzip 指令
#gzip 用于压缩文件, gunzip 用于解压的
gzip 文件 (功能描述:压缩文件,只能将文件压缩为*.gz 文件)
gunzip 文件.gz (功能描述:解压缩文件命令)
-n或--no-name 压缩文件时,不保存原来的文件名称及时间戳记
-N或--name 压缩文件时,保存原来的文件名称及时间戳记
-r或--recursive 递归处理,将指定目录下的所有文件及子目录一并处理
-v或--verbose 显示指令执行过程
#注意:
1.当我们使用 gzip 对文件进行压缩后,不会保留原来的文件
2.使用递归打包目录也只是把目录下的文件打包,目录并没有打包
[root@localhost home]# gzip -rv xixi/
xixi//.bash_logout: -11.1% -- replaced with xixi//.bash_logout.gz
xixi//.bash_profile: 21.2% -- replaced with xixi//.bash_profile.gz
xixi//.bashrc: 22.5% -- replaced with xixi//.bashrc.gz
xixi//a.txt: 0.0% -- replaced with xixi//a.txt.gz
xixi//dog: 0.0% -- replaced with xixi//dog.gz
[root@localhost home]# ls
aln a.txt c.txt.gz dog hello.txt mx xixi
[root@localhost home]# cd xixi/
[root@localhost xixi]# ls
a.txt.gz dog.gz
[root@localhost xixi]# gunzip dog.gz
[root@localhost xixi]# ls
a.txt.gz dog
[root@localhost xixi]#
8.8.2、zip/unzip 指令
# zip 用于压缩文件, unzip 用于解压的,这个在项目打包发布中很有用的
•基本语法
zip [选项] 指定压缩名.zip 将要压缩的内容路径 #(功能描述:压缩文件和目录的命令)
unzip [选项] 解压的路径 待解压的文件.zip #(功能描述:解压缩文件)
•zip 常用选项
-r:递归压缩,即压缩目录
•unzip 的常用选项
-d<目录> :指定解压后文件的存放目录
[root@localhost home]# ls mx/
a.txt b.txt c.txt
[root@localhost home]# zip -r new.zip /home/mx/ #指定压缩 /home/mx 目录
...
adding: home/mx/a.txt (stored 0%)
adding: home/mx/b.txt (stored 0%)
adding: home/mx/c.txt (stored 0%)
[root@localhost home]# ls
aln a.txt c.txt.gz dog hello.txt mx new.zip xixi
[root@localhost home]# unzip -d /opt new.zip #指定解压到 /opt 目录下
Archive: new.zip
creating: /opt/home/mx/
...
extracting: /opt/home/mx/a.txt
extracting: /opt/home/mx/b.txt
extracting: /opt/home/mx/c.txt
[root@localhost home]# ls /opt/home/mx/ #opt 下解压出 home 目录
a.txt b.txt c.txt
[root@localhost home]#
8.8.3、tar 指令
# tar 指令 是打包指令,最后打包后的文件是 .tar.gz 的文件
tar [选项] XXX.tar.gz 打包的内容 #(功能描述:打包目录,压缩后的文件格式.tar.gz)
选项 | 功能 |
---|---|
-c | 产生 tar 打包文件 |
-v | 显示详细信息 |
-f | 指定压缩后的文件名 |
-z | 打包同时压缩 |
-x | 解包 .tar 文件 |
#压缩多个文件,将 a.txt 和 b.txt 压缩成 new.tar.gz
[root@localhost mx]# tar -zcvf new.tar.gz a.txt b.txt
a.txt
b.txt
[root@localhost mx]# ls
a.txt b.txt c.txt new.tar.gz
#压缩目录
[root@localhost home]# tar -zcvf mulu.tar.gz mx/
mx/a.txt
mx/b.txt
mx/c.txt
mx/new.tar.gz
[root@localhost home]# ls
mulu.tar.gz mx
#解压到指定目录:/opt ,当然不指定就默认解压到当前目录
#注意:指定解压到的那个目录,事先要存在才能成功,否则会报错
[root@localhost home]# tar -zxvf mulu.tar.gz -C /opt
mx/
mx/a.txt
mx/b.txt
mx/c.txt
mx/new.tar.gz
[root@localhost home]# ls /opt/
home mx
9、组管理和权限管理
9.1、所有者,所在组,其它组
在 linux 中每个文件有所有者、所在组、其它组的概念。每个用户必须属于一个组,不能独立于组外。
-
文件/目录 所有者,所在组
一般为文件的创建者,谁创建了该文件,就自然的成为该文件的所有者
当某个用户创建了一个文件后,默认这个文件的所在组就是该用户所在的组
-
查看文件的所有者,所在组
[root@localhost home]# groupadd police #添加组 [root@localhost home]# useradd -g police mx #新建用户划分到 police 组中 [root@localhost home]# id mx #查看用户的组 uid=1000(mx) gid=1003(police) 组=1003(police) [root@localhost home]# su mx #切换为 mx 用户 [mx@localhost home]$ cd mx/ #进入自己的mx目录,才有创建文件的权限 [mx@localhost ~]$ touch hello.png [mx@localhost ~]$ ls -l #查看 总用量 0 -rw-r--r--. 1 mx police 0 4月 3 17:35 hello.png # hello.png所有者是mx,组别是police drwx------. 2 mx police 79 4月 3 17:35 mx
-
其他组
这是一个相对的概念,对于此文件而言,除文件的所有者和所在组的用户外,系统的其它用户都是此文件的其它组。
9.2、修改文件所有者,所在组
#修改文件所有者
指令:chown 用户名 文件名
[root@localhost home]# touch 123.mp4 # root用户创建文件
[root@localhost home]# ls -l
总用量 28
-rw-r--r--. 1 root root 0 4月 3 17:44 123.mp4
[root@localhost home]# chown mx 123.mp4
[root@localhost home]# ls -l
-rw-r--r--. 1 mx root 0 4月 3 17:44 123.mp4 #文件所有者已变为 mx
#修改文件所在的组
指令:chgrp 组名 文件名
[root@localhost home]# chgrp lbl 123.mp4
[root@localhost home]# ls -l
总用量 28
-rw-r--r--. 1 mx lbl 0 4月 3 17:44 123.mp4 # 组别由 police 切换到 lbl 组
9.3、修改用户所在的组
usermod –g 组名 用户名
[root@localhost home]# id mx
uid=1000(mx) gid=1003(police) 组=1003(police)
[root@localhost home]# usermod -g lbl mx
[root@localhost home]# id mx
uid=1000(mx) gid=1002(lbl) 组=1002(lbl) #由原来的 police 组移到了 lbl 组
#补充:改变该用户登陆的初始目录,测试被占用
usermod –d 目录名 用户名
9.4、权限的基本介绍
-rwxrw-r-- 1 root root 1213 4月 2 09:39 abc
观看粗体内容,解释说明(0~9)如下: 1)、第 0 位确定文件类型( - [普通文件] ,d [目录] , l [软连接], c [字符设备:鼠标,键盘], b [块文件:硬盘]) 2)、第 1-3 位确定所有者(该文件的所有者)拥有该文件的权限 ---User 3)、第 4-6 位确定所属组(同用户组的)拥有该文件的权限 ---Group 4)、第 7-9 位确定其他用户拥有该文件的权限 ---Other
其他列解释:
1 :如果是文件,表示硬链接的数
root root : 所有者 所有组
1213 :文件大小,如果是目录4096,就是确定4096,但是我测试不是
4月 2 09:39 :MM月dd日hh时mm分 ,最新更新时间
abc : 文件名咯
rwx 权限详解
1、rwx 作用到文件
1) [ r ]代表可读(read): 可以读取,查看
2) [ w ]代表可写(write): 可以修改,但是不代表可以删除该文件,删除一个文件的前提条件是对该
文件所在的目录有写权限,才能删除该文件.
3) [ x ]代表可执行(execute):可以被执行
2、rwx 作用到目录
1) [ r ]代表可读(read): 可以读取,ls 查看目录内容
2) [ w ]代表可写(write): 可以修改,目录内创建+删除+重命名目录
3) [ x ]代表可执行(execute):可以进入该目录
3、案例解析:
-rwxrw-r-- 1 root root 1213 四月 2 09:39 abc
第一个字符代表文件类型: 文件 (-),目录(d),链接(l),其余字符每 3 个一组(rwx) 读(r) 写(w) 执行(x)
第一组 rwx : 文件拥有者的权限是读、写和执行
第二组 rw- : 与文件拥有者同一组的用户的权限是读、写但不能执行
第三组 r-- : 不与文件拥有者同组的其他用户的权限是读不能写和执行
4、权限数字
可用数字表示为: r=4,w=2,x=1 因此 rwx=4+2+1=7,灵活运用的话操作更便捷
9.5、修改权限chmod
通过 chmod 指令,可以修改文件或者目录的权限
#第一种方式:+ 、-、= 变更权限
u:所有者 g:所有组 o:其他人 a:所有人(u、g、o 的总和)
1) chmod u=rwx,g=rx,o=x 文件目录名
2) chmod o+w 文件目录名
3) chmod a-x 文件目录名
[root@localhost home]# ls -l
-rw-r--r--. 1 mx lbl 0 4月 3 17:44 123.mp4
[root@localhost home]# chmod u+x,g+wx,o+w 123.mp4
[root@localhost home]# ls -l
-rwxrwxrw-. 1 mx lbl 0 4月 3 17:44 123.mp4
#第二种方式:通过数字变更权限,给数字就直接使用 = 赋值咯
r=4 w=2 x=1 ,rwx=4+2+1=7 #权限值数据
chmod 751 文件目录名 #相当于chmod u=rwx,g=rx,o=x 文件目录名
[root@localhost home]# chmod 731 123.mp4
[root@localhost home]# ls -l
-rwx-wx--x. 1 mx lbl 0 4月 3 17:44 123.mp4