Linux 基础命令快速入门

Linux 基础命令快速入门

目录

Linux 基础命令快速入门:

1、vim 命令记录

2、开机、重启和用户登录注销

3、用户管理

4、用户组相关

5、用户信息文件

6、实用指令

7、帮助指令

8、指令千万条,勤练第一条

8.1、文件目录类

8.2、查看文件指令

8.3、ln 链接指令

8.4、history 指令

8.5、时间日期类

8.6、搜索查找类

8.7、grep 指令和 管道符号 |

8.8、压缩解压类指令

9、组管理和权限管理


 

本文档是面对具有一定的 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

猜你喜欢

转载自blog.csdn.net/w2462140956/article/details/89012880
今日推荐