基础认知
Linux是⼀种⾃由和开放源代码的类UNIX操作系统。
认识Linux的内核版本名称,,例如3.10.0-1160.119.1.el7.x86_64,其中3表示主版本号,10表示次版本号(偶数为稳定版本,奇数为测试版本),0表示修订次数,el7表示centos7,x86_64表示体系结构为64位系统。
Linux下基本指令
ls指令
**语法:**ls [选项] [目录或文件]
功能: 对于目录,该命令列出该目录下的所有子目录与文件。对于文件,将列出文件名以及其他信息。
常⽤选项:
- -a 列出⽬录下的所有⽂件,包括以.开头的隐含⽂件。
- -d 将⽬录像⽂件⼀样显⽰,⽽不是显⽰其下的⽂件。如:ls‒d指定⽬录
- -i 输出⽂件的i节点的索引信息。如ls‒ai指定⽂件
- -k 以k字节的形式表⽰⽂件的⼤⼩。ls‒alk指定⽂件
- -l 列出⽂件的详细信息
- -n ⽤数字的UID,GID代替名称。
- -F 在每个⽂件名后附上⼀个字符以说明该⽂件的类型,"*"表⽰可执⾏的普通⽂件;"/"表⽰ ⽬录;"@"表⽰符号链接;"|"表⽰FIFOs;"="表⽰套接字(sockets)。(⽬录类型识别)
- -R 对⽬录反向排序
- -t 以时间排序
- -s 在l⽂件名后输出该⽂件的⼤⼩。(⼤⼩排序,如何找到⽬录下最⼤的⽂件)
- -r 列出所有⼦⽬录下的⽂件。(递归)
- -1 ⼀⾏只输出⼀个⽂件。
pwd命令
**语法:**pwd
**功能:**显⽰⽤⼾当前所在的⽬录
cd指令
Linux理论知识:路径的认识
- Linux系统中,磁盘上的⽂件和⽬录被组成⼀棵⽬录树,每个节点都是⽬录或⽂件
- 其中普通⽂件⼀定是⽬录树的叶⼦节点
- ⽬录可能是叶⼦(空⽬录),也可能是路上节点
- 理解路径存在的意义:树状组织⽅式,都是为了保证快速定位查找到指定的⽂件,⽽定位⽂件就 需要具有唯⼀性的⽅案来进⾏定位⽂件。其中任何⼀个节点,都只有⼀个⽗节点,所以,从根⽬录开始,定位指定⽂件,路径具有唯⼀性
- 绝对路径:⼀般从/开始,不依赖其他⽬录的定位⽂件的⽅式 • 相对路径:相对于当前⽤⼾所处⽬录,定位⽂件的路径⽅式
- 绝对路径⼀般不会随着⽤⼾的路径变化⽽丧失唯⼀性,⼀般在特定服务的配置⽂件中经常被使⽤
- 相对路径因为它的便捷性,⼀般在命令⾏中使⽤较多
语法: cd ⽬录名
**功能:**改变⼯作⽬录。将当前⼯作⽬录改变到指定的⽬录下
touch 命令
**语法:**touch [ 选项 ]... ⽂件 ...
**功能:**touch命令参数可更改⽂档或⽬录的⽇期时间,包括存取时间和更改时间,或者新建⼀个不存在的⽂件。
常⽤选项:
- -a:仅更改访问时间
- -c:仅更改修改时间
mkdir指令
**语法:**mkdir [ 选项 ] dirname...
**功能:**在当前⽬录下创建⼀个名为"dirname"的⽬录
常⽤选项:
- -p/--parents: 可以是⼀个路径名称。此时若路径中的某些⽬录尚不存在,加上此选项后,系统将⾃动建⽴好那些尚不存在的⽬录,即**⼀次可以建⽴多个⽬录**
rmdir 指令&&rm指令
rmdir是⼀个与mkdir相对应的命令,mkdir是建⽴⽬录,⽽rmdir是删除命令
**语法:**rmdir [-p] [dirName]
**适⽤对象:**具有当前⽬录操作权限的所有使⽤者
功能:删除空⽬录
常用选项:
- -p 当⼦⽬录被删除后如果⽗⽬录也变成空⽬录的话,就连带⽗⽬录⼀起删除。
rm命令可以同时删除⽂件或⽬录
语法: rm [-f-i-r-v] [dirName/dir]
**适⽤对象:**所有使⽤者
**功能:**删除⽂件或⽬录 常
⽤选项:
- -f 即使⽂件属性为只读(即写保护),亦直接删除
- -i 删除前逐⼀询问确认
- -r 删除⽬录及其下所有⽂件
man 指令
语法: man [选项] 命令
常⽤选项:
- -k根据关键字搜索联机帮助
- num只在第num章节查找
- -a 将所有章节的都显⽰出来,⽐如manprintf它缺省从第⼀章开始搜索,知道就停⽌,⽤a选 项,当按下q退出,他会继续往后⾯搜索,直到所有章节都搜索完毕
解释一下:man手册一共分为9章
- 1是普通的命令
- 2是系统调⽤,如open,write之类的(通过这个,⾄少可以很⽅便的查到调⽤这个函数,需要加什么 头⽂件)
- 3是库函数,如printf,fread是特殊⽂件,也就是/dev下的各种设备⽂件
- 4略
- 5是指⽂件的格式,⽐如passwd,就会说明这个⽂件中各个字段的含义
- 6是给游戏留的,由各个游戏⾃⼰定义
- 7是附件还有⼀些变量,⽐如像environ这种全局变量在这⾥就有说明
- 8是系统管理⽤的命令,这些命令只能由root使⽤,如ifconfig
- 9略
cp指令
语法: cp [ 选项 ] 源⽂件或⽬录 ⽬标⽂件或⽬录
**功能::**复制⽂件或⽬录
说明:
- cp指令⽤于复制⽂件或⽬录
- 如同时指定两个以上的⽂件或⽬录,且最后的⽬的地是⼀个已经存在的⽬录,则它会把前⾯指定的所有⽂件或⽬录复制到此⽬录中
常⽤选项:
- -f 或--force 强⾏复制⽂件或⽬录,不论⽬的⽂件或⽬录是否已经存在
- -i 或--interactive 覆盖⽂件之前先询问⽤⼾
- -r 递归处理,将指定⽬录下的⽂件与⼦⽬录⼀并处理。若源⽂件或⽬录的形态,不属于⽬录或符号链接,则⼀律视为普通⽂件处理
mv指令
mv命令是move的缩写,可以⽤来移动⽂件或者将⽂件改名(move(rename)files,经常⽤来备份⽂件 或者⽬录
**语法:**mv [ 选项 ] 源⽂件或⽬录 ⽬标⽂件或⽬录
功能:
-
- 视mv命令中第⼆个参数类型的不同(是⽬标⽂件还是⽬标⽬录),mv命令将⽂件重命名或将其移⾄⼀个新的⽬录中。
-
- 当第⼆个参数类型是⽂件时,mv命令完成⽂件重命名,此时,源⽂件只能有⼀个(也可以是源⽬ 录名),它将所给的源⽂件或⽬录重命名为给定的⽬标⽂件名。
-
- 当第⼆个参数是已存在的⽬录名称时,源⽂件或⽬录参数可以有多个,mv命令将各参数指定的源 ⽂件均移⾄⽬标⽬录中。
常⽤选项:
- -f:force强制的意思,如果⽬标⽂件已经存在,不会询问⽽直接覆盖
- -i:若⽬标⽂件(destination)已经存在时,就会询问是否覆盖
cat 指令
语法: cat [ 选项 ] [ ⽂件 ]
**功能:**查看⽬标⽂件的内容
常⽤选项:
- -b 对⾮空输出⾏编号,空⾏不做编号
- -n 对输出的所有⾏编号
- -s 不输出多⾏空⾏
more指令
语法: more [ 选项 ]
**功能:**more命令,功能类似cat
常⽤选项:
- -n指定输出⾏数
- q退出more
less 指令
- less⼯具也是对⽂件或其它输出进⾏分⻚显⽰的⼯具,应该说是linux正统查看⽂件内容的⼯具, 功能极其强⼤
- less的⽤法⽐起more更加的有弹性,在more的时候,我们并没有办法向前⾯翻,只能往后⾯ 看
- 但若使⽤了less时,就可以使⽤[pageup][pagedown]等按键的功能来往前往后翻看⽂件,更容易⽤来查看⼀个⽂件的内容
- 除此之外,在less⾥头可以拥有更多的搜索功能,不⽌可以向下搜,也可以向上搜。
语法:
- less [ 参数 ] ⽂件
**功能:**less与more类似,但使⽤less可以随意浏览⽂件,⽽more仅能向前移动,却不能向后移动,⽽ 且less在查看之前不会加载整个⽂件。
选项:
- -i 忽略搜索时的⼤⼩写
- -N 显⽰每⾏的⾏号
- / 字符串:向下搜索"字符串"的功能
- ? 字符串:向上搜索"字符串"的功能
- n 重复前⼀个搜索(与/或?有关)
- N 反向重复前⼀个搜索(与/或?有关)
- q:quit
tail 指令
tail 命令从指定点开始将⽂件写到标准输出.使⽤tail命令的-f 选项可以⽅便的查阅正在改变的⽇志⽂ 件,tail-f filename会把filename⾥最尾部的内容显⽰在屏幕上,并且不断刷新,使你看到最新的⽂件内容.
**语法:**tail 必要参数 [⽂件]
功能: ⽤于显⽰指定⽂件末尾内容,不指定⽂件时,作为输⼊信息进⾏处理。常⽤查看⽇志⽂件。
选项:
- -f 循环读取
- -n<行数> 显⽰⾏数
date 指令
指定格式显⽰时间: date +%Y:%m:%d
⽤法: 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-%d
2.在设定时间⽅⾯
- date -s //设置当前时间,只有root权限才能设置,其他只能查看。
- date -s 20080523 //设置成20080523,这样会把具体时间设置成空00:00:00
- date -s 01:01:01 //设置具体时间,不会对⽇期做更改
- date -s "01:01:012008-05-23″ //这样可以设置全部时间
- date -s "01:01:0120080523″ //这样可以设置全部时间
- date -s "2008-05-2301:01:01″ //这样可以设置全部时间
- date -s "2008052301:01:01″ //这样可以设置全部时间
3. 时间戳
- 时间->时间戳:date+%s
- 时间戳->时间:date-d@1508749502
- Unix时间戳(英⽂为Unixepoch,Unixtime,POSIXtime或Unixtimestamp)是从1970年1⽉1⽇(UTC/GMT的午夜)开始所经过的秒数,不考虑闰秒
cal指令
命令格式: cal 参数 [ 年份 ]
功能:⽤于查看⽇历等时间信息,如只有⼀个参数,则表⽰年份(1-9999),如有两个参数,则表⽰⽉份和年份
常⽤选项:
- -3 显⽰系统前⼀个⽉,当前⽉,下⼀个⽉的⽉历
- -j 显⽰在当年中的第⼏天(⼀年⽇期按天算,从1⽉1号算起,默认显⽰当前⽉在⼀年中的天数)
- -y 显⽰当前年份的⽇历
find 指令
- Linux下find命令在⽬录结构中搜索⽂件,并执⾏指定的操作。
- Linux下find命令提供了相当多的查找条件,功能很强⼤。由于find具有强⼤的功能,所以它的选 项也很多,其中⼤部分选项都值得我们花时间来了解⼀下。
- 即使系统中含有⽹络⽂件系统(NFS),find命令在该⽂件系统中同样有效,只你具有相应的权 限。
- 在运⾏⼀个⾮常消耗资源的find命令时,很多⼈都倾向于把它放在后台执⾏,因为遍历⼀个⼤的 ⽂件系统可能会花费很⻓的时间(这⾥是指30G字节以上的⽂件系统)。
**语法:**find pathname -options
功能:⽤于在⽂件树中查找⽂件,并作出相应的处理(可能访问磁盘)
常⽤选项
- -name 按照⽂件名查找⽂件
- 其他选项需要在查,这个命令其实⽐较复杂
which指令
语法:which 指令名
**功能:**搜索系统指定的命令
where指令
语法:wherr 命令名
功能:⽤于找到程序的源、⼆进制⽂件或⼿册
alias指令
语法:alias 别名='指令'
**功能:**设置命令的别名
grep指令
**语法:**grep [ 选项 ] 搜寻字符串 ⽂件
**功能:**在⽂件中搜索字符串,将找到的⾏打印出来
常用选项:
- -i:忽略⼤⼩写的不同,所以⼤⼩写视为相同
- -n:顺便输出⾏号
- -v:反向选择,亦即显⽰出没有'搜寻字符串'内容的那⼀⾏
top指令
**语法:**top -选项 <num>
**功能:**设置屏幕刷新或次数
常用选项:
- -d: 刷新的时间间隔
- -n: 刷新的次数
- q:退出
zip/unzip 指令
**语法:**zip 压缩⽂件.zip ⽬录或⽂件
**功能:**将⽬录或⽂件压缩成zip格式
常⽤选项
- -r:递归处理,将指定⽬录下的所有⽂件和⼦⽬录⼀并处理
举例
- 将test2⽬录压缩: zip test2.zip test2/*
- 解压到tmp⽬录: unzip test2.zip -d /tm
关于rz/sz
这个⼯具⽤于windows机器和远端的Linux机器通过XShell传输⽂件.安装完毕之后可以通过拖拽的⽅式将⽂件上传过去.
tar 指令
打包/解包,不打开它,直接看内容
语法: tar [-cxtzjvf] ⽂件与⽬录 ....
参数:
- -c:建⽴⼀个压缩⽂件的参数指令(create的意思)
- -x:解开⼀个压缩⽂件的参数指令
- -t:查看tarfile⾥⾯的⽂件
- -z:是否同时具有gzip的属性?亦即是否需要⽤gzip压缩
- -j:是否同时具有bzip2的属性?亦即是否需要⽤bzip2压缩
- -v:压缩的过程中显⽰⽂件!这个常⽤,但不建议⽤在背景执⾏过程!
- -f: 使⽤档名,请留意,**在f之后要⽴即接档名,**不要再加参数
- -C:解压到指定⽬录
特别注意,在参数 f 之后的⽂件档名是⾃⼰取的,我们习惯上都⽤.tar来作为辨识。
如果加z参数,则以 .tar.gz 或 .tgz 来代表gzip压缩过的tarfile
如果加j参数,则以.tar.bz2来作为附档名啊
由于我们使⽤gzip压缩,所以要查阅该tarfile内的⽂件时,就得要加上 z 这个参数了
bc指令
bc命令可以很⽅便的进⾏浮点运算
uname ‒r指令
**语法:**uname [选项]
**功能:**uname⽤来获取电脑和操作系统的相关信息。
**补充说明:**uname可显⽰linux主机所⽤的操作系统的版本、硬件的名称等基本信息。
常⽤选项:
- -a或‒all详细输出所有信息,依次为内核名称,主机名,内核版本号,内核版本,硬件名,处理器类型,硬件平台类型,操作系统名称
- lsb_release-a:查看操作系统版本
重要的⼏个热键[Tab],[ctrl]+c,[ctrl]+d
-
Tab\] 按键---具有『命令补全』和『档案补⻬』的功能
-
Ctrl\]+d 按键---通常代表着:『键盘输⼊结束(EndOfFile,EOF戒EndOfInput)』的意思;另外, 他也可以⽤来取代exit
**语法:**shutdown[选项]
常⻅选项:
- -h:将系统的服务停掉后,⽴即关机。
- -r:在将系统的服务停掉之后就重新启动
- -tsec:-t后⾯加秒数,亦即『过⼏秒后关机』的意思
shell命令以及运⾏原理
Linux严格意义上说的是⼀个操作系统,我们称之为"核⼼(kernel)",但我们⼀般⽤⼾,不能直接使⽤kernel。⽽是通过kernel的"外壳"程序,也就是所谓的shell,来与kernel沟通。
从技术⻆度,Shell的最简单定义:命令⾏解释器(commandInterpreter)主要包含:
- 将使⽤者的命令翻译给核⼼(kernel)处理。
- 同时,将核⼼的处理结果翻译给使⽤者。
对⽐windowsGUI,我们操作windows不是直接操作windows内核,⽽是通过图形接⼝,点击,从⽽完成我们的操作(⽐如进⼊D盘的操作,我们通常是双击D盘盘符.或者运⾏起来⼀个应⽤程序)。
shell 对于Linux,有相同的作⽤,主要是对我们的指令进⾏解析,解析指令给Linux内核。反馈结果在通过内核运⾏出结果,通过shell解析给⽤⼾。