一、linux中执行命令
1、命令分为两类,内置命令由shell程序自带的命令;外部命令:有独立的可执行程序文件,文件名即命令名。格式为主命令 参数 操作对象。
参数是指定命令的运行特性,指明要运行命令中的哪一个功能代码。有短选项例如:-l,-d,如果同一命令同时使用多个短选项,多数可合并,长选项:例如--help,--human-readable。
操作对象作为命令的作用对象,即命令对什么生效。有些命令可同时带多个操作对象,多个操作对象之间以空白字符分隔
注意:终止当前的命令:按【Ctrl+C】键可中断正在执行的命令。以及有两种补全方式输入命令关键字的前几个字符后,按Tab键,可实现命令自动补全;补全文件名和目录名:输入文件的前几个字符后,按tab键可自动补全。
2、查看命令帮助
查看bash内部命令帮助[root@server ~]# help cd
命令 --help [root@server ~]# cat --help
man命令用来提供在线帮助,使用权限是所有用户,使用man命令可以调阅其中的帮助信息,非常方便实用,[root@server ~]# man ls,可以自己阅读相关帮助。
info与man的用途其实差不多,都是用来查询命令的用法或者是文件的格式,[root@server info]# info info,不过你要查询的目标数据的说明文件必须要以info的格式来写成才能够使用info的特殊功能(例如超链接)。 而这个支持info命令的文件默认是放置在/usr/share/info/这个目录当中的。
date命令用于显示或设置系统的时间与日期,格式为date -参数 +显示日期时间格式参数,用户只需在强大的date命令后输入以 + 号开头的格式参数,即可按照指定格式来输出系统的时间或日期,这样在日常工作时便可以把备份数据的命令与指定格式输出的时间结合到一起。常见参数有%Y完整年份,%m 月份, %d本月中的第几天。比如oot@server ~]# date。
timedatectl命令用于设置系统的时间,若发现电脑时间跟实际不符且只有几分钟可以用此命令调整,但如果差几个小时,那么除了调整当前的时间,还要检查时区,格式为timedatectl [OPTIONS...] COMMAND ...。比如查看系统时间与时区[root@server ~]# timedatectl status,实际应用不大。
查看日历格式为cal 月份 年份,比如[root@server ~]# cal 05 2026
查看目录下的文件格式为ls -参数 操作对象,比如[root@server ~]# ls -dl /root
二、linux文件类型和根目录结构
1、Linux目录结构的特点:使用树形目录结构来组织和管理文件;整个系统只有一个根目录,Linux的根目录用“/”表示;其他所有分区以及外部设备都是以根目录为起点,挂接在目录树的某个目录中的,通过访问挂载点目录,即可实现对这些分区的访问。
常见目录用途:/root,超级用户的个人目录,普通用户没有权限访问;/bin,存放普通用户可执行的程序或命令;/etc,存放了系统管理时要用到的各种配置文件和子目录;/sys,本目录是将内核的一些信息映射文件,以供应用程序所用。
注意:系统自带的目录不要随意删除,目录的名称是区分大小写的。
2、路径以及工作目录
路径可分为:绝对路径:是指以根目录“/”为起点来表示系统中某个文件(或目录)的位置的方式;相对路径:是以当前目录为起点,表示系统中某个文件或目录在目录结构中的位置的方式。
工作目录:用户当前所处的位置,使用pwd命令查看;更改当前的工作目录,即切换目录:cd 路径
三、从命令行管理文件
1、文件命名规则:不能使用/来当文件名,/是用来做根的,也是用来做路径分隔符的;文件名不能超过255个字符;区分大小写;目录也是文件,在同一路径下,两个不同类型文件不能同名。
2、创建链接文件
(1)硬连接
linux系统允许多个文件指向同一个inode,即允许一个文件拥有多个有效地路径名。
查看方法:ll 文件名;stat 文件名
建立硬连接格式:ln -参数 源文件 目标连接文件
注意硬连接建立后,删除源文件后数据依然可以访问,只有硬连接为0时,数据旧无法访问了;硬连接不能给目录建立;不可以在不同的文件系统内建立硬连接。
(2)软连接
软连接是一种符号连接,类似于windows的“快捷方式”,仅包含所连接的路径名
格式:ln -s 源文件 目标连接名
注意软连接只是一种指向关系,删除源文件则数据不可访问;可以通过ll命令查看软连接实际执行文件及位置;更改软连接方法:ln -snf 新文件名 软连接名;删除软连接,只是删除指向关系,源数据依然可以访问
(3)软硬连接的区别:硬连接中源文件与连接文件公用一个inode号,是同一个文件,软连接中源文件与连接文件拥有不同inode号,是2个不同的文件;软连接的指向关系可以查看,硬连接不可以查看;连接数不同,软连接数不会增加;文件大小不同,硬连接文件大小与源文件一样;软连接不受任何文件系统的影响,任何用户都可以创建指向目录的软连接
3、目录操作命令
(1)创建目录:格式为mkdir [-p] [/路径/]目录名,参数-p 可快速创建出目录结构中指定的每个目录,对于已存在的目录不会被覆盖,-v 显示创建目录的详细过程。比如[root@server ~]# mkdir t2 t3 t4 # 批量一次性新建
(2)du命令:作用是统计目录及文件的空间占用情况,查看某个目录中的各级子目录所占用的磁盘空间数。命令格式为du [参数] [目录名]。
4、新建文件
(1)创建普通文件
touch用法1:如果文件已存在,更新文件的三个时间,stat可以查看文件的详细信息[root@server ~]# stat /etc/hostname
touch用法2:如果文件不存在,则表示创建文件,格式为touch 文件名1 文件名2 文件名3或touch {文件名1,文件名2,文件名3},比如[root@server ~]# touch p1.txt
注意tree命令显示目录下文件的树形拓扑图及摘要,格式为tree -参数 路径,参数有-a所有文件包含显示隐藏文件,-f列出文件的完整路径内容,-d只显示目录,-L设置显示最大深度,如tree -f -L 2。
(2)创建大容量文件
制作指定个数及容量的空文件,格式为dd if=来源 of=新文件名 count=数据块个数 bs=块容量,参数有if=/dev/zero zero空数据设备文件,可以向其它文件中填充无数个数据0,of=新文件名,一般给出存储路径,count=:新文件由几个数据块组成,bs=:一个数据块容量。比如制作100MB空数据文件[root@server ~]# dd if=/dev/zero of=/root/z1 count=2 bs=50M
5、删除文件
格式为rm -参数 文件名,用法有删除文件 rm 文件名;删除目录rm -r 目录名;强制删除不确认:rm -f 文件名。注意删除前必须确认路径及名称,删除文件时必须将文件名及扩展名写全。
6、数据流和重定向
标准输入指从键盘获取的输入,标准输出之命令执行所回传正确的信息会输出到屏幕上,标准错误输出可理解为命令执行失败后,所回传的错误信息会输出到屏幕上。不管正确或错误的数据都是默认输出到屏幕上,所以屏幕是混乱的,就需要用数据流重定向将这两条数据分开。
重定向操作符可以将命令输入和输出数据流从默认设备重定向到其他位置。重定向操作符本身不是命令,而是命令中附加的可改变命令的输入和输出对象的特殊符号。输出重定向操作符>、>>,输入重定向操作符<、<<。
其用法有,命令 >文件 或 命令 1>文件 : 将命令执行后的结果不在默认的屏幕上显示,而是以覆盖的方式写入到指定文件中,若指定的文件不存在,则自动创建该文件;命令 2>文件 : 将命令执行后所产生的错误信息不在默认的屏幕上显示,而是以覆盖的方式写入到指定文件中,若指定的文件不存在,则自动创建该文件;命令 >>文件 : 将命令执行后的正确输出信息以追加的方式写入到指定的文件中,不覆盖原文件内容,若指定的文件不存在,则自动创建该文件;命令 <文件 : 使命令从指定的文件中读取数据作为输入。
比如输出重定向(覆盖)[root@server ~]# date 1> date.txt;输出重定向(追加) [root@server ~]# date >> date.txt;输入重定向从文件读取数据作为cat命令的输入[root@server ~]# cat < file
将标准输出重定向到文件,echo命令向终端设备上输出字符串或变量提取后的值,格式为echo "字符串",比如[root@server ~]# echo $SHELL,再[root@server ~]# echo "hello" > /root/test/file
7、tee命令读取数据输出到文件
此命令读取标准输入的数据,并将其内容输出到文件的同时输出到屏幕,tee指令会从标准输入设备读取数据,将其内容输出到标准输出设备,同时输出到文件。格式为tee 参数 文件名。参数有-a或--append,附加到现有文件的后面,而非覆盖它,-i或--ignore-interrupts 忽略中断信号,--help在线帮助。
管道符|是unix一个很强大的功能,符号为一条竖线:"|",用于两个命令或者多个命令相连接,将管道符左边命令的输出作为管道符右边命令的输入,格式为命令A | 命令2 | 命令3 ……。比如[root@server ~]# more test1.txt | wc -l # 统计行数
四、文件内容显示
1、浏览普通文件
(1)文件内容查看
cat 命令:作用为查看文件内容,适合数据量较少。格式cat -参数 文件名,参数-n:显示行号,加上;-b:文件中所有非空行增加行号,编号从1开始
Tac:作用倒叙访问文件内容,格式tac 参数 文件名,例如: tac /etc/passwd
more 命令:作用翻页查看文件内容,适合内容较多的文件查看,格式more 文件名,注意使用回车则一行一行查看,使用空格则整页查看,点击q键退出查看
less命令:作用同more命令,格式less 文件名,注意可以使用上下键进行浏览,点击q退出浏览
tail命令:作用查看文档后n行内容,格式:tail -参数 文件名,两个参数-数字查看倒数行数,-f动态刷新, 实时显示日志文件并且能动态更新
2、文件信息查看
file 命令:作用查看文件类型,格式file -参数 文件名
文件类型:ASCII file :ASCII文本字符文件,empty:空文件,block special :块设备文件,character special :字符设备文件,diretory:目录
stat 命令:作用显示文件属性信息,格式stat 文件名,注意一般通过该命令查看大小、Inode、硬链接、软连接
3、文件内容过滤显示—grep
在指定的普通文件中查找并显示含有指定字符串的行,也可与管道符一起使用。
格式为grep -参数 查找条件 文件名
可以使用特殊符号匹配:
grep h 文件名,查找文件里有字符h的行
grep ^[q] 文件名,匹配以q开始的行
grep ^[qf] 文件名,匹配以q或者f开头的行
4、切割显示-cut
cut命令用于按列提取文本内容
格式为cut -d "分隔符" -f列数字 文件名
比如提取IP地址,[root@server ~]# ip a | grep ens160 | grep inet | cut -d "/" -f1 | cut -d " " -f6
5、排序显示-sort
sort命令用于对文本内容进行排序显示
格式为sort -参数 文件名
比如[root@server ~]# cat /etc/passwd | cut -d : -f1 | sort # 取出所有账户名
6、去重显示-uniq
uniq命令用于去除文本中连续的重复行
格式为uniq -参数 文件名
7、文件中字符替换显示-tr
tr 指令从标准输入读取数据,经过替换或者删除后,将结果输出到标准输出
格式为tr -参数 替换内容 新内容,参数-c反选设定字符,符合 “替换内容” 的部份不做处理,不符合的剩余部份才进行转换,-d删除指令字符,-s缩减连续重复的字符成指定的单个字符。
比如提取IP地址,[root@server ~]# ip a | grep ens160 | grep inet | cut -d / -f1 | tr -s ' ' | cut -d ' ' -f3
五、文件的其它操作命令
1、文本内容统计wc
wc命令用于统计指定文本文件的行数、字数或字节数
格式为wc -参数 文件名,参数-l,只显示行数,-w只显示单词数,-c 只显示字节数。
比如配合管道符计算[root@server ~]# ll / | wc -l # 文件数
2、复制、移动文件
(1)复制文件或目录
格式为cp -参数 源文件 目标文件
比如[root@server ~]# cp t2.txt /t3.txt # 另存为
[root@server ~]# cp p1 / # 报错,目录需加-r
[root@server ~]# cp -r p1 /
[root@server ~]# cp -r p2 /p3 # 目录另存为
(2)移动文件或目录
mv命令用于剪切或重命名文件
格式为mv [选项] 源文件名称 目标文件名称,注意剪切操作不同于复制操作,因为它会把源文件删除掉,只保留剪切后的文件;如果在同一个目录中将某个文件剪切后还粘贴到当前目录下,其实本质就是对文件进行了重命名操作。
比如[root@server ~]# mv t3.txt /etc #源为文件,目标为目录 ,为移动
3、查找文件
(1)查找文件路径
whereis命令可以搜索系统命令的可执行文件路径和说明文档,格式whereis 命令名
比如[root@server ~]# whereis ls
which命令搜索系统命令的可执行文件,格式which 命令名
比如[root@server ~]# which cd
4、查找文件-find
按照文件名、大小、时间、权限、类型、所属者、所属组来搜索文件,格式find 查找路径 查找条件 具体条件 操作,注意find命令默认的操作是print输出,find是检索文件的,grep是过滤文件中字符串。
比如/etc下检索host开头的文件[root@server ~]# find /etc -name "host*" -print
在/目录查找以a开头文件[root@server ~]# find / -name "a*"
5、压缩和解压缩
压缩时一般采用gzip命令,使用gzip压缩文件[root@server test]# gzip test1.txt
tar归档命令,格式为tar -参数 [args]……,常用参数-c创建.tar格式的包文件,-x释放.tar格式的包文件,-t查看包中的文件列表,必选参数-f用于指定打包文件名,当与-c选项一起使用时,创建的tar包文件使用该选项指定的文件名,当与-x选项一起使用时,则释放该选项指定的tar包文件。
6、打包:创建(非压缩的)打包文件,将指定的一个或多个文件或目录备份生成为一个指定的包文件,格式为tar cvf/cfv/-cvf 文件名.tar 要打包的目录或文件名。
打包压缩::为节省存储空间,通常需要生成压缩格式的tar包文件,tar czf/-czf 文件名.tar.gz 要打包压缩的目录或文件名……;提取包文件到指定目录,tar xf/-xf/-xzf 文件名.tar.gz [-C 目标路径]。
比如将/etc下所有内容打包压缩到/root目录中,[root@server ~]# tar -cvf taretc.tar.gz /etc;
解压缩[root@server ~]# mkdir temp