Linux基础学习记录(常用命令)

一、命令基本格式

1、起始符

[root@localhost ~]#

其中:root 当前登录用户

localhost 主机名

~ 当前所在目录(家目录)

# 超级用户的提示符普通用户的提示符是$)

 

2、命令格式

命令 [选项] [参数]

注意:个别命令使用不遵循此格式

当有多个选项时,可以写在一起

简化选项与完整选项:-a等于--all

3、查询目录中内容:ls

ls [选项] [文件或目录]

选项:

-a:显示所有文件,包括隐藏文件。"."开头的文件为隐藏文件,隐藏文件为系统文件。

-l:显示详细信息

-d:查看目录属性(directory

-h:人性化显示文件大小

-i:显示inodelinux系统中每个文件都有一个独立的ID号。

-lh:显示详细信息,文件大小为MbKb形式。

 

注意:

按文件修改时间查看文件:

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)创建目录:mkdirmake directories

mkdir -p [目录名]

-p :递归创建,当创建多级目录时需加

(2)切换所在目录:cdchange directory

简化操作:

cd ~cd:进入当前用户的家目录

cd - :进入上次目录

cd .. :进入上一级目录

cd . :进入当前目录

(3)相对路径和绝对路径

 相对路径:参照当前所在的目录,进行查找

 如:[root@immoc ~]# cd ../usr/local/src

 绝对路径:从根目录开始指定,一级一级递归查找。在任何目录下,都能进入指定位置。

 如:[root@immoc ~]# cd /etc/

 

(4)删除空目录:rmdirremove empty directories

rmdir [目录名]

只能删除空目录

 

(5)删除文件或目录:rmremove

rm -rf [文件或目录]

选项 -r :删除目录

选项 -f :强制

注意自杀指令:rm -rf /

(6)复制命令:cpcopy

cp [选项] [原文件或目录] [目标目录]

选项:

-r :复制目录

-p :连带文件属性复制

-d :若原文件是链接文件,则复制链接属性

-a :相当于 -pdr 全选

示例:

cp abc /tmp/ 若目标目录不加文件名,则为原名复制

cp abc /tmp/ana 若目标目录后加入文件名,则为改名复制

cp -r japan/ /tmp/ 复制目录

cp -a japan/ /tmp/ 完全复制,包括所有属性

被复制文件的时间为执行复制命令的时间,若要使被复制的文件与原文件属性完全一致,需加 -a

 

(7)剪切或改名命令:mvmove

mv [原文件或目录] [目标目录]

不在同一个目录:剪切;在同一个目录:改名

 

(8)常用目录的作用

/:根目录

/boot:启动目录,启动相关文件。

/dev:设备文件保存目录。

/etc:系统配置文件保存目录,此目录常用。

/home:普通用户的家目录。

/lib:系统函数库的保存目录。操作系统中并没有把所有功能都写入linux中,而将常用的功能写成一个个程序库,此些库保存在lib中,当需要时调用即可。避免全部写入linux中,使其无比庞大且运行缓慢。

/mnt/media/misc:系统挂载目录。习惯于在mnt下创建CD-ROM来挂载光盘,在mnt下创建USB来挂载U盘。原因在于linux早期版本中不存在mediamisc目录。

/root:超级用户的家目录。

/tmp:临时目录。用于存放临时数据。

/proc/sys:直接写入内存的,这两个目录保存的是内存的过载点。不能往其中写入数据,因为数据一旦写入内存当中,一旦重启就会丢失,并且内存有大小限制。

/var:系统相关文档内容。

/bin:命令保存目录(普通用户就可以读取的命令)。

/sbin:命令保存目录(超级用户才能使用的目录)。

/usr:系统软件资源目录。

/usr/bin/:保存系统命令(普通用户)。

/usr/sbin/:保存系统命令(超级用户)。

注:根目录下的binsbinusr目录下的binsbin,这四个目录都是用来保存系统命令。

其中,bin目录下的命令任何用户都可以执行,sbin目录下只有root才可以执行。linux使用此方式来区分用户权限。

2、链接命令:lnlink

(1)链接命令:ln

ln -s [原文件] [目标文件] link

功能描述:生成链接文件

选项 -s 创建软链接不加-s创建的是硬链接

(2)硬链接和软连接

硬链接:

① 拥有相同的iinode)节点和存储block块,可看做同一个文件;

② 可通过i节点识别;

③ 不能跨分区;

④ 不能针对目录使用;

软链接:

① 类似windows快捷方式;

② 软件拥有自己的I节点和Block块,但是数据块中只保存原文件的文件名和I节点  号,并没有实际的文件数据;

③ lrwxrwxrwx l 软链接软链接文件权限都为rwxrwxrwx

④ 修改任意文件,另一个文件都改变;

⑤ 删除原文件,软链接将不能使用;

⑥ 创建软链接的时,必须使用绝对路径;

三、文件搜索命令

1、文件搜索命令locate

1搜索文件命令:locate [文件名]

特点:在后台数据库中按文件名搜索,搜索速度更快,消耗系统资源更少。

2locate命令所搜索的后台数据库路径:/var/lib/mlocate

注意:默认更新频率为一天一次。在不同linux中,该数据库名字稍微不同,例如,locatedbslocatemlocate。可使用命令: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、命令搜索命令whreriswhich

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 [命令名](搜索系统命令所在路径和查看到命令的别名)

注意:whereiswhich不能搜索shell(当前系统界面叫做shell)的默认命令(如:cd),只能搜索外部安装的命令。

3.3 环境变量$PATH:定义系统搜索命令的路径

whereiswhich搜索命令的路径是依赖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]”,显示test1test2文件;或find /home -name [12]*”,显示以12开头的文件。

组合使用:例:find /home -name *[12]”,显示所有12结尾的文件

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 [命令名](获取指定命令的帮助)

manmanual的缩写,译为手册。

例: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,即有两个级别:15。如只输入“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格式的文件在linuxWindows中是通用的

压缩命令: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

以上三个关机命令不建议使用,相对shutdownshutdown更为安全;

其他重启命令:

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支持上下键前后翻阅文件。

posted @ 2021-04-17 21:43  钟胜一  阅读(109)  评论(0编辑  收藏  举报