Linux基础学习记录(常用命令)
一、命令基本格式
1、起始符
[root@localhost ~]#
其中:root 当前登录用户
localhost 主机名
~ 当前所在目录(家目录)
# 超级用户的提示符(普通用户的提示符是$)
2、命令格式
命令 [选项] [参数]
注意:个别命令使用不遵循此格式
当有多个选项时,可以写在一起
简化选项与完整选项:-a等于--all
3、查询目录中内容:ls
ls [选项] [文件或目录]
选项:
-a:显示所有文件,包括隐藏文件。"."开头的文件为隐藏文件,隐藏文件为系统文件。
-l:显示详细信息
-d:查看目录属性(directory)
-h:人性化显示文件大小
-i:显示inode,linux系统中每个文件都有一个独立的ID号。
-lh:显示详细信息,文件大小为Mb、Kb形式。
注意:
按文件修改时间查看文件:
ls -lt 按照时间降序【默认:最新修改的排在前面】
ls -ltr 按修改时间反向的排序【即最新修改时间的放在最后面】
按文件大小排序
ls -lS 按照由大到小排序
ls -lSr 按照从小到大排序
4、文件权限
文件权限一共10位,第一位为文件类型,后面每3位一组
示例:-rw-r--r--. 1 root root 111007
-:表示文件类型(文件类型:-文件;d目录;l软链接文件)
rw-:表示u所有者,即读和写权限。
r--:表示g所属组,即只读权限。
r--:表示o其他人,即只读权限。
".":代表ACL权限。
1:引用计数。就是此文件被调用了几次。
root:代表所有者(root本人)权限,即:rw-。
root:代表和root一个所属组的权限,即:r--。
111007:代表字节,用命令:ls -lh可将字节调整为Mb形式现实。
文件权限:r(read)读;w(write)写;x(execute)执行。
二、文件处理命令
1、目录及文件处理命令
(1)创建目录:mkdir(make directories)
mkdir -p [目录名]
-p :递归创建,当创建多级目录时需加
(2)切换所在目录:cd(change directory)
简化操作:
cd ~或cd:进入当前用户的家目录
cd - :进入上次目录
cd .. :进入上一级目录
cd . :进入当前目录
(3)相对路径和绝对路径
相对路径:参照当前所在的目录,进行查找
如:[root@immoc ~]# cd ../usr/local/src
绝对路径:从根目录开始指定,一级一级递归查找。在任何目录下,都能进入指定位置。
如:[root@immoc ~]# cd /etc/
(4)删除空目录:rmdir(remove empty directories)
rmdir [目录名]
只能删除空目录
(5)删除文件或目录:rm(remove)
rm -rf [文件或目录]
选项 -r :删除目录
选项 -f :强制
注意自杀指令:rm -rf /
(6)复制命令:cp(copy)
cp [选项] [原文件或目录] [目标目录]
选项:
-r :复制目录
-p :连带文件属性复制
-d :若原文件是链接文件,则复制链接属性
-a :相当于 -pdr 全选
示例:
cp abc /tmp/ 若目标目录不加文件名,则为原名复制
cp abc /tmp/ana 若目标目录后加入文件名,则为改名复制
cp -r japan/ /tmp/ 复制目录
cp -a japan/ /tmp/ 完全复制,包括所有属性
被复制文件的时间为执行复制命令的时间,若要使被复制的文件与原文件属性完全一致,需加 -a
(7)剪切或改名命令:mv(move)
mv [原文件或目录] [目标目录]
不在同一个目录:剪切;在同一个目录:改名
(8)常用目录的作用
/:根目录
/boot:启动目录,启动相关文件。
/dev:设备文件保存目录。
/etc:系统配置文件保存目录,此目录常用。
/home:普通用户的家目录。
/lib:系统函数库的保存目录。操作系统中并没有把所有功能都写入linux中,而将常用的功能写成一个个程序库,此些库保存在lib中,当需要时调用即可。避免全部写入linux中,使其无比庞大且运行缓慢。
/mnt、/media、/misc:系统挂载目录。习惯于在mnt下创建CD-ROM来挂载光盘,在mnt下创建USB来挂载U盘。原因在于linux早期版本中不存在media、misc目录。
/root:超级用户的家目录。
/tmp:临时目录。用于存放临时数据。
/proc和/sys:直接写入内存的,这两个目录保存的是内存的过载点。不能往其中写入数据,因为数据一旦写入内存当中,一旦重启就会丢失,并且内存有大小限制。
/var:系统相关文档内容。
/bin:命令保存目录(普通用户就可以读取的命令)。
/sbin:命令保存目录(超级用户才能使用的目录)。
/usr:系统软件资源目录。
/usr/bin/:保存系统命令(普通用户)。
/usr/sbin/:保存系统命令(超级用户)。
注:根目录下的bin和sbin,usr目录下的bin和sbin,这四个目录都是用来保存系统命令。
其中,bin目录下的命令任何用户都可以执行,sbin目录下只有root才可以执行。linux使用此方式来区分用户权限。
2、链接命令:ln(link)
(1)链接命令:ln
ln -s [原文件] [目标文件] (link)
功能描述:生成链接文件
选项 -s 创建软链接,不加-s创建的是硬链接
(2)硬链接和软连接
硬链接:
① 拥有相同的i(inode)节点和存储block块,可看做同一个文件;
② 可通过i节点识别;
③ 不能跨分区;
④ 不能针对目录使用;
软链接:
① 类似windows快捷方式;
② 软件拥有自己的I节点和Block块,但是数据块中只保存原文件的文件名和I节点 号,并没有实际的文件数据;
③ lrwxrwxrwx l 软链接,软链接文件权限都为rwxrwxrwx;
④ 修改任意文件,另一个文件都改变;
⑤ 删除原文件,软链接将不能使用;
⑥ 创建软链接的时,必须使用绝对路径;
三、文件搜索命令
1、文件搜索命令locate
1)搜索文件命令:locate [文件名]
特点:在后台数据库中按文件名搜索,搜索速度更快,消耗系统资源更少。
2)locate命令所搜索的后台数据库路径:/var/lib/mlocate
注意:默认更新频率为一天一次。在不同linux中,该数据库名字稍微不同,例如,locatedb、slocate、mlocate。可使用命令:locate locate搜索locate相关文件,可看到locate数据库名称。
3)更新数据库,命令:updatedb
注意:对于新建的文件,由于数据库没有更新,使用locate命令不能查到。可以使用updatedb强制更新数据库后即可查到。
4)配置文件:/etc/updatedb.conf
文件内容:
PRUNE_BIND_MOUNTS = "yes" (开启搜索限制,yes为后面三项都生效。no为 后面三项都不生效)
PRUNEFS = (搜索时,不搜索的文件系统)
PRUNENAMES = (搜索时,不搜索的文件类型)
PRUNEPATHS = (搜索时,不搜索的路径)
例如:
在连续执行四条命令后
touch /root/cangls
touch /tmp/cangls
updatedb
locate cangls
显示为 /root/cangls只有一条,而/tmp下的cangls没有显示出来,原因在于locate搜索遵循配置文件 /etc/updatedb.conf, 在PRUNEPATHS中配置了/tmp/目录不进行搜索。所以没有进行查找
5)优缺点
locate优点:效率高,耗费资源少
locate缺点是:只能按照文件名来搜索
3、命令搜索命令whreris与which
3.1 命令:whereis [命令名](搜索系统命令所在路径以及帮助文档所在位置)
选项:
-b:只查找可执行文件
-m:只查找帮助文件
例:搜索ls命令,命令:whereis ls。如果输入“whereis -b ls”,只会显示红字。如果输入“whereis -m ls”,则只会显示黄字。
ls: /bin/ls /usr/share/man/man1p/ls.1p.gz /usr/share/man/man1/ls.1.gz
3.2 命令:which [命令名](搜索系统命令所在路径和查看到命令的别名)
注意:whereis和which不能搜索shell(当前系统界面叫做shell)的默认命令(如:cd),只能搜索外部安装的命令。
3.3 环境变量$PATH:定义系统搜索命令的路径
whereis和which搜索命令的路径是依赖PATH所定义的路径。Linux执行命令的时候都要在path定义的目录中去寻找。
系统命令不需要打绝对路径,如:ls这样的命令就可以不用加路径(/bin/ls)执行。如果是自己写的脚本或者自己写的程序,就需要打绝对路径,或者在$PATH中设置。
命令:echo $PATH
/usr/lib/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
4、文件搜索命令find
格式:find 【搜索范围】【搜索条件】;
例:find /home -name 文件名;
注意:find搜索默认是完全匹配。
4.1 通配符
如果需要进行模糊查询,需要添加通配符,通配符有以下3种
(1)“*”匹配任意字符
例:find /home -name “*test*”,显示所有名字带test的文件;或例:find /home -name “*”,home目录下的所有文件,包括隐藏文件。
(2)“?”匹配任意一个字符,
(3)“[]”匹配任意一个中括号内的字符,例:find /home -name “test[12]”,显示test1和test2文件;或find /home -name “[12]*”,显示以1和2开头的文件。
组合使用:例:find /home -name “*[12]”,显示所有1和2结尾的文件
4.2 find 按文件时间来搜索
find /home -mtime +10 在home目录下,查找10天前修改的文件
find /home -mtime 10 在home目录下,查找10天前当天修改的文件
find /home -mtime -10 在home目录下,查找10天内修改的文件
atime 文件访问时间
ctime 改变文件属性
mtime 修改文件内容
4.3 find搜索相应大小的文件命令
格式:find 目录 -size 文件大小
find .(当前目录) -size 25k .代表当前文件 =/root -25小于 +大于 不加等于25
注意:文件大小用小写k和大写M 不能不加文件大小的符号,find默认的是数据块(扇区;每个扇区512字节)
-inum 按照i节点号搜索
-a 表示and
-o 表示or
find /etc -size +20k -a -size -50k -exec ls -lh {} \;
-exec {} \; 固定格式,表示直接对前面的搜索结果进行后面的命令处理;其中必须添加可以处理第一条命令的命令
4.4 find其他搜索示例
find / -name install.log
find /root -iname install.log #不区分大小写
find /root -user root #按照所有者搜索
find /root -nouser #查找没有所有者的文件
5、字符串搜索命令grep
命令格式:grep [选项] 字符串 文件名(在文件当中匹配符合条件的字符串)
选项:
-i:忽略大小写
-v:排除制定字符串
例:grep "size" anaconda-ks.cfg,即搜索anaconda-ks.cfg文件中包含“size”的内容。
6、find命令与grep命令的区别
find:在系统中搜索符合条件的文件名,使用通配符(完全)匹配。
grep:在文件当中搜索符合条件的字符串,使用正则表达式 (包含)匹配。
四、帮助命令
1.命令:man [命令名](获取指定命令的帮助)
man是manual的缩写,译为手册。
例:man ls,即查看ls命令的帮助。
2.进入man命令里操作(vi界面操作方法)
(1)":q":退出;(2)“/ -d”:搜索"-d"字符串;(3)按n键,往下翻;(4)shift+n:往上翻
3.man的级别
(1)查看命令的帮助
(2)查看可被内核调用的函数的帮助
(3)查看函数和函数库的帮助
(4)查看特殊文件的帮助(主要是/dev目录下的文件)
(5)查看配置文件的帮助
(6)查看游戏的帮助
(7)查看其它杂项的帮助
(8)查看系统管理员可用命令的帮助(普通用户无法使用的命令)
(9)查看和内核相关文件的帮助(此级别不一定存在)
4.命令:man -f [命令名](查看命令有哪个级别的帮助,相当于“whatis [命令名]”)
如不打级别,则man命令默认打开最小等级的信息。
例:(1)man -f passwd,即有两个级别:1和5。如只输入“man passwd”,即只显示1级别的帮助。如查看5级别passwd帮助,即“man -5 passwd”。
(2)man -f ifconfig,可得知ifconfig命令级别为8。
5.命令:man -k [命令名](查看和命令相关的所有帮助,相当于“apropos [命令名]”)
例:man -k passwd,查看与passwd相关的帮助。
6. 其他帮助命令
man,--help,help,info总共四种获取帮助的命令。
1)命令 --help 获取选项帮助
例如:ls --help
2)help shell内部命令
例如:whereis可以用来判断一个命令是否是shell内部命令,ls在/bin/下面有可执行文件
说明ls命令不是shell内部命令,cd命令在/bin/下面没有相应的可执行文件,所以是shell
自带的命令.
3)info 命令
info里面内容十分繁琐,是关于命令的一个巨大的帮助文档,里面有各个版本对于此命令
的说明。
-回车:进入带*号的说明
-u: 进入上层页面
-n: 进入下一个帮助小节
-p: 进入上一个帮助小节
-q: 退出
五、压缩与解压缩命令
1、.zip格式
zip格式的文件在linux和Windows中是通用的
压缩命令:zip 压缩文件名 源文件(压缩文件)
zip -r 压缩文件名 源目录(压缩目录)
解压命令:unzip 压缩文件名
2、.gz格式
压缩命令:gzip 源文件 (压缩为.gz格式的压缩文件,源文件会消失)
gzip -c 源文件 > 压缩文件(压缩为.gz格式,并保留源文件)
gzip -r 目录名(压缩目录下所有的子文件,但是不能压缩目录)
解压命令:gzip -d 压缩文件
gunzip 压缩文件
若解压目录-r,也是将目录下的子文件解压,但不解压目录本身
3、.bz2格式
压缩命令:bzip2 源文件(压缩为.bz2格式,不保留源文件)
bzip2 -k 源文件(压缩之后保留源文件)
bzip2命令不能压缩目录
解压命令:bzip2 -d 压缩文件(解压,-k保留压缩文件)
bunzip2 压缩文件(解压,-k保留压缩文件)
4、打包命令tar
tar -cvf 打包文件名 源文件
选项:
-c: 打包
-v: 显示过程
-f: 指定打包后的文件名
解打包命令
tar -xvf 打包文件名
选项:
-x: 解打包
5、.tar.gz压缩格式(先打包为.tar格式,再压缩为.gz格式)
tar -zcvf 压缩包名.tar.gz 源文件
选项:
-z: 压缩为.tar.gz格式
tar -zxvf 压缩包名.tar.gz
选项:
-x: 解压缩.tar.gz格式
6、.tar.bz2压缩格式(先打包为.tar格式,再压缩为.bz2格式)
tar -jcvf 压缩包名.tar.bz2 源文件
选项:
-c: 压缩为.tar.bz2格式
tar -zxvf 压缩包名.tar.bz2
选项:
-x: 解压缩.tar.bz2格式
7、查看内容,不解压
tar -jtvf test.tar.bz2 #查看内容,不解压
tar -ztvf test.tar.gz #查看内容,不解压
六、关机和重启命令
推荐关机使用shutdown!
shutdown [选项] 时间 //时间后加上“&”,则表示将当前计划任务放置后台运行!若不放置后台运行,则当前界面直到关机/重启都无法进行操作;
❶选项:
①-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中的注销相似!)
七、其他常用命令
1、挂载命令(可理解为分配盘符)
(1)查询与自动挂载
mount 查询系统中已挂载的设备
mount -a 依据配置文件/etc/fstab的内容,自动挂载
(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/
(3)挂载光盘
mkdir /mnt/cdrom/ #建立挂载点,空目录都可以
mount -t iso9660 /dev/sr0 /mnt/cdrom/
或mount /dev/sr0 /mnt/cdrom/ #挂载光盘
(4)卸载光盘
umount 设备文件名或挂载点
umount /mnt/cdrom/或umount /dev/sr0
(5)挂载优盘
fdisk -l
#查看设备文件名
mount -t vfat /dev/sdb1 /mnt/usb/
#vfat指的是fat32文件系统
#Linux默认不支持NTFS文件系统的
2、Linux中用户登录查看命令
2.1 w 查看用户信息 (有系统资源)
load average: x.xx x.xx x.xx 表示系统在1分钟内 5分钟内 15分钟内的平均负载(CPU 内存)
tty:终端
tty1本机终端
pts/0第一个远程终端
IDLE:用户闲置时间
WHAT:用户正在执行命令
who 查看用户信息(简化)
2.2 last 查询当前登陆和过去登陆用户信息
【可以看到reboot(重启)时间】
实际是查看/var/log/wtmp 文件中是二进制命令,必须用last命令才能看
2.3 lastlog 查看所有用户最后一次登陆时间
实际是查看/var/log/lastlog 不能直接看 文件中是二进制命令,也是用lastlog看
3、查看端口占用、内存和CPU占用情况
端口占用:
(1)查看所有端口、进程的使用情况:netstat -tunlp
(2)查看某一端口的使用情况: netstat -tunlp|grep 5560
内存及CPU占用:
(1)查看占用情况(动态):top
(2)查看占用情况(总的):free
(3)查看占用内存最多的N个进程: ps -aux | sort -k4nr | head -K 如果是10个进程,K=10,如果是最高的三个,K=3
(4)查看硬盘空间大小:df -lh
(5)使用 vmstat 命令来检查内存使用情况:vmstat -s
4、常用的查看日志的命令
Linux查看日志的命令有多种: tail、cat、tac、head、echo等
(1)tail命令
参数:
tail [ -f ] [ -c Number | -n Number | -m Number | -b Number | -k Number ] [ File ]
参数解释:
-f 该参数用于监视File文件增长。
-c Number 从Number字节位置读取指定文件
-n Number 从Number行位置读取指定文件。
-m Number 从Number多字节字符位置读取指定文件,比方你的文件假设包括中文字,假设指定-c参数,可能导致截断,但使用-m则会避免该问题。
-b Number 从Number表示的512字节块位置读取指定文件。
-k Number 从Number表示的1KB块位置读取指定文件。
File 指定操作的目标文件名称
上述命令中,都涉及到number,假设不指定,默认显示10行。Number前面可使用正负号,表示该偏移从顶部还是从尾部开始计算。
【用法】
tail -f filename 监视filename文件的尾部内容(默认10行,相当于增加参数 -n 10)
tail -100f filename 监视filename文件的尾部内容(默认从底部往前100行,相当于增加参数 -n 100)
tail -n 20 filename 显示filename最后20行
tail -r -n 10 filename 逆序显示filename最后10行
(2)head命令
注意:head命令跟tail命令是相反的,head是看前多少行日志
【用法】
head -n 10 test.log 查询日志文件中的头10行日志
head -n -10 test.log 查询日志文件除了最后10行的其他所有日志
(3)cat命令
参数:
-n 或 --number 由 1 开始对所有输出的行数编号
-b 或 --number-nonblank 和 -n 相似,只不过对于空白行不编号
-s 或 --squeeze-blank 当遇到有连续两行以上的空白行,就代换为一行的空白行
-v 或 --show-nonprinting
-E --show-ends 在每行结束处显示 $
-e --等价于-vE
cat主要有三大功能:
1. $ cat filename 一次显示整个文件。
2. $ cat > filename 从键盘创建一个文件。(只能创建新文件,不能编辑已有文件)
3. $ cat filename1 filename2 > filename 将几个文件合并为一个文件(如果原本file文件中有内容,会被覆盖掉)
【用法】
cat filename 一次显示整个文件
cat -n filename1 > filename2 把 file1 的内容加上行号后输入到 file2 这个文件里
cat -b filename1 filename2 >> filename3 把 file1 和 file2 的内容加上行号(空白行不加)之后将内容追加到 file3 里
cat /dev/null > /etc/test.txt 把test.txt文件扔进垃圾箱,赋空值test.txt
注意:>意思是创建,>>是追加。
(4)more命令
more 命令是一个基于vi编辑器文本过滤器,它以全屏幕的方式按页显示文本文件的内容,支持vi中的关键字定位操作。该命令一次显示一屏文本信息,满屏后停下来,以百分比的形式,以上下翻页,以上下行移动显示查看日志并且在屏幕的底部给出一个提示信息,从开始至当前己显示的该文件的百分比:–More–(XX%)
【用法】
按Space键: 显示文本的下一屏内容。
按B键: 显示上一屏内容。
按Enter键: 只显示文本的下一行内容。
按斜线符: 接着输入一个模式,可以在文本中寻找下一个相匹配的模式。
按H键: 显示帮助屏,该屏上有相关的帮助信息。
按Q键: 退出more命令
(5)less命令
less 命令查看日志,和more命令类似,只不过less支持上下键前后翻阅文件。