操作系统:Centos7
在Linux系统中,用户都是使用指令来进行对应的操作,所以入门Linux首先就要从指令开始学习。
下面来介绍一下Linux中常用的基础指令
基础常用指令:
1,ls --- 查看文件
格式:ls -选项 文件/目录名
-a 列出目录中所有的文件,包括隐藏文件
-l 列出文件的详细信息
-R 列出所有子目录的文件,递归显示
-d 将目录像文件一样显示,而不是显示所有
2,touch/mkdir---创建文件和目录
格式:touch 文件名
格式:mkdir 目录名
mkdir递归创建多个目录:mkdir -p a/b/c/d
3,cd---进入目录
格式:cd 目录名
cd.. 返回上级路径
cd~ 进入用户家目录
cd - 返回最近路径
绝对路径和相对路径
绝对路径:从根目录开始一直到要进入的目录名的路径
举例:C:home/a/b/c/d... 这就是绝对路径
相对路径:要进入的目录是当前所在目录中
举例:现在所处的目录是a目录下
![](https://i-blog.csdnimg.cn/blog_migrate/58030adfea8909e491c9c708bbd13b12.png)
那么a目录下的b和c都处于a中,这个时候要进入b中的d目录,路径可以不用从根目录开始写起,直接写上cd b/c/d即可
4,rm/rmdir---删除文件/目录
格式:rm 选项 文件名
-f 强制删除,忽略不存在的文件,无需提示
-r 递归删除目录下的内容,删除文件夹时必须加此参数
-i 删除前逐一询问是否删除
格式:rmdir 选项 目录名
如果目录中有其他目录,则需要使用-p选项,递归删除
-p 递归删除
5,man---命令手册
在Linux中我们不可能记住每一个命令,所以有了man,我们可以使用man来查看相对的指令
格式:man 选项 命令
-k 根据关键字搜索联机帮助
num 只在第num章节找
-a 将所有章节的都显示出来,比如 man printf 它缺省从第一章开始搜索,知道就停止,用a选项,当按下q退出,他会继续往后面搜索,直到所有章节都搜索完毕。
解释一下,面手册分为8章
1 是普通的命令
2 是系统调用,如open,write之类的(通过这个,至少可以很方便的查到调用这个函数,需要加什么头文件)
3 是库函数,如printf,fread4是特殊文件,也就是/dev下的各种设备文件
5 是指文件的格式,比如passwd, 就会说明这个文件中各个字段的含义
6 是给游戏留的,由各个游戏自己定义
7 是附件还有一些变量,比如向environ这种全局变量在这里就有说明
8 是系统管理用的命令,这些命令只能由root使用,如ifconfi
6,cp---复制
格式: cp [选项] 源文件或目录 目标文件或目录(文件或者目录存在,即拷贝到该文件或者目录,如果不存在会创建一个)
说明: cp指令用于复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,
则它会把前面指定的所有文件或目录复制到此目录中。若同时指定多个文件或目录,而最后的目的地并非一个已存在的目录,则会出现错误信息
-f 或 --force 强行复制文件或目录, 不论目的文件或目录是否已经存在
-i 或 --interactive 覆盖文件之前先询问用户
-r递归处理,将指定目录下的文件与子目录一并处理。若源文件或目录的形态,不属于目录或符号链接,则一律视为普通文件处理
-R 或 --recursive递归处理,将指定目录下的文件及子目录一并处理
7,mv---拷贝
格式:mv 选项 目录/文件地址 目标目录/文件地址
1. 视mv命令中第二个参数类型的不同(是目标文件还是目标目录), mv命令将文件重命名或将其移至一个新的目录中。
2. 当第二个参数类型是文件时, mv命令完成文件重命名,此时,源文件只能有一个(也可以是源目录名),它将所给的源文件或目录重命名为给定的目标文件名。
3. 当第二个参数是已存在的目录名称时,源文件或目录参数可以有多个, mv命令将各参数指定的源文件均移至
目标目录中。
常用选项:
-f : force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖
-i :若目标文件 (destination) 已经存在时,就会询问是否覆盖
8,cat/more---查看文件中的内容
格式:cat 选项 文件名
-b 对非空输出行编号
-n 对输出的所有行编号
-s 不输出多行空行
格式:more 选项 文件名
-n 对输出的所有行编号
q 退出more
9,less---搜索
格式:less 指定路线 文件名/目录名
10,head---显示文件开头或结尾的某个数量的文字区块
格式:head 参数 文件名
说明:head -n5 a.txt 显示a.txt从开头往后5行的文字
-n 显示的行数
11,tail--显示文件末尾多少行的文字区块
格式:tail 参数 文件名
说明:tail -n5 a.txt 显示a.txt从末尾处开始往前5行的文字
-n 显示的行数
12,时间相关的指令
01,date---显示时间
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-%d
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″ //这样可以设置全部时间
02,cal---显示日历
常用选项:
-3 显示系统前一个月,当前月,下一个月的月历
-j 显示在当年中的第几天(一年日期按天算,从1月1号算起,默认显示当前月在一年中的天数)
-y 显示当前年份的日历
03,时间戳
时间戳是从1970年1月1月午夜开始到现在的秒数
格式:date +%s
12,find---在文件树中查找文件并作出相应处理(可能访问磁盘)
格式:find 指定路径 文件名
13,which---查看指令所在目录
格式:which 指令
14,whereis---搜索指定的文档/程序
格式:whereis 文档/程序
15,alias---给特定的命令起别名
格式:alias 别名='命令'
举例:alias myls='ls -a -l -i'
16,grep---搜索字符串/文件
格式:grep 选项 '要搜索的文本' 文件名
选项:
-i:忽略大小写的不同,所以大小写视为相同
-n :顺便输出行号
-v :反向选择,亦即显示出没有 '搜寻字符串' 内容的那一行
17,top---类似windows下的任务管理器
格式:top(输入q退出)
18,|---管道
格式:入口 | 出口
说明:管道是用来传输数据的
举例:cat a.txt | head -n5 | tail -n1
19,nano---Linux下的文本编辑器
格式:nano
x 退出
y 确认保存
20,>/>>---输出重定向
格式:文件名 > 文件名
说明:将原本输出到显示器上的文本重定向到其他文件(这里单个>会覆盖掉要重定向的文件)
举例:a.txt > b.txt
格式:文件名>>文件名
说明:将原本输出到显示器上的文本追加到其他文件(这里两个>>是在文件的末尾追加)
举例:b.txt >> c.txt
21,echo---在屏幕上输出任意文本
格式:echo 文本
说明:在输入echo 输入文本后 按下回车键就会在屏幕上输出刚才所输入的文本
22,wc---统计指定文件中的字节数、字数、行数,并将统计结果显示输出
格式:wc 文件名
23,打包/压缩/解压缩
zip---打包一个目录
格式:zip 选项 打包后的名字.zip 目录名
举例:zip -r test.zip test
说明:如果不加上选项 -r,默认打包目录,而不会将目录里面的东西打包,-r会将目录里面的东西递归打包
unzip---解压一个包
格式:unzip 压缩包名 -d指定路径
说明:如果unzip 压缩包后面不跟上路径,会默认解压到当前路径下
tar---打包,压缩,解包
格式:tar 选项 包名 目录名
选项:
-c :建立一个压缩文件的参数指令(create 的意思);
-x :解开一个压缩文件的参数指令!
-t :查看 tarfile 里面的文件!
-z :是否同时具有 gzip 的属性?亦即是否需要用 gzip 压缩?
-j :是否同时具有 bzip2 的属性?亦即是否需要用 bzip2 压缩?
-v :压缩的过程中显示文件!这个常用,但不建议用在背景执行过程!
-f :使用档名,请留意,在 f 之后要立即接档名喔!不要再加参数!
-C : 解压到指定目录
常用格式:1,打包并压缩:tar -czf 包名.tgz 目录名
2,解压缩:tar -xzf 包名 -C 指定目录
24,clear---清空屏幕
格式:clear
25,tree---以树形结构打印目录
格式:tree 目录名
26,bc---浮点运算
格式:运算表达式 bc
27,uname---Linux主机信息
格式:uname 选项
-a或–all 详细输出所有信息,依次为内核名称,主机名,内核版本号,内核版本,硬件名,处理器类
型,硬件平台类型,操作系统名称
28,常用的热键
[Tab]按键---具有『命令补全』和『档案补齐』的功能
[Ctrl]-c按键---让当前的程序『停掉』
[Ctrl]-d按键---通常代表着:『键盘输入结束(End Of File, EOF 戒 End OfInput)』的意思;另外,他也可
以用来取代exit
29,useradd---创建用户
格式:useradd 用户名
创建用户要在root管理员下创建,要么普通用户具有权限
30,passwd---设置密码
格式:passwd
说明:输入passwd回车,输入密码,然后根据提示在输入一次即可完成
31,su---切换用户
格式:su 用户名
说明:输入su 用户名后按下回车,输入root管理员密码
32,userdel---删除用户
格式:userdel 选项 用户名
说明:和删除文件/目录一样 -rf可以强制删除
33,chmod---修改权限
格式:chmod 选项 文件名
选项:u表示拥有者,g表示所属组,o表示other
+r/-r:添加可读权限/去掉可读权限
+w/-w:添加可写权限/去掉可写权限
+x/-x:添加可执行权限/去掉可执行权限
-r:递归修改权限
举例:chmod o+rwx a.txr
chmod u+x,g+rw,x+rwx a.txt
34,chown/chgrp---修改拥有者/所属组
格式:chown 拥有者 文件名
说明:将文件的拥有者修改成其他用户
格式:chgrp 所属组 文件名
说明:将文件的所属组修改成其他组
说明:在root下可以随意修改,在普通用户下需要在前面加上sudo
35,file---识别文件类型
格式:file 文件名
选项:-c 详细显示指令执行过程,便于排错或分析程序执行的情形。
-z 尝试去解读压缩文件的内容
命令扩展:
◆ 安装和登录命令: login、 shutdown、 halt、 reboot、 install、 mount、 umount、 chsh、 exit、 last;
◆ 文件处理命令: file、 mkdir、 grep、 dd、 find、 mv、 ls、 diff、 cat、 ln;
◆ 系统管理相关命令: df、 top、 free、 quota、 at、 lp、 adduser、 groupadd、 kill、 crontab;
◆ 网络操作命令: ifconfig、 ip、 ping、 netstat、 telnet、 ftp、 route、 rlogin、 rcp、 finger、 mail、 nslookup;
◆ 系统安全相关命令: passwd、 su、 umask、 chgrp、 chmod、 chown、 chattr、 sudo ps、 who;
◆ 其它命令: tar、 unzip、 gunzip、 unarj、 mtools、 man、 unendcode、 uudecode。
Linux权限理解
在Linux操作系统下可以创建多个用户,每个用户又可以创建属于自己文件或者目录,而某个用户并不想将他的文件共享其他人看,或者操作,这个时候权限的好处就体现出来了,我创建了一个文件,我并不想让其他人查看修改,于是我给这个文件加上了权限,让这个文件只能让我一个人操作
那么Linxu下的文件权限有哪几种呢,我们用一张图来展示:
![](https://i-blog.csdnimg.cn/blog_migrate/e44713fd3987eb18c40cbffb48791224.png)
当你想查看某个目录或者文件的权限的时候输入ls -ll就可以查看这个文件的具体信息
拥有者:表示这个文件是谁的
所属组:表示这个文件是哪个组的
other:除了拥有者和所属组,其他用户都是other
创建的文件权限分为:默认权限,起始权限,最终权限
我们创建的普通文件(不包括可执行),他的默认权限是664,目录的默认权限是775
普通文件的起始权限是666,目录的起始文件是777
最终权限 == 默认权限
umask(掩码)0002
最终权限==起始权限 & (~umask)
掩码0002 我们只看后三位,后三位002的二进制码是 000 000 010
按位取反后是111 111 101
起始权限是666,转换成二进制码是110 110 110
用 110 110 110 & 111 111 101 结果是 110 110 100
再将这个结果转换成8进制就是 664
粘滞位
在Linux系统下,存在共享目录这个概念,也就是说多个用户共享一个目录,假设叫public,大家都可以在这个目录里创建属于自己文件或者目录,假设我创建了一个文件,我将这个文件的权限设置成700,也就是说只有我自己可以读写执行,虽然其他用户没有对我这个文件的权限,但是任意other却可以删除我这个文件,所以为了防止这种情况,Linux就有了粘滞位这个概念,在这个共享目录上加上粘滞位,其他人就不能随便删除我的文件
添加粘滞位方法:sudo chmod +t public