一、Linux命令——命令基本格式
1.起始符:
[root@localhost ~]#
root 当前登录用户
localhost 主机名
~ 代表用户的“家”目录
超级用户(管理员)为 /root
普通用户为 /home/user,即普通用户为home下的二级目录
pwd可直接显示当前所在位置(显示完整绝对路径)
#代表超级用户,$代表普通用户
2.ls命令选项:
命令 [选项] [参数]
(简化选项)-a == --all(完整选项)
ls -a 显示所有文件,包括隐藏文件
ls -l 显示详细信息
ls -d 查看目录属性
ls -h 人性化显示文件大小
ls -i 显示inode(每个文件对应的id号)
3.文件权限(10位),第一位为文件类型,后面每3位一组
-rw-r--r--
-文件类型(-文件 d目录 l软链接目录)
rw- u所有者
r-- g所属组
r-- o其他人
r读 w写 x执行
例如:-rw-rw----.(ACL权限) 1(引用计数) root(所有者) root(组权限) 4.0K(大小) 2010-05-07 14:38(最后一次修改时间) abc(文件名)
Ps:在Linux中“.”开头的文件是隐藏文件。
二、Linux命令——文件处理命令
(Linux中一切皆文件。目录为目录文件。普通文件用来保存数据,目录文件用来保存文件。这里的文件也包含目录,因为一切皆文件的概念)
1.mkdir:建立目录(make directories)
mkdir -p [目录名]
-p :递归创建,当创建多级目录时需加
例:
mkdir light
mkdir -p imooc/linux/light
Ps:如果第二条命令不加 -p 则报错,因为找不到imooc文件夹无法继续创建。
2.cd [目录] :切换目录(change directory)
简化操作
cd ~或者cd:进入当前用户的家目录
cd -:进入上次目录
cd ..:进入上一级目录
cd .:进入当前目录
3.路径
相对路径:参照当前所在目录,进行查找
绝对路径:从根目录开始制定,一级一级递归,进行查找
4.pwd:查询所在目录位置(print working directory)
5.删除空目录(几乎不用了)
rmdir [目录名] (remove empty directories)
只能删除空目录
6.删除文件或目录(推荐)
rm -rf [文件或目录]
选项 -r:删除目录
选项 -f:强制
rm [文件名]:提示是否删除
rm -r [目录]:删除目录需加 -r ,目录中含有子文件,将持续询问是否删除
rm -rf [目录]:删除目录, 不会询问是否删除而直接进行
Linux是纯字符界面没有回收站。注意自杀指令:rm -rf /
Linux中的root是真正的root,而Win系统下的Admin权限只是个表面管理员,因为真正意义上没有root权限高
例子1:rm -rf /tmp/* :删除tmp目录下的内容
例子2:rm -rf /tmp/ :删除tmp目录
7.复制命令
cp [选项] [原文件或目录] [目标目录]
选项 -r:复制目录
选项 -p:连带文件属性复制
选项 -d:若原文件是链接文件,则复制链接属性
选项 -a:相当于 -pdr 全选
例子:
cp abc /tmp/ 若目标目录不加文件名,则为原名复制
cp abc /tmp/ana 若目标目录后加入文件名,则为改名复制
cp -r japan/ /tmp/ 复制目录
cp -a japan/ /tmp/ 完全复制,包括所有属性
被复制文件的时间为执行复制命令的时间,若要使被复制的文件与原文件属性完全一致,需加 -a
8.剪切或改名命令
注意:看使用这命令时,当前在哪个目录下进行操作
mv [原文件或目录] [目标目录] (move)
mv japan/ /tmp/ 剪切目录时不需加 -r
mv abc longls 当原文件与目标目录,在同一目录下,则为改名命令
9.当前系统时间命令:date
10.常用目录的作用
10.1、/bin 命令保存目录(普通用户就可以读取的命令)
根目录下的bin和sbin,usr目录下的bin和sbin,这四个目录都是用来保存系统命令。其中,bin目录下的命令任何用户都可以执行,sbin目录下只有root才可以执行。linux使用此方式来区分用户权限。
10.2、/lib 系统库保存目录
操作系统中并没有把所有功能都写入linux中,而将常用的功能写成一个个程序库,此些库保存在lib中,当需要时调用即可。避免全部写入linux中,使其无比庞大且运行缓慢。
10.3、/media 挂载光盘目录
10.4、/misc 外接磁带机挂载目录
10.5、/mnt 系统挂载U盘、移动硬盘目录
推荐习惯于在mnt下创建CD-ROM来挂载光盘,在mnt下创建USB来挂载U盘。原因在于老式的linux中不存在media、misc目录。
10.6、/proc、/sys 直接写入内存的
该目录同sys目录不能直接操作,这两个目录保存的是内存的挂载点。其中的数据直接写在内存中。避免数据丢失或由于内存溢出导致系统崩溃。
Ps:可以在家目录root或home,以及tmp目录下随便放内容,其他目录不要随便动(包括在根目录下)。但是tmp目录下有些Linux系统会定时自动清空该目录里的内容,所以也推荐不要把持久化的数据放进去。
11.链接文件
ln -s [原文件] [目标文件]
功能描述:生成链接文件,默认不加-s为硬链接
选项 -s 创建软链接
硬链接特征
(0)类似于C++当中的引用,只是换了个名字而已
(1)拥有相同的i节点和存储block块,可以看做是同一个文件。(在格式化时,第一将分区划分为等大小的block数据块,该数据块通常为4KB。第二建立分区表,并为每个文件建立一个相关数据。当用户搜索某个文件时,会先到分区表中查找文件所对应的block存储位置,接着到相应位置取出,并返回给用户。)硬链接与原文件拥有相同的i节点。因此,与原文件非常相似。当删除原文件或硬链接文件的任何一文件,不影响文件索引操作。可看做,同一个文件的不通进入点。它是同样的存储空间。
(2)可通过i节点识别
(3)不能跨分区建立
(4)不能针对目录使用,只有文件才可以创建
(5)例子:ln ./source/abc ./target/bcd.hard 创建后,引用计数+1
ls -i ./source/abc ./target/bcd.hard 可使用ls -i 来查看文件i节点号
(6)不建议创建硬链接文件
文件太过隐蔽,除了有i节点这样一个标识之外,很难区分它是不是硬链接
硬链接限制较多,不能跨分区,不能针对目录,使用当中容易出现错误使用方法
软链接特征
(0)类似于C语言中的指针
(1)类似于Windows快捷方式
(2)软链接拥有自己的i节点和block块,但是数据块中只保存原文件的文件名和i节点号,并没有实际的文件数据。(拥有自己的分区表中索引数据,通过索引找到分区表中文件的目标索引数据,再通过目标索引数据,查找数据)
(3)lrwxrwxrwx l软链接, 软链接文件权限都为rwxrwxrwx, 虽然权限显示为777,但实际权限需要看原文件权限
(4)修改任意文件,另一个都改变
(5)删除原文件,软链接不能使用
(6)创建软链接,原文件一定要写绝对路径。否则,软链接会到它所在的同一目录去找原文件
三、Linux命令——文件搜索命令
1、locate 文件名
在后台数据库中按文件名搜索,搜索速度更快
对于新建的文件,由于数据库没有更新,使用locate 不能查到。可以使用 updatedb强制更新数据库后即可查到。
可使用 locate locate 搜索locate相关文件,可看到locate数据库。
在不同linux中,该数据库名字稍微不同,例如,locatedb、slocate、mlocate。
2、/var/lib/mlocate (保存的搜索数据库)
#locate 命令所搜索的后台数据库
数据库不是实时的,更新频率大概一天更新一次
3、updatedb
更新数据库
4、缺点:只能按照文件名进行搜索,但常用。
5、配置文件
touch /root/cangls
touch /tmp/cangls
updatedb
locate cangls
显示为 /root/cangls 只有一条,而/tmp下的cangls没有显示出来,原因在于locate搜索遵循配置文件 /etc/updatedb.conf, 在PRUNEPATHS 中配置了/tmp/目录不进行搜索。所以没有进行查找。
/etc/updatedb.conf 配置文件
PRUNE_BIND_MOUNTS = "yes"
#开启搜索限制,yes为后面三项都生效。no为 后面三项都不生效
PRUNEFS =
#搜索时,不搜索的文件系统
PRUNENAMES =
#搜索时,不搜索的文件类型
PRUNEPATHS =
#搜索时,不搜索的路径
6、whereis (只能搜索系统命令,不能搜索自己凭空创建的普通文件)
whoami显示当前操作用户 //who am i 显示登录用户
whatis ls的作用
选项:
-b:只查找可执行文件
-m:只查找帮助文件
7、文件搜索命令:which(不仅能看到命令的路径,如果有别名,还能看到别名)
ls =‘ls --color=auto’(ls显示颜色,设置为自动)
whereis和which不能看到shell的默认命令(如:cd),只能看到外部安装的命令。
8、echo $PATH说明:不光是Linux专有的,Windous重也有,类似于Windows中的环境变量,执行命令的时候都要在path定义的目录中去寻找。
所以像ls这样的命令就可以不用加路径(/bin/ls)执行了。如果自己写的脚本 在运行时不想要具体的目录 需要在path设置目录。
9、find搜索(避免大范围的搜索,会非常浪费系统资源,建议不在直接在“/”目录下搜索)
格式:find 【搜索范围】【搜索条件】;
例:find /home -name 文件名;
注意:find搜索默认是完全匹配。
如果需要进行模糊查询,需要添加通配符,通配符有以下3种
“*”匹配任意字符,例:find /home -name “*test*”,显示所有名字带test的文件;或例:find /home -name “*”,home目录下的所有文件,包括隐藏文件。
“?”匹配任意一个字符,
“【】”匹配任意一个中括号内的字符,例:find /home -name “test【12】”,显示test1和test2文件;或find /home -name “【12】*”,显示以1和2开头的文件。
组合使用:例:find /home -name “*【12】”,显示所有1和2结尾的文件
10、find 按文件时间来搜索
find /home -mtime +10 在home目录下,查找10天前修改的文件
find /home -mtime 10 在home目录下,查找10天前当天修改的文件
find /home -mtime -10 在home目录下,查找10天内修改的文件
atime 文件访问时间
ctime 改变文件属性
mtime 修改文件内容
11、find搜索
find /root -iname test 不区分要搜索的test大小写格式
find /root -user root 搜索root目录下的所有属于root用户的文件
find /root -nouser 没有所属者的文件,liunx中,每个文件都有所属者,如果没有,那么一般都是垃圾文件,但还是有特例的,比如内核产生的文件,就没有所属者,一般在proc和sys目录下;还有外来文件,也就是U盘拷入的文件也会忽略所有者。
12、find . -size 25k #查找文件大小是25KB的文件
-25k 小于25KB的文件、25k 等于25KB的文件、+25k 大于25KB的文件
搜索千字节用小写k,搜索兆字节用大写M。
文件的默认单位是数据块(与分区使用的块不同,分区的数据块每个大小为4KB)是按照硬盘的扇区分的数据块,每个扇区的大小512个字节。如果搜索时不加单位,则认为搜索25个扇区大小的文件,25*512字节这么大的文件,计算过程耗时久,所以搜索时一定要加单位。
13、find . -inum 262422 #查找i节点是262422的文件
知道文件名查i节点用ls -i,知道i节点查文件名用find . -inum (i节点)。
14、find /etc -size +20k -a -size -50k #查找/etc/目录下,大于20KB并且小于50KB的文件
-a and 逻辑与,两个条件都满足
-o or 逻辑或,两个条件满足一个即可
15、find /etc -size +20k -a -size -50k -exec ls -lh {} \;
#查找/etc/目录下,大于20KB并且小于50KB的文件,并显示详细信息
#-exec/ -ok 命令 {} \;对搜索结果进行操作
能处理第一个搜索出来的结果的命令,才能放在“命令”处
16、grep [选项] 字符串 文件名 (字符串使用 "" 包围,结果为行记录)
-i 忽略大小写
-v 排除指定字符串
17、find 命令与 grep 命令的区别
find:在 系统 中搜索符合条件的 文件名,使用 通配符(完全)匹配
grep:在 文件 当中搜索符合条件的 字符串,使用 正则表达式 (包含)匹配
四、Linux命令——帮助命令
1.man + 命令名称-----最常用的帮助命令,man是manual的缩写,例如 man ls
进入man命令里操作,q退出 ,输入:/ -d 搜索"-d"字符串,按n往下搜“-d”,shift+n 往上搜“-d”
man的级别:
man man, man ls,man -f password,man 1 password,whereis password,man -f null,man -f ifconfig
1.1、查看命令的帮助
1.2、查看可被内核调用的函数的帮助
1.3、查看函数和函数库的帮助
1.4、查看特殊文件的帮助(主要是/dev目录下的文件)
1.5、查看配置文件的帮助
1.6、查看游戏的帮助
1.7、查看其它杂项的帮助
1.8、查看系统管理员可用命令的帮助
1.9、查看和内核相关文件的帮助
man -f 命令 相当于 whatis 命令
man -k 命令 相当于 apropos 命令 搜索含有关键词“命令”的帮助文档
2、命令 --help 获取选项帮助
例如:ls --help
3、help shell内部命令
例如:whereis可以用来判断一个命令是否是shell内部命令,ls在/bin/下面有可执行文件
说明ls命令不是shell内部命令,cd命令在/bin/下面没有相应的可执行文件,所以是shell
自带的命令.
4、info 命令
info里面内容十分繁琐,是关于命令的一个巨大的帮助文档,里面有各个版本对于此命令
的说明。
-回车:进入带*号的说明
-u: 进入上层页面
-n: 进入下一个帮助小节
-p: 进入上一个帮助小节
-q: 退出
五、Linux命令——压缩命令
1、压缩与解压缩
常用压缩格式:.zip .gz .bz2
常用压缩格式:.tar.gz .tar.bz2
Linux中常用的软件包都是用红色展示的。
压缩文件不一定比原文件小,因为压缩文件还包括压缩格式,当原文件比较小时,压缩文件可能会比原文件大。
压缩时,压缩包名字是否要加后缀无所谓的,因为linux不是用后缀来区分文件,但是我们仍然推荐加上对应的后缀名是因为这样让人工方便管理识别。
2、.zip压缩
(.zip格式的压缩包在win和linux下通用)
zip 压缩文件名 源文件 //压缩文件
zip -r 压缩目录名 源目录 //压缩目录
.zip格式解压缩
unzip 压缩文件 //解压缩文件
3、.gz格式压缩
gzip 源文件 //压缩为.gz格式的压缩文件,源文件会消失
gzip -c 源文件 > 压缩文件 //压缩为.gz格式,源文件保留
gzip -r 目录 //压缩目录下所有子文件,但是不能压缩目录
.gz解压缩
gzip -d 压缩文件 //解压缩文件
gunzip 压缩文件 //解压缩文件
gunzip -r 压缩文件夹 //解压缩文件夹
4、bzip压缩
bzip2 源文件名 //压缩文件,源文件会消失
bzip2 -k 源文件 //压缩后保留源文件
*bzip不能压缩目录
bzip解压缩
bzip -d 压缩文件 //解压缩,-k保留压缩文件
bunzip2 压缩文件 //解压缩,-k保留压缩文件
5、打包命令tar
tar -cvf 打包文件名 源文件 //压缩为tar格式
tar -zvcf 压缩包名.tar.gz 源文件 //压缩为.tar.gz格式
tar -jvcf 压缩包名.tar.bz2 源文件 //压缩为.tar.bz2格式
解压tar
tar -xvf 打包文件名 //解压tar格式文件
tar -zxvf 压缩包名.tar.gz //解压.tar.gz格式文件
tar -jxvf 压缩包名.tar.bz2 //解压.tar.bz2格式文件
-c:打包
-v:显示过程
-f:指定打包后的文件名
-x:解打包
-z:压缩为.tar.gz格式
-j:压缩为.tar.bz2格式
6、其他用法
tar -jxvf 打包文件名 -C 绝对路径 //指定解压缩位置
tar -zcvf 绝对路径(/tmp/)+打包文件名 源文件 源文件 //将多个文件解压到指定路径
tar -ztvf 压缩包文件名 //查看压缩包内文件
六、Linux命令——关机与重启命令
shutdown [选项] 时间
// 1.时间后加上“&”,则表示将当前计划任务放置后台运行!若不放置后台运行,则当前界面直到关机/重启都无法进行操作;
// 2.以上定时关机或重启命令执行后,计算机就会卡在那里,当前用户和其他登录的用户都将无法操作,直到关机或重启。这个时候,如果当前用户按【ctrl+c】可以取消本次关机或重启的操作,而其他用户如果按【ctrl+c】的话,则不会取消关机或重启操作,但可以退出中断,继续进行其他操作。
选项:
-c:取消前一个关机命令;
-h:关机
-r:重启
时间:
now //现在
时:分
其他关机命令:
halt
poweroff
init 0
以上三个关机命令不建议使用,相对shutdown,shutdown更为安全;
其他重启命令:
reboot
init 6
系统运行级别:
0 //关机
1 //单用户(类似windows安全模式)
2 //不完全多用户,不含NFS服务(字符界面,不包含文件共享服务)
3 //完全多用户(字符界面)
4 //未分配
5 //图形界面
6 //重启
runlevel //查询上次及当前的系统级别;
vim /etc/inittab //系统级别配置文件;
id:3:initdefault: //修改系统默认运行级别(id后的数字则为系统级别)
logout //退出登录命令(每次使用后,建议退出当前用户,避免他人因账户占用无法使用!与windows中的注销相似!)
七、Linux命令——其他常用命令
1、查看登录用户信息
w 用户名
user:登陆的用户名
tty:登陆终端
from:从哪个IP地址登陆
login@:登陆时间
idle:用户闲置时间
jcpu:和终端连接所有进程占用的时间
pcpu:当前进程所占用的时间
what:正在运行的命令
who 用户名
登录名
登陆终端
登录时间(登陆来源IP地址)
2、查询当前和过去登录的用户信息
last 默认读取var/log/wtmp
用户名
登录终端
登陆IP
登录时间
退出时间(在线时间)
3、查看所有用户最后一次登录信息
lastlog
lastlog命令默认是读取/var/log/lastlog文件内容
用户名
登录终端
登陆ip
最后一次登陆时间
4、挂载命令(可理解为分配盘符)
4.1、查询与自动挂载
mount 查询系统中已挂载的设备
mount -a 依据配置文件/etc/fstab的内容,自动挂载
4.2、挂载命令的格式
mount [-t 文件系统] [-o特殊选项] 设备 文件名 挂载点
选项:
-t 文件系统:加入文件系统类型来指定挂载的类型,ext3,ext4,iso9660等文件系统
-o 特殊选项:可以指定挂载的额外选项
例:mount -o remount,noexec /home/
#重新挂载/home分区,使用noexec权限
cd /home
vi hello.sh
#########################
#!/bin/bash .sh脚本文件开头
echo "Hello world!"
#########################
chmod 755 hello.sh 赋予执行权限
./hello.sh
mount -o remount,exec /home/
4.3、挂载光盘
如果是虚拟机,记得先插入光盘,勾选已连接(通电源的意思)。
mkdir /mnt/cdrom/ #建立挂载点,空目录都可以
mount -t iso9660 /dev/sr0 /mnt/cdrom/
或mount /dev/sr0 /mnt/cdrom/ #挂载光盘
4.4、卸载光盘
umount 设备文件名或挂载点
umount /mnt/cdrom/或umount /dev/sr0
4.5、挂载优盘
fdisk -l
#查看设备文件名
mount -t vfat /dev/sdb1 /mnt/usb/
#vfat指的是fat32文件系统
#Linux默认不支持NTFS文件系统的。一般Linux系统下直接在网上下载需要的东西,而不是用移动硬盘、U盘等挂载进去,因为Linux默认不支持NTFS格式,当然网上也有解决办法,下载个NTFS-3G的插件到Linux下才支持这些设备。