【Linux】指令不迷路:零基础也能看懂的命令用法+场景化案例
前言: Linux操作系统的指令篇,Linux举出指令是Linux操作系统的核心工具,能帮助完成从文件管理到系统监控的各种基础任务,对于日常使用、开发或运维都至关重要。
文件和目录相关指令:
ls:列出该目录下的所有子目录与文件
语法:ls 选项 目录或文件
ls -l :列出文件的详细信息
ls -a :列出目录下的所有文件,包括以 . 开头的隐含文件

ls 和其他的常用选项:
【注】 ls后面可以跟几个常用选项一起,比如:ls -al
pwd: 显示用户当前所在的目录

cd 目录名: 改变工作目录。将当前工作目录改变到指定的目录下
首先要认识一些关于目录的相关知识:磁盘上的文件和目录组成一棵目录树,把根目录root当成根节点,其余的每个节点都是目录或文件。目录可能是叶子(空目录),也可能是节点。
绝对路径:⼀般从/开始,不依赖其他⽬录的定位⽂件的⽅式
相对路径:相对于当前⽤⼾所处⽬录,定位⽂件的路径⽅式
- cd ~: 返回到用户目录
 - cd … : 返回上级目录
 - cd directory : 进入指定目录(该方式是相对路径)
 - cd - : 返回最近目录

 
touch 选项 文件名 :更改文档或目录的日期时间,或新建一个不存在的文件
- -a : 改变文件内容最后一次被读取的时间
 - -c :改变文件内容最后一次被修改的时间
 
创建一个新文件:

-a选项和-c选项效果:

【注】-c选项改的是整个文件的属性,所以三个都会变。
mkdir 选项 dirname :在当前目录下创建一个名为“diename”的目录
- -p : 一个路径的名称。若该路径目录尚未存在,加此选项系统会自动建立好那些尚不存在的目录,简单来说就是一次可以建立多个目录。
 
【注】该选项可加可不加,不加就是创建一个目录
效果图:

rmdir 选项(-p) dirname : 与mkdir对应的一个命令,功能是删除空目录
- -p : 子目录删除后,父目录是空目录的话,连带父目录也删除
 
rm 选项 dirname/dir : 删除文件或命令
- -f : 即使是只读文件也直接删除
 - -i : 删除时逐一询问确认
 - -r : 删除目录及其下面的所有文件
 
【注】以上的选项可以组合使用,如 rm -rf

cp 选项 源文件或目录名 目标文件或目录 : 复制文件或目录
- -f : 强⾏复制⽂件或⽬录,不论⽬的⽂件或⽬录是否已经存在
 - -i : 覆盖⽂件之前先询问⽤⼾
 - -r : 递归处理,将指定⽬录下的⽂件与⼦⽬录一并处理
 
常用的命令:
- cp src(源文件或目录) dst(目标文件或目录)
 - cp -rf src_dir dst_dir : 按树状给拷贝目录
 - cp src dst_dir/newname : 拷贝并修改名称
 
mv 选项 源文件或目录 目标文件或目录 :用来移动文件或将文件改名
- -f : 如果⽬标⽂件已经存在,不会询问⽽直接覆盖
 - -i : 若⽬标⽂件(destination)已经存在时,就会询问是否覆盖!
 
常用的命令:
- mv src(源文件或目录) dst(目标文件或目录)
 - mv src newname :对源文件或目录进行重命名
 
内容查看与搜索相关指令:
cat 选项 文件 : 查看目标文件内容
- -b : 对⾮空输出⾏编号,空⾏不做编号
 - -n : 对输出的所有行进行编号
 - -s : 不输出多行空行
 
echo 向显示器写入,向指定文件写入–>重定向操作,文件不存在就创建
- echo “aaa”>文件名:清空文件内容再写入
 - echo “aaaa”>>文件名:追加重定向
【注】这部分内容后面章节会更加详细介绍 

more 选项 文件: 功能类似 cat,但更适合查看内容较长的文件,可按页显示内容,避免信息一次性刷屏
- -n:指定输出行数
 - q: 退出more
 
less 选项 文件 : less与more类似,但使⽤less可以随意浏览文件,支持向前 / 向后翻页、搜索等高级操作,而more仅能向前移动
- -i: 忽略搜索时的大小写
 - -N: 显示每行的行号
 - /字符串:向下搜索“字符串”的功能
 - ?字符串:向上搜索“字符串”的功能
 - n:重复前⼀个搜索(与/或?有关)
 - N:反向重复前一个搜索(与/或?有关)
 - q:退出
 

【注】更多功能得去试试才行,不多展示。
head/tail指令: head用来显示档案的开头⾄标准输出中,而tail就是看档案的结尾
head 选项 文件名
- -n : 显示行数
 
tail 选项 文件名
- -f : 循环读取
 - -n : 显示行数
 

【注】对于大文件的浏览有用,查看日志等。
grep 选项 \" 字符 \" 文件 : 在文件中搜索字符串,将找到的行打印出来
- -i :忽略大小写
 - -n:顺便输出行号
 - -v:反向选择,即显示出没有\" 字符 \"内容的那一行
 
系统与权限管理相关指令:
date :显示时间
显示方面,设定指定格式,格式设定为一个加号后接数个标记,常用标记如下:
- %H:小时
 - %M:分钟
 - %S:秒
 - %X:相当于%H:%M:%S
 - %d:日
 - %m:月份
 - %Y:完整年份
 - %F:相当于%Y-%m-%d
 
