目录
Linux简介
Linux 内核最初由芬兰人林纳斯·托瓦兹(Linus Torvalds)在赫尔辛基大学上学时出于个人爱好而编写的。是开放源代码的类UNIX操作系统,可以免费使用和自由传播,是一个基于 POSIX 和 UNIX 的多用户、多任务、支持多线程和多 CPU 的操作系统。
Linux 能运行主要的 UNIX 工具软件、应用程序和网络协议。它支持 32 位和 64 位硬件。Linux 继承了 Unix 以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。
一、用户相关操作命令
1.查看当前用户who am i
who am i
显示当前用户,结果为delia:
2.新建用户adduser
只有root超级用户可以新建用户,因此新建用户之前要使用su -命令输入密码之后切换到root用户。
新建用户之前,可以使用ll /home命令查看所有用户,除了用户delia之外,还有一个用户lighthouse,lighthouse是具有root权限的服务器密钥。
adduser username
使用adduser新建用户Gino,再使用ll /home查看所有用户,发现Gino创建成功了:
3.修改密码passwd
新建用户之后,需要修改密码,使用passwd:
passwd username
4.删除用户userdel
删除用户,使用userdel username,一般都会加上-r选项,否则不能完全删除该用户相关的目录和文件:
userdel -r username
二、ls指令
对于目录,该命令列出该目录下的所有子目录与文件。对于文件,将列出文件名以及其他信息。
ls 选项 目录或文件
还可以带其他选项。
1.-a
列出目录下的所有文件,包括以 . 开头的隐含文件:
2.-d
将目录像文件一样显示,而不是显示其下的文件。 如:ls –d 指定目录
3.-i
-i 输出文件的 i 节点的索引信息。可以使用ls –ai 指定文件
4.-k
以 k 字节的形式表示文件的大小。ls –alk 指定文件
5.-l
列出文件详细信息
6. -n
用数字的 UID,GID 代替名称。
7.-F
-F 在每个文件名后附上一个字符以说明该文件的类型,“*”表示可执行的普通文件;“/”表示目录;“@”表示符号链接;“|”表示FIFOs;“=”表示套接字(sockets)。
8.-r
对目录反向排序
和ls命令执行的结果排序顺序相反:
9.-t
以时间排序,按照时间排序,最新的文件排在最前面:
10.-s
在文件名前输出该文件的大小。(大小排序,如何找到目录下最大的文件)
11.-R
递归列出所有子目录下的文件。IP.log文件路径为/home/delia/linux/lesson2/IP.log
12.-1
一行只输出一个文件
三、pwd命令
显示用户当前所在的目录
pwd
四、cd指令
1.Linux管理文件形式
几乎所有的操作系统,管理文件的方式,都是采用多叉树的形式。Linux系统中,磁盘上的文件和目录被组成一棵目录树,每个节点都是目录或文件:
2.绝对路径和相对路径
对文件定位时,路径的前半段决定文件在哪里,路径的后半段决定针对哪个文件:
绝对路径
:从根目录开始的路径。可以唯一标识一个文件
相对路径
:以../开头的路径。相对于pwd的路径,不能唯一标识一个文件
3. cd指令操作
cd指令用于改变工作目录,将当前工作目录改变到指定的目录下:
cd 目录名
cd指令操作:
五、touch指令
touch指令通常用来创建文件,也可以用来更改时间
1.创建普通文件
用来创建一个不存在的文件时,直接使用以下命令:
touch 文件名
2.更改文件最新时间
当创建一个已经存在文件时,会修改文件时间:
3.选项
还可以选择以下选项:
-a 或--time=atime或--time=access或--time=use只更改存取时间。
-c 或--no-create 不建立任何文档。
-d 使用指定的日期时间,而非现在的时间。
-f 此参数将忽略不予处理,仅负责解决BSD版本touch指令的兼容性问题。
-m 或--time=mtime或--time=modify 只更改变动时间。
-r 把指定文档或目录的日期时间,统统设成和参考文档或目录的日期时间相同。
-t 使用指定的日期时间,而非现在的时间
比如使用-m选项时,会修改Modify(更改文件内容时间)和Change(文件操作时间)时间,stat命令用来查看文件时间,有3种时间:
六、mkdir指令
在当前目录下创建一个目录
mkdir 目录名
创建derectory目录:
选项-p,可以递归建立多个目录,本质上就是创建了一条路径:
-p, --parents 可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立
好那些尚不存在的目录,即一次可以建立多个目录
同时递归创建多级目录:
七、tree指令
以树状图列出目录的内容:
tree 或 tree .
如果没有安装tree命令,可以切换到root用户后使用以下命令安装tree命令:
yum install -y tree
假如安装不成功,可以这样安装:
yum install -y epel-release//安装epel仓库
yum install -y tree//安装tree
八、rmdir和rm指令
1.rmdir指令
rmdir和mkdir对应,删除空目录:
rmdir 目录名
dir1为空目录,删除dir1成功:
2.rm指令
对于非空目录rmdir无法删除,使用rm可以删除,rm既可以删除目录也可以删除文件:
rm 目录名/文件名
选项:
-f 强制删除,即使文件属性为只读(即写保护),亦直接删除
-i 删除前逐一询问确认
-r 删除目录及其下所有文件
九、man指令
Linux
的命令有很多参数,不可能全部记住,可以通过查看联机手册获取帮助:
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使用,如ifconfig
在man手册不全的情况下可以用yum安装man手册:
yum install -y man-pages
想查看fork函数的用法,fork函数时系统函数,因此加上2:
输入q就可以推出man手册:
十、cp指令
cp指令用来
复制文件或目录,相当于windows下的复制操作:
cp 源 目标
同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到此目录中。若同时指定多个文件或目录,而最后的目的地并非一个已存在的目录,则会出现错误信息。
选项:
-f 或 --force 强行复制文件或目录, 不论目的文件或目录是否已经存在
-i 或 --interactive 覆盖文件之前先询问用户
-r递归处理,将指定目录下的文件与子目录一并处理。若源文件或目录的形态,不属于目录或符号链
接,则一律视为普通文件处理
-R 或 --recursive递归处理,将指定目录下的文件及子目录一并处理
将/home/delia/linux/multiDirectory/dir/路径下的dir1文件夹复制到/home/delia/linux/directory/文件夹下,此时由于dir1位于multiDirectory/dir文件夹下,所以在multiDirectory目录下复制dir1文件夹时,需要加上-r选项,递归复制dir/dir1文件夹:
也可以对拷贝文件或文件夹重命名,这里的dir1是文件夹,因此要加-r,如果是文件就不需要加-r:
十一、mv指令
mv命令是move的缩写,用来移动文件或者对文件改名,经常用来备份文件或者目录,相当于windows下的剪切操作:
mv 源 目标
功能:
1. 根据mv命令中第二个参数类型的不同(是目标文件还是目标目录),mv命令将文件重命名或将其移至一个新的目录中。
2. 当第二个参数类型是文件时,mv命令完成文件重命名,此时,源文件只能有一个(也可以是源目录名),它将所给的源文件或目录重命名为给定的目标文件名。
3. 当第二个参数是已存在的目录名称时,源文件或目录参数可以有多个,mv命令将各参数指定的源文件均移至目标目录中。
选项:
-f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖
-i :若目标文件 (destination) 已经存在时,就会询问是否覆盖
将lesson2下面的IP.log挪到multiDirectory文件夹下:
十二、cat指令
查看文件内容:
cat 文件
查看IP.log文件内容:
选项:
-b 对非空输出行编号
-n 对输出的所有行编号
-s 不输出多行空行
查看IP.log文件内容并对行编号:
tac,逆序输出文件内容,和cat的行显示顺序刚好相反:
十三、more指令
查看文件内容:
more 文件名
不加选项时,显示全部文件内容,和cat作用一样:
选项:
-n 对输出的所有行编号
如加选项-n就显示前n行:
more还有相应操作:
Enter 向下n行,需要定义。默认为1行
Ctrl+F 向下滚动一屏
空格键 向下滚动一屏
Ctrl+B 返回上一屏
= 输出当前行的行号
:f 输出文件名和当前行的行号
V 调用vi编辑器
!命令 调用Shell,并执行命令
q 退出more
more翻行只能向下翻行,不能向上翻行。
十四、less指令
less既可以向下翻行,也可以向上翻行
less 文件名
less 对文件或其它输出进行分页显示,是linux正统查看文件内容的工具,功能强大。less 的用法比起 more 更加的有弹性。 more无法向前翻, 只能往后看。使用 less ,就可以使用 [pageup][pagedown] 来往前或往后翻看文件。 less 还有更多的搜索功能,还可以向下搜或向上搜。且less在查看之前不会加载整个文件
使用less指令后,可以使用PgDn向下翻页:
功能很强大:
-g 只标志最后搜索的关键词
-i 忽略搜索时的大小写
-m 显示类似more命令的百分比
-N 显示每行的行号
/字符串:向下搜索"字符串"的功能
?字符串:向上搜索"字符串"的功能
n:重复前一个搜索(与 / 或 ? 有关)
N:反向重复前一个搜索(与 / 或 ? 有关)
b 向上翻一页
d 向后翻半页
h 显示帮助界面
Q 退出less 命令
u 向前滚动半页
y 向前滚动一行
空格键 滚动一页
回车键 滚动一行
[pagedown]: 向下翻动一页
[pageup]: 向上翻动一页
十五、head指令
显示文件开头,默认显示前10行:
选项:
-n<行数> 显示行数行
显示前两行内容:
十六、tail指令
显示文件末尾内容:
tail 文件名
默认显示文件后10行:
选项:
-f 循环读取
-n<行数> 显示行数
显示后两行内容:
十七、重定向
重定向也称为输出重定向,把在终端执行命令本来应该显示到显示器的结果内容保存到目标文件。重定向分为两种:
1.>重定向
覆盖原有内容,文件的原有数据不保留,相当于文件操作’w’
将IP.log文件的后2行重定向到IP2.log文件中:
再重新将IP.log的前2行重定向到IP2.log文件中,发现IP2.log文件中之前的内容已经被覆盖了:
2.>>重定向
如果不想清空目标文件原有内容,追加写入文件末尾,原有数据保留,相当于文件操作’a’
将IP.log的后两行追加到IP2.log的末尾,IP.log文件没有被覆盖:
如果目标文件不存在,这两种操作都会首先创建该目标文件。
十八、管道
管道:将两个或者多个命令(程序或者进程)连接到一起,把一个命令的输出作为下一个命令的输入,对命令做流水线处理。
命令 | 命令
使用管道的时候,默认隐式地发生了重定向,把本来应该显示到显示器的内容作为下一个命令的输入。
如想取出IP.log文件的第12行内容:
通过管道,先取出前12行内容,再通过管道取出最后一行内容:
十九、data指令
1.显示时间
显示或设置系统日期和时间:
以指定格式显示时间:
date +%Y:%m:%d
时间格式的常用标记列表:
%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″ //设置全部时间
3.时间戳
时间戳是指从1970年1月1日00:00:00 UTC到当前为止的秒数。
(1)把时间转换为时间戳
date +%s
(2)把时间戳转换为时间
date -d@时间戳
二十、cal指令
cal命令可以用来显示公历(阳历)日历,默认显示当月日历:
cal
显示一年的日历:
cal 年份
显示前一个月、当前月、下个月日历:
cal -3
选项:
-3 显示系统前一个月,当前月,下一个月的月历
-j 显示在当年中的第几天(一年日期按天算,从1月1号算起,默认显示当前月在一年中的天数)
-y 显示当前年份的日历
二十一、find指令
在目录结构中搜索文件,find也提供了查找条件。在目录结构中搜索文件,并执行指定的操作。运行耗资源的find命令时,尽量后台执行,因为遍历一个大的文件系统可能会花费很长时间(超过30G字节)。
在文件树中查找文件,并作出相应处理(可能查找磁盘),因此
第一次执行查找命令会比较慢,后面执行同样的查找命令会比较快。
find -name 文件名
二十二、which指令
在PATH变量指定的路径中,判断系统命令是否存在,并搜索该命令在系统哪个位置。命令本身就是用语言写的程序工具指令,是保存在磁盘上的文件。
which 命令
查看find、cat、mv在系统中的位置:
二十三、whereis指令
用来查找文件,在特定目录中查找符合条件的文件。该指令只能用于查找二进制文件、源代码文件和man手册页。
whereis 文件/源代码/man手册页
例如,用whereis查找find:
和 find 相比,whereis 查找的速度非常快。因为 Linux 系统会将系统内的所有文件都记录在一个数据库文件中,当使用 whereis 和 locate 时,会从数据库中查找数据,而不是像 find 通 过遍历硬盘来查找。但是数据库文件并不是实时更新,默认一星期更新一次,所以用 whereis 和 locate 查找文件时,有时会找到已删除的数据,或者文件刚刚建立,但却无法查找到,就是因为数据库文件没有被更新。
二十四、grep指令
在文件中搜索字符串,将找到的行打印出来
grep 【选项】 字符串 文件
选项:
-i :忽略大小写的不同,所以大小写视为相同
-n :顺便输出行号
-v :反向选择,亦即显示出没有 '搜寻字符串' 内容的那一行
将IP.log中所有包含0的行显示出来
也可以用cat+管道+grep显示
加-v反向选择,就显示不带0的行
加-n,顺便输出行号
加-i,忽略大小写,显示poem文件中带字母i的行,忽略大小写:
grep也支持正则,将文件中以13开头的,以0-7结尾的数字显示出来:
二十五、zip和unzip指令
zip : 将目录或文件压缩成zip格式
zip 压缩文件.zip 目录或文件
选项:
-r 递归处理,将指定目录下的所有文件和子目录一并处理
压缩/解压缩文件:
将poem文件压缩成zip格式:
将poem.zip解压缩到temp1目录:
压缩/解压缩目录:
压缩目录有2种方式:
zip 目标名.zip 目录名/*
或
zip -r 目标名.zip 目录名/
将linux文件夹下的multiDirectory文件夹压缩成m.zip文件,采用第一种方式压缩目录时:
采用第二种方式压缩时,使用-r选项:
解压缩到mUnzip目录下:
二十六、tar指令
tar用于建立,打包、还原、备份文件,不自带压缩功能。可保持文件权限状态、软硬链接。
tar 【选项】 目标名 目录
目标名通常以.tar为结尾,用以标识打包文件。打包可以用于将某些文件之外的所有文件打包到一起。
常用选项:
-c :建立一个压缩文件的参数指令(create 的意思);
-x :解开一个压缩文件的参数指令
-t :查看 tarfile 里面的文件
-z :是否同时具有 gzip 的属性?亦即是否需要用 gzip 压缩?
-j :是否同时具有 bzip2 的属性?亦即是否需要用 bzip2 压缩?
-v :压缩的过程中显示文件!这个常用,但不建议用在背景执行过程
-f :使用档名,请留意,在f之后要立即接文档名,不要再加参数
-C :解压到指定目录
可用压缩选项进行压缩,目标名通常以.tgz进行标识:
压缩选项:czvf(如果仅仅只是打包,非打压缩包,使用cvf选项打包)
解压选项:xzvf(如果仅仅只是解包,非解压缩包,使用xvf选项解包)
二十七、bc指令
bc在linux下可以进行浮点数运算:
二十八、uname 指令
用来获取电脑和操作系统的相关信息:
uname [选项]
选项:
-a或–all 详细输出所有信息,依次为内核名称,主机名,内核版本号,内核版本,硬件名,处理器类型,硬件平台类型,操作系统名称
-r或--release 显示操作系统的发行编号
-m或--machine 显示电脑类型。
-n或--nodename 显示在网络上的主机名称。
-s或--sysname 显示操作系统名称。
-v或 显示操作系统的版本。
--version 显示版本信息
显示操作系统发行编号:
显示所有信息:
二十九、常用热键
Tab 自动补全,敲命令或文件、目录时输入前一个或多个字母再用tab补全,很方便,效率也很高
ctrl+c 让当前程序停掉
ctrl+d 结束键盘输入/exit
三十、shutdown指令
关机:
shutdown 【选项】
选项:
-h 停掉系统服务,立即关机
-r 停掉系统服务立即重启
-t 秒数 -t后面加秒数,过几秒关机