=========================一: 基本命令格式和文件处理命令:=======================
ls [选项] [文件或目录]
-a 显示所有文件,包括隐藏文件(相当于–all)
-l 显示详细信息
-d 查看目录属性
-h 人性化显示文件大小
-i 显示inode
//(ll就是ls -l)
//不过不同版本系统可能稍有差别
linux中不是以扩展名来区分文件类型的,不像windows,而是以文件权限来区分的
-rw-r–r–
- 文件类型(- 文件 d 目录 l 软链接文件(及快捷方式))
rw- r– r–
u所有者 g所属组 o其他人
r读 w写 x执行
//上面只列出了三种文件类型,一共有7种类型,其他四种分别是:
// 块设备文件,字符设备文件,套接字文件和管道文件
//这四种文件不需要普通用户操作,知道即可
1: 目录处理命令
1)建立目录:mkdir(make directories) //创建一个空文件用touch
mkdir -p [目录名]
-p 递归创建
ep: mkdir lanbo
这样就创建了一个lanbo文件夹,但是如果我想把创建的lanbo文件夹放在favorite文件夹下呢?那么这就是递归创建了
ep:mkdir -p favorite/lanbo 这样创建了两个目录,favotite和在此目录下的lanbo目录
ep:mkdir -p favorite/lanbo 创建了一个包含lanbo目录的favorite目录
2)切换目录:cd [目录] (change directoty)
cd ~ 进入当前用户家目录(直接cd也是这样)
cd - 进入上次所在目录
cd .. 进入上一级目录
cd . 进入当前目录(这条命令其实就是进入当前目录,没什么影响,但这条命令是可以运行的)
pwd 打印当前所在目录
3)(只能)删除空的目录:rmdir(remove empty directories)(不过一般不这么做)
rmdir [目录名]
删除文件或目录:rm
rm -rf [文件或目录]
选项:
-r 删除目录
-f 强制
补充:rm -rf /temp/* 加×代表删除temp目录下的所有文件
rm -rf /temp/ 不加表示删除temp整个目录
习惯上,不管是目录还是文件,都用rm -rf
4)复制命令;cp
cp [选项] [源文件诺目录][目标目录]
选项:
-r 复制目录
-p 连带文件属性复制
-d 若源文件是链接文件,则复制链接属性
-a 相当于-pdr(这样目标文件和源文件一模一样,完全一样)
ep:cp japan /tmp/ 后面没加文件名,就是原名复制
cp japan /tmp/japan1 这样就是改名复制
(date命令显示系统时间)
5)剪切命令
mv [源文件] [目标目录] (不用加-r)
要改名的话
mv file file2
这样就行了
2: 文件处理命令
vi(或者vim) 可以打开文件
3:链接命令
ln - [源文件] [目标文件]
选项:-s 创建软链接
硬链接特征(不佳):
1)拥有相同的i节点和存储block块,可以看作是同一个文件
2)可通过i节点识别
3)不能跨分区
4)不能针对目录使用
软链接特征:(如果要创建软链接,一定写绝对路径(除非源文件和软链接在同一目录),而硬链接不用)
1)类似于windows的快捷方式
2)软链接拥有自己的i节点的block块,但是数据块中只保存原文件的文件名和i节点号,并没有实际的文件数据
3)lrwxrwxrwx l表示软链接
软链接文件权限都为rwxrwxrwx (其实真正的权限还得看源文件)
4)修改任意文件,另一个都改变
5)删除原文件,软链接文件不可用
做了下实验,比如新建一个文件a,写一些内容,然后创建一个a的软链接sa,cat a和cat sa是一样打,删除a后软链接就不可用了,但是如果再新建一个文件
夹,命名为a,输入不同的内容,结果cat sa后显示的是第二次的内容,就算没有删除原先的a,而是将其命名为aa,sa仍然是a(后来的)的软链接,即是通过文件
而不是i节点
4:常见目录的作用
/根目录
/bin命令保存目录(普通用户就可以读取的命令)
根目录和usr目录下的bin,sbin,这四个目录都是用来把保存系统命令的,区别是两个bin目录普通用户都可以执行
而sbin只有root下的超级用户才可以执行,Linux就是以这样的方式来区分权限的
/boot启动目录,启动相关文件
/dev设备文件保存目录 //没事别去动它
/etc配置文件保存目录
/home普通用户的家目录
/root超级用户的家目录
/lib系统库保存目录
/mnt系统挂载目录
/media系统挂载目录
/tmp 临时目录
/sbin命令保存目录(超级用户才能用的目录)
/proc直接写入内存的
/sys sys和proc这两个目录不要对它进行操作
/usr系统软件资源目录
/usr/bin/系统命令(普通用户)
/usr/sbin/系统命令(超级用户)
/var系统相关文档内容
/目录下的media,misc,mnt都是空目录,可以用来挂载cd,usb等设备,不过习惯于在mnt下创建cd,usb目录,其他两个不用,老式linux里只有mnt
这个目录,没有media和misc,当然随便你怎么用
!!!linux是一个严谨的内容,不是所有的目录下都可以随便存放内容的,可以在家目录root或home,以及tmp目录下随意存放内容
=========================二: 文件搜索命令=======================
1)文件搜索命令locate(优点:速度非常快)
touch可以新建文件
格式: touch cangls
这样就在当前目录新建了一个名为cangls的文件
locate命令格式
locate 文件名
.在后台数据库按文件名搜素,搜索速度更快
/var/lib/mlocate
.locate命令所搜索的后台数据库
update
更新数据库
!当新建一个文件,比如touch cangls
然后locate cangls 结果是找不到这个文件的,因为数据库基本一天更新一次,所以一天后就可以找到了,难道`只有等一天吗?
其实可以更新数据库的,执行updatedb命令就更新了,然后就可以找到新建的文件了
如果不记得数据库目录在哪,可以locata locate,根据不同的版本,目录名可能不同,我的这个在/var/lib/mlocate
缺点:只能搜索文件名,功能单一
相比find(耗费资源多,慢,但功能强大),耗费资源少,
!!locate有一个很有意思的地方
当在/root和/tmp目录下都新建一个文件cangls时,然后updatedb,用locate只能找到/root下的cangls
因为locate是按照/etc/updatedb.conf配置文件来搜索的
prune 删除,减少
PRUNE——BIND——MOUNTS="YES"
#开启搜索限制
PRUNEFS=
#搜索时,不搜索的文件系统
PRUNENAMES=
#搜索时,不搜索的文件类型
PRUNEPATHS=
#搜索时,不搜索的路径(/tmp)在这个目录下
所以上面只搜索到了/root目录下的cangls,可以打开updated.conf配置文件
2)命令搜索命令whereis和which
a:whereis 命令名 //只能搜索系统命令,不能搜索自己创建的命令
#搜索命令所在路径及帮助文档所在位置
选项:
-b:只查找可执行文件
-m:只查找可帮助文件
whoanmi 可以知道自己是什么用户
whatis ls 就可以知道ls是干嘛的
b:which 文件名(和whereis非常相似,只是多了可以查看别名的功能,比如ll,不过不能看帮助文档(不知道是不是系统原因,我的
系统上不可以看到别名))
#搜索命令所在路径及别名
但不是所有的命令都可以找到目录的,比如cd命令,因为是shell自带的
ps:其实我们使用的命令都是在某个目录下,要使用某条命令比如ls,是要输入绝对路径的,不然直接输入ls会提示找不到ls,卧曹,
那这样岂不是很麻烦,为此,我们可以配置环境变量,这些命令的环境变量都是配置好了的,所以我们可以直接输入ls就就以了,
可以用echo $PATH查看配置的环境变量
PATH环境变量:定义的是系统搜索命令的路径
3) find命令
find [搜索范围] [搜索条件]
#搜索文件
find / -name install.log //在/目录下按照文件名搜索,搜索文件名为”install.log”的文件
执行此命令会非常慢,系统压力很大,因为在整个根目录下搜索
#所以使用find时要避免大范围搜索,会非常耗费系统资源
#find是在系统当中搜索符合条件的文件名(必须文件名一模一样才会搜索到),如果需要匹配,使用通配符匹配,通配符是完全匹配
linux中的通配符
× 匹配任意内容 find /root -name “install.loh*” 用引号括起来
find /root -name “*” 这样就是列出当前目录下所有文件,包括隐藏文件
? 匹配任意一个字符
[] 匹配任意一个中括号内的字符 find /root -name “ab[cd]” 就是搜索abc文件或者abd文件
find /root -iname install.log
iname就是不区分大小写
find /root -user root
-user 按照所有者搜索
find /root -nouser
-nouser 查找没有所有者的文件 //linux中,没有所有者打文件就是垃圾文件,所以一般找到这些文件后都可以手动删除,不过需要注意两种情况
//1: 由内核产生的文件(该文件直接由内核调用而不经过系统目录)有可能没有所有者:
// 比如/目录下打proc和sys这两个目录,这两个目录是内存打挂载点,内核有可能在这两个目录中进行交互,所以如果在这两个目录下找到了没有所
// 有者的文件,是正常打,不要去删除
//2:外来文件:
// 比如u盘(光盘等)拷贝一个windows系统中的文件,然后拷贝到linux中,因为windows忽略啦所有者(并不是没有)这一概念,所以这些文件也是
// 没有所有者的
除了这两种情况之外,其他的所有没有所有者的文件都是垃圾文件
find /var/log/ -mtime +10
#查找10天前修改的文件
-10 10天内修改文件
10 10天当天修改文件
+10 10天前修改文件
atime 文件访问时间
ctime 改变文件属性
mtime 修改为文件内容
find . -size 25k .就表示在当前目录
也可以找大小为兆字节的文件,注意的是,千字节要小写的k,而兆字节要大写的M,不然会报错
如果不带单位,直接find . -size 25 就是搜索25个扇区大小的文件,就是25*512字节大小,所以基本都带单位
#查找文件大小为25kb的文件
-25 小于25kb的文件
25kb 等于25kb的文件
+25 大于25kb的文件
find . -inum 262422
#查找i节点是262422的文件
find /etc -size +20k -a -size -50k
#查找/etc目录下,大于20k小于50k的文件
-a and 逻辑与,
-o or 逻辑或
find /etc -size +20k -a -size -50k -exec ls -lh {} \;
#查找/etc/目录下,大于20k并小于50k的文件,并人性化显示详细信息
#-exec/-ok 命令 {} \;对搜索结果执行操作 只要用了-exec就必须在后面加{} \;
如果-exec后接rm -rf,那么就是把找到的文件删除
4) 字符串搜索命令 grep
grep [选项] 字符串 文件名
#在文件当中匹配符合条件的字符串
选项:
-i 忽略大小写
-v 排除制定字符串(即搜索不包含指定字符串打字符串)
#find命令和grep命令的区别:
*find命令:在系统当中搜索符合条件的文件名,如果需要匹配,使用通配符匹配,通配符是完全匹配
×grep命令:在文件当中搜索符合条件的字符串,如果需要匹配,使用正则表达式进行匹配,正则表达式是包含匹配
//===========================================三:帮助命令=======================================================
1) 帮助命令man
man 命令
# 获取指定命令的帮助
ex: man ls
#查看ls的帮助
man的级别:
1:查看命令的帮助
2:查看可被内核调用的函数的帮助
3:查看函数和函数库的帮助
4:查看特殊文件的帮助(主要是/dev目录下的文件)
5:查看配置文件的帮助
6:查看游戏的帮助
7:查看其他杂项的帮助
8:查看系统管理员可用命令的帮助
9:查看和内核相关文件的帮助
#查看命令拥有哪个级别的帮助
. man -f 命令
相当于:
. whatis 命令
#知道了命令拥有哪些等级的帮助后,可以查看相应等级的帮助
例如:
man 5 passwd
man 4 null
man 8 ifconfig
# 查看和命令相关的所有帮助(只要帮助文档里有该名令的关键字,就会列出来)
. man -k 命令
相当于:
. aprops 命令
比如忘记了chpasswd命令,不记得怎么写,可以man -k passwd,会在列出的里面看到chpasswd
2) 其他帮助命令
1:第一种: 选项帮助
. 命令 --help
*获取命令项的帮助
例如:ls --help
2:第二种:shell内部命令帮助
. help shell内部命令
×获取shell内部命令的帮助
例如 . whereis cd
#确定是否是shell内部命令
. help cd
#获取内部命令帮助
3:详细命令帮助info(知道就好,太麻烦)
. info 命令
- 回车 进入子帮助页面(带有*号标记)
- u 进入上层页面
- n 进入下一个帮助小节
- p 进入下一个帮助小节
- q 退出
//===========================================三:压缩与解压缩命令=======================================================
常用压缩格式: .zip .gz .bz2
.tar.gz .tar.bz2
1: .zip格式压缩(这种格式和windows是通用的)
zip 压缩文件名 源文件
#压缩文件
zip -r 压缩文件名 源目录
#压缩目录
.zip格式解压缩
uzip 压缩文件
#解压缩.zip文件
2: .gz格式压缩
. gzip 源文件
#压缩.gz格式的压缩文件,源文件会消失
gzip -c 源文件 > 压缩文件 //<就是将命令的结果写入后面的文件,比如touch a然后ls > a,就是将
#压缩为.gz格式的压缩文件,源文件保留 //ls显示的信息写入a中
//这样就做到了压缩原文件而源文件不消失的效果
gzip -r 目录(目录不会发生变化,里面文件会压缩)
#压缩目录下所有子文件,但是不能压缩目录
.gz格式解压缩(解压缩目录就加-r)
. gzip -d 压缩文件
#解压缩文件
.gunzip 压缩文件
#解压缩文件
3: .bz2格式压缩
.bzip2 源文件
#压缩.bz2格式,不保留源文件
.bzip2 -k 源文件
#压缩之后保留源文件
!!注意,bzip2命令不能压缩目录
. bz2格式解压缩
bzip2 -d 压缩文件
#解压缩,-k保留压缩文件
bunzip2 压缩文件
#解压缩,-k保留压缩文件
4:打包命令tar
. tar -cvf 打包文件名 原文件
. 选项:
-c: 打包
-v: 显示过程
-f: 指定打包后的文件名
ex:(jp文件夹里面有a,b两个文件)
tar -cvf jp.tar jp //这样就会有一个打包好的jp.tar文件
gzip jp.tar //然后再压缩为gzip格式(或者bzip2格式),这样就解决了不能压缩目录的问题
解打包命令
. tar -xvf 打包文件名
. 选项:
-x 解打包
//如果每次都要打包,再压缩,那岂不是太麻烦了,所以就有.tar.gz和.tar.bz2这两种格式
5: .tar.gz压缩格式
. 其实.tar.gz格式是先打包为tar格式,再压缩为.gz格式
. tar -zcvf 压缩包名.tar.gz 原文件 //默认压缩在当前路径,后面可以加上文件从而压缩多个文件
. 选项:
-z: 压缩为.tar.gz格式
. tar -zxvf 压缩包名.tar.gz
. 选项:
-x: 解压缩.tar.gz格式
6: .tar.bz2压缩格式
. tar -jcvf 压缩包名.tar.bz2 原文件 //默认压缩在当前路径,后面可以加上文件从而压缩多个文件
. 选项:
-j: 压缩为.tar.bz2格式
. tar -jxvf 压缩包名.tar.bz2
. 选项:
-x: 解压缩.tar.bz2格式
.如果要将.tar.gz和.tar.bz2格式解压缩到指定位置,后面加-C 位置
//C是大写
. 也可以查看内容,不解压缩
-t 查看内容,不解压缩(test,相当于测试一下)
ep: tar -jtvf 压缩包名.tar.bz2 //就会看到压缩包里面的文件
//===========================================三:关机和重启命令=======================================================
1: shutdown命令(这条命令在关机之前会保存数据,比较安全)
. shutdown [选项] [时间]
选项:
-c 取消前一个关机命令
-h 关机
-r 重启
ep: shutdown -h 06:20
//按下回车后终端会卡住(当然以实际情况为准,不同系统会不同),直到到了06:20后自动关机,可以按Ctrl+c中断命令
//如果想让命令后台执行,后面加个& (shutdown -h 06:20 &)
时间如果是now就是马上,比如:shutdown -h now
data可以显示时间
2: 其他关机命令
. halt
. poweroff
. init 0
//这三个命令都不是太安全,不会像shutdown一样在服务器关机和重启时正确保存数据,知道就好
3: 其他重启命令
. reboot //如果不想敲长的shutdown -h now,可以用reboot
. init 6 //尽量不要用
4: 系统运行级别
.0 关机
.1 单用户 //可以想象成windows的安全模式
.2 不完全多用户,不含NFS服务
.3 完全多用户 //字符界面
.4 未分配
.5 图形界面
.6 重启
. runlevel
#查询系统运行级别
执行该命令后,出现了N 5
N代表NULL,第一个代表进入当前级别之前在哪个级别,第二个是当前所在级别,5是图形界面,N表示之前是"空的",所以这就表示系统一开机就进入了图形界面,
想想,如果既装了字符界面又装了图形界面,那么开机默认是进入哪个级别呢?可以查看配置文件,cat/etc/inittab,不过我的系统不在这里
5:退出登录命令logout
//===========================================四:其他常用命令=======================================================
1:挂载命令
挂载: 在linu中所有的存储设备(u盘,光盘,硬盘等),必须在挂载之后才能正常使用
1): 查询与自动挂载
. mount
#查询系统中已经挂载的设备
. mount -a
#根据配置文件/etc/fstab的内容,自动挂载
2):命令挂载格式
. mount [-t 文件系统] [-o 特殊选项] 设备文件名 挂载点
选项:
-t 文件系统:加入文件系统类型来指定挂载的类型,可以ext3,ext4,iso9660等文件系统
-o 特殊选项:可以指定挂载的额外选项
//选项参数看图片
可以创建一个脚本文件:touch hello.sh
然后用vim编写脚本,内容是:
#!/bin/bash //必须这样开头
echo "Hello shell" //输出一段信息
然后给权限: chmod 755 hello.sh
就生成了一个可执行的脚本文件,./hello.sh就可以执行了
mount -o remount,noexec /home //remount表示重新挂载,使选项生效,noexec表示不执行,
//挂载到home分区(我实验时挂载到home分区失败,所以就挂载到根分区,成功了,结果/下命令都执行不了了,除了自带的cd命令)
不要轻易修改!!!否则就是自己给自己挖坑,这时候就算是root,可执行文件也不可执行,万一挂载的是/目录,那就惨了,命令都执行不了了,重装系统吧
注意一下,这里直接写home,没有写设备文件名也是可以的,因为home分区已经自动挂载好了
3):挂载光盘
mkdir /mnt/cdroom
#建立挂载点
mount -t iso9660 /dev/cdrom /mnt/cdrom/
#挂载光盘
//光盘的文件系统就是iso9660,没什么好说的,设备名可以写/dev/sr0(dev/cdrom是dev/sr0的快捷方式,即软连接,需要系统完全启动之后才会起作用,因此建议写
///dev/sr0)
-t iso9660也是可以省略的
挂载光盘后,可能会出现:
/dev/sr0 is write-protected, mounting read-only
这不是报错,因为挂载后默认是读写的,而光盘是只读的,这里被迫挂载为只读,所以会有提示,挂载并没有失败
windows中光盘要取出来,直接按键就弹出了,不过linux中,要先卸载光盘,不然再怎么按也弹不出来(其实windows也一样,只不过可以取出来,数据可能丢失而已,而 linux更严谨,直接无法弹出)
4):卸载命令
umount 设备文件名或挂载点
umount /mnt/cdrom
5): 挂载u盘
fdisk -l
# 查看u盘设备文件名
mount -t vfat /dev/sdb1 /mnt/usb/ //插入u盘后,执行fdisk -l就会看到u盘设备文件名,一般来说是sdb1,以实际为准
//上面的vfat文件系统相当于windows的fat32系统(这种系统基本淘汰,因为不支持单个文件大小超过4g),这里就是指定u盘的文件系统为fat32
注意:Linux默认是不支持NTFS文件系统的,所以,移动硬盘是不能直接在linux中挂载的,要想挂载,两种方法:
1:重新编译linux内核,使得支持NTFS文件系统
2:下载NTFS-3g,安装,之后就默认支持NTFS,不过就算这样也是只读的,linux与windows到底不是一个系统,兼容性不太好,要在linux和windows之间共享文件 一般都是网络传输
2:查看登录用户信息
.w 用户名
# 命令输出:
USER:登录的用户名
TTY:登录终端
FROM: 从哪个IP地址登录
LOGIN@: 登录时间
IDLE: 用户闲置时间
JCPU: 指的是和该终端连接的所有进程占用的时间,这个时间里并不包括过去的后台作业时间,但却包括当前正在运行的后台作业所占用的时间
PCPU:是指当前进程所占用的时间
WHAT:当前正在运行的命令
. who 用户名
# 命令输出:
- 用户名
- 登录终端
- 登录时间(登录来源IP地址)
. last //查询当前登录和过去登录的所有用户信息
# last命令默认是读取/var/log/wtmp文件数据
# 命令输出
- 用户名
- 登录终端
- 登录IP
- 登录时间
- 退出时间(在线时间)
. lastlog //查看所有用户的最后一次登录时间
# lastlog命令默认是读取/var/log/lastlog的文件内容
# 命令输出:
- 用户名
- 登录终端
- 登录IP
- 最后一次登录时间