时间戳:
介绍:时间戳是一个用于标识某一事件发生的具体时间的数字或字符串,常指Unix时间戳,即从协调世界时(UTC)1970 年 1 月 1 日 0 时 0 分 0 秒(也称为 “Unix 纪元”)起至某一时刻的总秒数(不包含闰秒)。
cal 选项 年份: 用来显示公历(阳历)日历,如只有一个参数,表示年份(1-9999),如有两个参数,表示月份和年份
- -3:显示系统前一个月,当前月,下一个月的月历
 - -j:显示在当年中的第几天(一年日期按天算,从1月1号算起,默认显示当前月中的天数)
 - -y:显示当前年份的日历
 

find 路径 选项: 用于在文件树中查找文件,并作出相应的处理(可能访问磁盘)
- -name:按照文件名查找文件
 
which 指令: 搜索系统指定的命令
whereis 指令: 用于找到程序的源、二进制文件或手册

uname 选项 : 压缩与打包相关指令:用来获取电脑和操作系统的相关信息
- -a:详细输出所有信息,依次为内核名称,主机名,内核版本号,内核版本,硬件名,处理器类型,硬件平台类型,操作系统名称
 
lsb_release-a:查看操作系统版本(该指令是单独的指令)
zip 压缩文件.zip 目录或文件:将⽬录或⽂件压缩成zip格式
unzip 选项 压缩文件名.zip 目标目录: 解压文件
- -r:递归处理,将指定目录下的所有文件和子目录一并处理
 - -d:指定解压目录
 - -l :列出压缩包内的文件和目录结构
 

tar 选项 文件与目录: 打包/解包,不打开它,直接看内容
- -c:建立一个压缩文件的参数指令(create的意思)
 - -x:解开一个压缩⽂件的参数指令
 - -t:查看
tarfile⾥⾯的⽂件 - -z:是否同时具有
gzip(压缩工具)的属性,亦即是否需要用gzip压缩 - -j:是否同时具有
bzip2(压缩工具)的属性,亦即是否需要用bzip2压缩 - -v:压缩的过程中显示文件,这个常用,但不建议用在背景执行过程
 - -f:使用档名,请留意,在f之后要立即接档名喔!不要再加参数
 - -C:解压到指定目录
 

【注】还有其他的案例,如:
- tar -zcvf /root/tmp.tar.gz /root/tmp (路径写自己的) :打包后以gzip压缩
 - tar -jcvf /root/tmp.tar.bz2 /root/tmp (路径写自己的):打包后以bzip压缩
 - tar tar -zcvf /root/tmp.tar.gz :查阅该压缩文件内有哪些文件
 - tar -zcvf /root/tmp.tar.gz :把该文件压缩到当前路径下
 
重要的几个热键:
- Tab键:具有命令补全和档案补齐的功能
 - Ctrl+c:把当前程序/进程杀掉
 - Ctrl+d:键盘输入结束;也可用来取代exit
 
Linux权限的概念:
Linux下有两种用户:超级用户(root)、普通用户:
- 超级用户::可以在linux系统下做任何事情,不受限制
 - 普通用户:在linux下做有限的事情
 - 超级用户的命令提示符是“#”,普通用户的命令提示符是“$”
切换用户:su 用户名
要从普通用户切换回root用户: - su root(root可以省略),然后输入root的密码
 - Ctrl+D
 
Linux权限管理:
文件访问者的分类:
- 文件和目录的所有者:u–user
 - 文件和文件目录的所有者所在的组的用户:g–Group
 - 其他用户:o–others
 
文件类型和访问权限:
文件类型:
- d:文件夹
 - -:普通文件
 - l:软连接(类似于快捷方式)
 - b:块设备文件(硬件)
 - p:管道文件
 - c:字符设备文件
 - s:套接口文件
 
基本权限:
- 读(r–read):Read对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限
 - 写(w–write)::Write对文件而言,具有修改文件内容的权限;对目录来说具有删除移动目录内文件的权限
 - 执行(x–execute):execute对文件而言,具有执行文件的权限;对目录来说,具有进入文件的权限
 - “—”:表示不具有该项权限
 

文件访问权限的相关设置的方法:
chmod:
(1) chmod 选项 用户名 文件名 : 设置文件的访问权限
- R :递归修改目录文件的权限(只有文件的拥有者和root可以改变文件的权限)
 
(2) chmod命令的权值格式:用户表示符+/-=权限字符
- +:向权限范围增加权限代号所表示的权限
 - -:向权限范围取消权限代号所表示的权限
 - =:向权限范围赋予权限代号所表示的权限
 
(3)用户符号
- u:拥有者
 - g:拥有者同组
 - o:其他用户
 - a:所有用户
 
chown:
(1)chown 选项 用户名 文件名:修改文件的拥有者(其他的内容同chmod)
chgrp:
(1)chgrp 选项 用户组名 文件名 :修改文件或目录的所属组(其他内容同上)
umask 权限值(八进制):
(1)功能:
- 查看或修改文件掩码
 - 新建文件夹默认权限=0666
 - 新建目录默认权限=0777
 - 但实际上你所创建的文件和目录,看到的权限往往不是上面这个值。原因就是创建文件或目录的时候还要受到umask的影响。假设默认权限是mask,则实际创建的出来的文件权限是:mask& ~umask
【注】:将现有的存取权限减去权限掩码后,即可产生建立文件时预设权限。超级用户默认掩码值为0022,普通用户默认为0002 


