目录
- 目录
- 命令基本格式
- 文件处理命令
- 目录或文件处理
- Linux中常见目录
- 链接命令
- 搜索命令
- 文件搜索命令
- 命令搜索命令
- 字符串搜索命令
- find命令与grep命令的区别
- 帮助命令
- 压缩与解压缩命令
- 关机和重启命令
- 其他常用命令
- 挂载命令
- 用户登录查看和用户交互命令
- 修改系统时间
命令基本格式
命令提示符:[root@localhost~]#
其中:
内容 | 说明 |
root | 当前登陆用户 |
localhost | 主机名 |
~ | 当前所在目录(家目录)。如果是root用户登录,那么它的家目录就是 /root,如果是其他用户登录,如user1用户,则它的家目录就是 /home/user1 |
# | 超级用户的提示符。普通用户的提示符是$。 |
(注意:在Windows内局域网是不允许有相同主机名的计算机存在,否则它们俩之间是不能上网的,谁也不能通信,局域网内ip地址不能重叠,主机名也不能重叠。Linux中的主机名在局域网内也可以相同。)
命令格式:命令 [选项] [参数]
注意:
个别命令使用不遵循此格式
当有多个选项时,可以写在一起
简化选项与完整选项 -a等于–all
如:查询目录中内容:ls
ls [选项] [文件或目录]
选项:
-a 显示所有文件,包括隐藏文件
-l 显示详细信息
-d 查看目录属性
-h 人性化显示文件大小
-i 显示inode(可以说是文件的id号)
(文件权限:
如:-rw-r–r–. (.代表ACL权限)
通过权限位第1位区分文件类型。
文件类型(Linux中文件类型只有7种)(最常见的3种文件类型:-代表文件;d代表目录;l代表软链接文件,软链接就是快捷方式)
rw- r– r–
u所有者 g所属组 o其他人
r读 w写 x执行
其中1表示引用计数,只在我们的硬链接中有用。
在Linux中 . 开头的文件名是隐藏文件。)
(Ctrl+L 清屏)
文件处理命令
目录或文件处理
(1)建立目录:mkdir
mkdir [-p] [目录名]
-p 递归创建
(2)切换所在目录:cd(change directory)
简化操作:
命令 | 功能 |
cd ~ 或者 cd | 进入当前用户的家目录 |
cd - | 进入上次目录 |
cd .. | 进入上一级目录 |
cd . | 进入当前目录 |
相对路径:参照当前所在目录,进行查找;绝对路径:从根目录开始指定,一级一级递归查找。在任何目录下,都能进入指定位置。
(3)查询所在目录位置:pwd(print working directory)
(4)删除空目录:rmdir(remove empty directories)
rmdir [目录名](只能删除空白目录)
(5)删除文件或目录:rm
rm [-rf] [文件或目录]
选项:-r 删除目录; -f 强制
如: rm -rf /test/*
其中*表示删除的是test目录下的所有内容
rm -rf /test/
表示的是删除test目录
(6)复制命令:cp
cp [选项] [原文件或目录] [目标目录]
选项:
-r 复制目录
-p 连带文件属性复制
-d 若原文件是链接文件,则复制链接属性
-a 相当于 -pdr
注:
ll命令 == ls -l命令
date命令:显示系统时间
(7)剪切或改名命令:mv
mv [原文件或目录] [目标目录]
Linux中常见目录
目录 | 作用 |
/ | 根目录 |
/bin | 命令保存目录(普通用户就可以读取的命令) |
/boot | 启动目录,启动相关文件 |
/dev | 设备文件保存目录 |
/etc | 配置文件保存目录 |
/home | 普通用户的家目录 |
/lib | 系统库保存目录 |
/mnt | 系统挂载目录 |
/media | 挂载目录 |
/root | 超级用户的家目录 |
/tmp | 临时目录 |
/sbin | 命令保存目录(超级用户才能使用的目录) |
/proc、/sys | 直接写入内存的 |
/usr | 系统软件资源目录 |
/usr/bin/ | 系统命令(普通用户) |
/usr/sbin/ | 系统命令(超级用户) |
/var | 系统相关文档内容 |
注:1)根目录下的bin和sbin,usr目录下的bin和sbin,这四个目录都是用来保存系统命令的。2)proc和sys目录不能直接操作,这两个目录保存的是内存的挂载点。
链接命令
ln [-s] [原文件] [目标文件]
功能描述:生成链接文件;选项:-s 创建软链接。
硬链接特征:
1. 拥有相同的i节点(ls -i 文件
命令可以查看i节点)和存储的block块,可以看做是同一个文件;
2. 可通过i节点识别;
3. 不能跨分区;
4. 不能针对目录使用。
使用硬链接方式创建的文件同原文件相比:修改任何一方文件的内容都会影响另外一方;删除其中一个文件都不影响另外一个文件的数据。
软链接特征:
1. 类似Windows快捷方式;
2. 软链接拥有自己的i节点和block块,但是数据块中只保存原文件的文件名和i节点号,并没有实际的文件数据;
3. lrwxrwxrwx
l 表示 软链接,软链接文件权限都为 rwxrwxrwx,但访问该文件时,权限还要看原文件的权限;
4. 修改任意文件,另一个都会改变;
5. 删除原文件,软链接不能使用。
注:做软链接时,原文件的路径一定要写绝对路径!
搜索命令
文件搜索命令
(1)locate
命令
locate 文件名
:在后台数据库中按文件名搜索,搜索速度更快。
locate
命令所搜索的后台数据库:/var/lib/mlocate
(默认自动一天一更新);我们可以使用updatedb
命令手动更新数据库。
locate
命令是根据/etc/updatedb.conf
这个配置文件进行搜索的:
-
PRUNE_BIND_MOUNTS = "yes"
表示开启搜索限制; -
PRUNEFS =
表示搜索时,不搜索的文件系统; -
PRUNENAMES =
表示搜索时,不搜索的文件类型; -
PRUNEPATHS =
表示搜索时,不搜索的路径。
(2)find
命令
find [搜索范围] [搜索条件]
:搜索文件。
如:find / -name install.log
。
避免大范围搜索,会非常耗费系统资源;
find是在系统当中搜索符合条件的文件名,需要文件名完全匹配。使用通配符后可以进行模糊查询。
Linux中的通配符
通配符 | 说明 |
* | 匹配任意内容 |
? | 匹配任意一个字符 |
[] | 匹配任意一个中括号内的字符 |
如:
find /root -name "ab*"
:在/root
目录下查找文件名以ab开头的文件或目录。(匹配“ab”)
find /root -name "ab?"
:在/root
目录下查找以ab开头的3个字符命令的文件或目录。(不匹配“ab”)
find /root -name "ab[cd]"
:在/root
目录下查找文件名为abc
或abd
的文件或目录。
如:find /root -iname install.log
:不区分大小写根据文件名进行搜索。
find /root -user root
:按照所有者搜索。这里表示按root用户搜索其所拥有的文件。
find /root -nouser
:查找没有所有者的文件。
注:没有所有者的文件一般都是垃圾文件,我们可以手动把它们删除。除了下面两种情况,第一种,由系统内核产生的文件,如/proc
和/sys
目录下的文件,文件可能没有所有者;第二种,外来接入的U盘、光盘等,此外里面的文件如果由Windows产生则不存在所有者。(Windows系统不是没有文件所有者这个概念,而是它忽略了这个概念。)
find /var/log/ -mtime +10
:查找10天前修改的文件。
选项:
-atime
:文件访问时间
-ctime
:改变文件属性
mtime
:修改文件内容
参数,如:
-10:10天内修改的文件
10:10天当天修改的文件
+10:10天前修改的文件
find . -size 25k
:查找文件大小为25KB的文件。这里查找的是当前目录下。
参数,如:
-25k:小于25KB的文件
25:等于25KB的文件
+25k:大于25KB的文件
注:可以搜索以MB为单位的文件,如find . -size 2M
。
find . inum 234567
:查找i节点为234567的文件。(通过ls -i [文件名]
可以查看文件的i节点)
find /etc -size +20k -a -size -50k
:查找/etc/
目录下,大于20KB并且小于50KB的文件。
选项:
-a(and):逻辑与,两个条件都要满足
-o(or):逻辑或,两个条件满足一个即可
find /etc -size +20k -a -size -50k -exec ls -lh {} \;
:查找/etc/
目录下,大于20KB并且小于50KB的文件,并显示详细信息。其中-exec 命令 {} \;
表示将前一个命令的结果作为参数执行-exec
后面的这条命令。此外-ok 命令 {} \;
也具有相同的功能,不同的是,对每次命令结果作为后面命令的参数执行前会询问用户是否执行,输入y则执行。
命令搜索命令
(1)搜索命令的命令whereis
whereis 命令名
:搜索命令所在路径及帮助文档所在位置。
选项:
-b:只查找可执行文件所在路径
-m:只查找命令的帮助文件所在路径
(2)搜索命令的命令which
which 命令名
:搜索命令所在路径及别名。
注:whereis
和which
命令搜索的都是系统命令。
(3)PATH环境变量
- PATH环境变量:定义的是使用命令时系统搜索命令的路径,同样也是whereis
和which
搜索命令时查找的路径。
[root@localhost ~]# echo $PATH
/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/wml/.local/bin:/home/wml/bin
字符串搜索命令
(1)搜索字符串命令grep
grep [选项] 字符串 文件名
:在文件当中匹配符合条件的字符串。
选项:
-i 忽略大小写
-v 排除指定字符串
find命令与grep命令的区别
- find命令:在系统当中搜索符合条件的文件名,如果需要匹配,使用通配符匹配,通配符是完全匹配。
- grep命令:在文件当中搜索符合条件的字符串,如果需要匹配,使用正则表达式进行匹配,正则表达式是包含匹配。
帮助命令
(1)帮助命令man
获取指定命令的帮助。
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 命令
(相当于apropos 命令
):查看和命令相关的所有帮助。
(2)选项帮助
命令 --help
:获取命令选项的帮助。
如:ls --help
。
(3)shell内部命令帮助
help shell内部命令
:获取shell内部命令的帮助。
如:
whereis cd
:确定是否是shell内部命令。如果没有输出命令的可执行文件,说明命令为内部命令。
help cd
:获取内部命令帮助。
(4)详细命令帮助info
info 命令
显示结果后,通过按键操作,如:
回车:进入子帮助页面(带有*号的标记处回车)
u:进入上层页面
n:进入下一个帮助小节
p:进入上一个帮助小节
q:退出
压缩与解压缩命令
- 常用压缩格式:
.zip
、.gz
、bz2
;.tar.gz
、.tar.bz2
。
(一).zip
格式
(1).zip
格式压缩
zip 压缩文件名 源文件
:压缩文件。
zip -r 压缩文件名 源目录
:压缩目录。
(2).zip
格式解压缩
unzip 压缩文件名
:解压缩.zip
文件。
(二).gz
格式
(1).gz
格式压缩
gzip 源文件
:压缩为.gz
格式的压缩文件,源文件会消失。
gzip -c 源文件 > 压缩文件
:压缩为.gz
格式,源文件保留。
gzip -r 目录
:压缩目录下所有的子文件,但是不能压缩目录。
(2).gz
格式解压缩
gzip -d 压缩文件
:解压缩文件。
gunzip 压缩文件
:解压缩文件。
gunzip -r 压缩目录
:解压缩目录,会解压被压缩目录中的子文件。
(三).bz2
格式
(1).bz2
格式压缩
bzip2 源文件
:压缩为.bz2
格式的文件,不保留源文件。
bzip2 -k 源文件
:压缩之后保留源文件。
注意:bzip2
命令不能压缩目录。
(2).bz2
格式解压缩
bzip2 -d 压缩文件
:解压缩文件,-k保留压缩文件。
bunzip2 压缩文件
:解压缩文件,-k保留压缩文件。
(四).tar.gz
格式和.tar.bz2
格式
(1)打包命令tar
tar -cvf 打包文件名 源文件
选项:
-c 打包
-v 显示过程
-f 指定打包后的文件名
如:tar -cvf tmp.tar tmp
。
(2)解打包命令
tar -xvf 打包文件名
选项:
-x 解打包
如:tar -xvf tmp.tar
。
(3).tar.gz
压缩格式
其实.tar.gz
格式是先打包为.tar
格式,再压缩为.gz
格式。
tar -zcvf 压缩包名.tar.gz 源文件
选项:
-z 压缩为.tar.gz
格式
tar -zxvf 压缩包名.tar.gz
选项:
-x 解压缩.tar.gz
格式
(4).tar.bz2
压缩格式
tar -jcvf 压缩包名.tar.bz2 源文件
选项:
-z 压缩为.tar.bz2
格式
tar -jxvf 压缩包名.tar.bz2
选项:
-x 解压缩.tar.bz2
格式
如:
tar -jxvf tmp.tar.bz2 -C /home/user1/
:压缩文件到指定目录。
tar -zcvf test.tar.gz tmp1 tmp2
:压缩多个文件。
tar -zcvf /tmp/test.tar.gz tmp1 tmp2
:压缩多个文件,并将压缩成功后的压缩包放置在/tmp/
目录下。
tar -ztvf test.tar.gz
:查看压缩包里面的内容,但不解压。
关机和重启命令
(1)shutdown
命令
shutdown [选项] 时间
选项:
-c 取消前一个关机命令
-h 关机
-r 重启
如:
shutdown -r now
:立即重启。
shutdown -r 00:30
:指定某个时间后重启。运行该命令后,终端会“卡住”,被暂停使用。
shutdown -r 00:30 &
:指定某个时间后重启,但不“卡住”终端。其中&表示将当前命令放入系统后台执行,不占用当前的操作终端。
(2)其他关机命令
halt
poweroff
init 0
这几个关机命令都不太安全,在关机时并不会正确帮我们保存服务。
(3)其他重启命令
reboot
(相对安全)
init 6
上面init 0
和init 6
中的0和6表示什么呢?系统运行级别。
系统运行级别 | 说明 |
0 | 关机 |
1 | 单用户 |
2 | 不完全多用户,不含NFS服务 |
3 | 完全多用户 |
4 | 未分配 |
5 | 图形界面 |
6 | 重启 |
runlevel
:查询系统运行级别。如结果为:N 3
。第一个表示进入当前系统运行级别的上一个级别,N表示null,也就是一开机就进入了3级别。第二个数字3表示当前级别。
cat /etc/inittab
;修改系统默认运行级别。如结果为:id:3:initdefault:
。
(4)退出登录命令
logout
其他常用命令
挂载命令
(1)查询与自动挂载
mount
:查询系统中已经挂载的设备。
mount -a
:依据配置文件/etc/fstab
的内容,自动挂载。
(2)挂载命令格式
mount [-t 文件系统] [-o 特殊选项] 设备文件名 挂载点
选项:
-t 文件系统:加入文件系统类型来指定挂载的类型,可以ext3、ext4、iso9660等文件系统。
-o 特殊选项:可以指定挂载的额外选项。如下:
参数 | 说明 |
atime/noatime | 更新访问时间/不更新访问时间。访问分区文件时,是否更新文件的访问时间,默认为更新 |
async/sync | 异步/同步,默认为异步 |
auto/noauto | 自动/手动,mount -a命令执行时,是否会自动安装/etc/fstab文件内容挂载,默认为自动 |
defaults | 定义默认值,相当于rw,suid,dev,exec,auto,nouser,async这七个选项 |
exec/noexec | 执行/不执行,设定是否允许在文件系统中执行可执行文件,默认是exec允许 |
remount | 重新挂载已经挂载的文件系统,一般用于指定修改特殊权限 |
suid/nosuid | 具有/不具有SUID权限,设定文件系统是否具有SUID和SGID的权限,默认是具有 |
user/nouser | 允许/不允许普通用户挂载,设定文件系统是否允许普通用户挂载,只有root可以挂载分区 |
usrquota | 写入代表文件系统支持用户磁盘配额,默认不支持 |
grpquota | 写入代表文件系统支持组磁盘配额,默认不支持 |
如:mount -o remount,noexec /home
重新挂载/home
分区,并执行noexec
,即分区中不可以运行可执行文件。(这里省略了 设备文件名 参数,因为 /home
分区已经被挂载,系统知道/home
分区对应的设备文件名,所以这里可以省略。如果分区未被挂载,挂载时需要指明设备文件名。)
(3)挂载光盘
注:任何一个空目录都可以作为“盘符”。在Linux中,/
根目录为我们准备了三个空目录,/media
、/mnt
、/misc
。
mkdir /mnt/cdrom/
:建立挂载点。
mount -t iso9660 /dev/sr0 /mnt/cdrom/
(或者 mount -t iso9660 /dev/cdrom /mnt/cdrom/
因为 /dev/cdrom
是/dev/sr0
的软连接。两种方式都可以,但是推荐前一种。):挂载光盘。可以简写为:mount /dev/sr0 /mnt/cdrom/
。
光盘的设备文件名是固定的,为/dev/sr0
。
(4)卸载命令
umount 设备文件名或挂载点
如:umount /mnt/cdrom
。
(5)挂载U盘
fdisk -l
:查看U盘设备文件名。
mount -t vfat /dev/sdb1/ /mnt/usb/
:执行挂载。(vfat指的是fat32文件系统。)
注:Linux默认不支持NTFS文件系统。解决方法:1)重新编译内核,添加NTFS支持;2)下载安装ntfs-3g
。但是即便我们通过这两个方法实现了对NTFS文件系统的支持,在Linux中这个系统也只是只读的。
用户登录查看和用户交互命令
(1)查看登录用户信息
w [用户名]
命令输出:
- USER:登录的用户名;
- TTY:登录终端;
- FROM:从哪个IP地址登录;
- LOGIN@:登录时间;
- IDLE:用户闲置时间;
- JCPU:指的是和该终端连接的所有进程占用的时间。这个时间里并不包括过去的后台作业时间,但却包括当前正在运行的后台作业所占用的时间。
- PCPU:是指当前进程所占用的时间;
- WHAT:当前正在运行的命令。
who [用户名]
命令输出:用户名 登录终端 登录时间 [登录来源IP地址]。
(2)查询当前登录和过去登录的用户信息
(包括系统的重启时间)
last
last
命令默认是读取/var/log/wtmp
文件数据。
命令输出:用户名 登录终端 登录IP 登录时间 退出时间 在线时间
(3)查看所有用户的最后一次登录时间
lastlog
lastlog
命令默认是读取/var/log/lastlog
文件内容。
命令输出:用户名 登录终端 登录IP 最后一次登录时间。
修改系统时间
(需要root用户或者sudo权限)
sudo date -s MM/DD/YY # 修改日期
sudo date -s hh:mm:ss # 修改时间
在修改时间以后,修改硬件CMOS的时间:
sudo hwclock --systohc # 非常重要,如果没有这一步的话,后面时间还是不准
或者
sudo hwclock -w
使用date
修改系统时间后,可能会没有效果,那么可能需要取消自动从互联网同步时间才可以。如下:
timedatectl set-ntp 0
开启同步则:
timedatectl set-ntp 1