本文将对Linux中一些常用基本指令进行简单的结束,大致分为对查看文件或者目录信息,创建剪切删除普通文件或目录,打包压缩和解压文件或目录,进入指定路径,查看日期,搜索查找文件,以及一些其他的指令和常用的快捷键。
ls 指令; 语法: ls [选项][目录或文件]
功能:对于目录,该命令列出该目录下的所有子目录与文件。
对于文件,将列出文件及其他信息.
常用的两个指令
ls -l (以列表的形式显示更多的文件属性)
ls -l -a (ls -la)显示更多的隐藏文件
ls -l = ll
我们看到输入ls -l指令和ll指令效果都是一样的。以列表的形式显示出了当前路径下的文件或目录信息。当我们输入ls -al后显示出了更多的隐藏文件计器相关信息。这里提一下,在Linux中以点.开头的文件都是隐藏文件。
在Windows下也是存在着隐藏文件的,需要设置才能看见这些隐藏文件
ls指令除了以上两个比较常用的指令外,ls还有其他的指令选项
-a 列出目录下的所有文件,包括以 . 开头的隐含文件。
-d 将目录像文件一样显示,而不是显示其下的文件。 如:ls –d 指定目录
-i 输出文件的 i 节点的索引信息。 如 ls –ai 指定文件
-k 以 k 字节的形式表示文件的大小。ls –alk 指定文件
-l 列出文件的详细信息。
-R 列出所有子目录下的文件。(递归)
-1 一行只输出一个文件
这里在引入一个指令pwd
,pwd用来查看当前所处的路径
上图显示的当前所处路径就是/home/Ly
进入指定路径也就是切换路径,需要用到
cd
指令。在说到cd指令前简单介绍一下,Liunx下的目录结构。Linux系统中,磁盘上的文件和目录被组成一棵目录树,每个节点都是目录或文件。
Linux目录结构如下图
这里简单提一下路径,路径就是文件或者目录所在的位置。路径又分为绝对路径和相对路径,以图中的bin目录为例,到达它到的绝对路径就是/usr/bin,假如我现在处在bin旁边的local目录中,要向进入bin目录,除了根据bin目录的绝对路径定位到它,还可以从local目录回退到usr目录下,在从usr目录进入bin目录,这条路径就是相对路径。
现在来介绍一下几条常用的cd指令
cd .(进入当前目录,相当于不变)
cd .. (返回上一级目录)
cd 路径 (进入指定路径)
Liunx下用\作为路径分隔符 windows下用/作为路径分隔符
cd ~ 表示进入 home 目录(对于root用户直接进入根目录)
cd -(回到最近上一次所处路径)
从图中我们可以看到,pwd显示当前所处的路径就在/home/Ly下,cd .表示进入当路径,也就是当于不动,cd … 返回上一级目录,cd…后果然是返回到了/home,cd 后跟路径进入指定的路径。cd -回到最近一次所处的路径,在进入/home/Ly路径前,所在路径是/ ,cd-就会回到/,再次cd-又回到原来的路径。cd~进入用户家目录。
这个图就是从相对路径进入指定目录,实现处在/home/Ly路径下,该路径目录下存在两个目录 dir1和mydir,先通过绝对路径进入mydir目录下,在通过相对路径进入到了dir1目录中
对于root用户来说家目录就是/root,对于普通用户来说家目录是/home/用户名,Liunx下用/作为路径分隔符 windows下用\作为路径分隔符,同时Linux中/也表示根目录
补充一条指令
tree . 会将当前目录往后的所有的目录或文件以树状的形式展示出来.如果没有tree指令可以输入以下指令安装 yum install -y tree
通过ll指令查看到当前路径下有一个文件和一个目录,使用tree命令后生成了树状结构,并且在下方显示出了一个目录和一个文件。
mkdir 目录名 (当前路径下创建一个目录)
touch 文件名(当前路径下创建普通文件)
mkdir -p d1/d2/d3/d4 (递归创建d1 d2 d3 d4多个目录)
通过ll命令看到刚开始当前路径下,没有文件或者目录。touch 创建了一个文本文件t1.txt,mkdir创建了一个目录 my,同时用 mkdir -p创建了多个目录d1 d2 d2.通过tree命令可以看到目录结构和它们之间的关系
删除文件或者目录需要用到一下命令:
rmdir 目录名 (删除目录。只能删除空目录)
rm 文件名或者目录名(删除文件或者目录)
rm -r (递归删除)
rm -rf (强制递归删除)
rm -rf ./*(强制删除当前目录下所有文件或目录)
当使用rm后跟文件名或目录名指令删除目录或文件时,会出现提示确认是否删除,n表示不,y表示是
*号表示所有,所以rm -rf ./*,表示删除当前路径下所有的内容,这个指令也就是大家常常调侃的删库跑路指令。
当然touch 还可以配合很多其他的选项,实现不同的效果,这里就不做过多介绍了。
nono是Liunx中的一种简单的文本编辑器,类似于Windows下的文本编辑器,nano 后跟文件名即可打开文件进行编辑。Ctrl+x可退出,退出前会确认是否退出输入有y,回车即可。使用nano进行简单的C语言程序编写,编写好.c文件后保存退出,gcc 后跟文件名编译文件。后输入 ./a.out即可。.是当前路径 /是路径分隔符。意思就是当前路径下运行可执行文件。
stat 后跟文件名查看文件所有属性
这里简单说一下,什么是文件?文件应该由两部分组成,文件内容和文件属性,文件属性包括文件类型 文件名 文件大小等等。
ACM时间是Linux中输入stat+文件名的指令之后 能够输出的三个时间,分别是Access,Modify以及Change三个时间。
Access:文件最近访问时间
Modify:文件的内容最后一次被修改的时间
Change:文件属性最近修改时间
这个modify时间不是说文件内容不变这个时间就不变,只要对文件进行写操作,这个时间就会改变。只要mdify时间变了,change时间也会变了,因为文件属性改变了
这里就是文件内容始终是空的,但是我对其进行了写操作,Modify和Change时间就改变了。
语法:cp [选项] 源文件或目录 目标文件或目录
功能: 复制文件或目录
说明: cp指令用于复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到此目录中。若同时指定多个文件或目录,而最后的目的地并非一个已存在的目录,则会出现错误信息
常用的指令
cp 文件名 目录 (将该文件拷贝到指定目录)
cp -r 目录名1 目录名2 (将目录1拷贝到目录2) 递归拷贝
cp -rf(强制递归拷贝)
开始在dir1目录下创建了一个t1.txt的文本文件 。通过cp指令将t1.txt复制到了dir2目录下。同时通过递归选项将dir1目录复制到了dir2目录下。
mv命令是move的缩写,可以用来移动文件或者将文件改名(move (rename) files),是Linux系统下常用的命令
mv 文件名或目录名 路径 (剪切到文件或者目录到另一个路径(目录)下)
mv 文件名 文件名(newname) 相当于文件重命名
mv 文件名 路径(目录) 新文件名 剪切文件到新路径下并且重命名
通过mv指令将dir1目录下的t2.txt移动到了当前目录下
图中通过mv指令将dir2目录移动到了dir1目录下,同时还移动了dir1目录下的t1.txt并且将其重命名成了t3.txt.*
除了用nano编辑器来对文件进行内容写入外,还可以通过一些指令对文件写入内容,同时也可以通过指令查看文件内容
cat指令:打印文本内容 ,cat 后跟文件名显示文件内容
cat <文件名 输入重定向
cat 默认从键盘读取数据
cat -n 文件名 (显示文件内容时会带上行号)
cat -s文件名(显示文件内容时不显示多行空行)
在Linux下一切皆文件,显示屏和键盘都可以看成文件,输出重定向cat打印文本内容,就是将文件的内容输入到显示屏幕(另一个文件)中。
echo 字符串回车会将字符串显示在屏幕上, echo输出重定向(准备写入之前,会先清空文件内容) echo "字符串" >文件名 将字符串写入文件中,如果文件不存在会自动创建并且写入。
echo "字符串" >>文件名 追加重定向,不断向文件中追加内容.
>文件名 (利用输出重定向清空文件)
从图中可以看出输出重定向的时候,只是简单的对原有内容进行覆盖,要实现不断写入内容可以使用追加重定向
利用输出重定向可以将文件内容快速清空,符号>是输出重出定向,符号<是输入重定向,echo默认从显示屏输出。cat默认从键盘读取数据。
重定向就是改变原有默认输入输出方式,对echo来说将原本输入到显示屏的内容输入到文件中。对cat来说原本从键盘读数据现在从文件中读数据,cat不用输入重定向也显示出文件内容,以上也有验证。
对于一些大文件,Liunx中为了分别查阅搜索提供一些很有用的指令
more指令
语法:more [选项][文件]
功能:more命令,功能类似 cat
q 退出more
less指令
less -文件名 (查阅大本文时,满屏显示,可通过上下键翻动,/加内容 可快速搜索到相应的位置,按q退出)
-i 忽略搜索时的大小写
-N 显示每行的行号
退出按q
wc指令
wc -l 文件名 (显示文件行数)
more指令在查阅文件内容时只能向下翻动,相比之下less指令更好用
这里先简单介绍铺垫一下管道的概念,在日常生活中也能看见一些管道,这些管道主要是用来资源的。在计算机世界中最重要的资源是数据,所以Liunx中的管道是用来传输数据的,这里给出以下的例子
接着介绍两个用来查看指定行数文本内容的指令
head -数字 文件名 (提取显示文件内容前数字行)
tail -数字 文件名(提取显示文件内容后数字行)
刚才这个文件有74行,如果我想查看30行到40行的内容怎么办呢?
我们可以用到刚才提到的管道命令
先通过管道传输前40行然后又通过管道传输前40行中的后10行,这样就查看到30行到40行的内容。
find 指令是搜索查找指令,路径 -name 文件名 (在该路径下搜索出所有指定文件名的文件)
如果find后面只有路径的或者目录名 文件名,find会查找到所有该路径下的文件或者以文件名或者目录为关键字进行搜索。
which 指令 (搜索指令所在的路径)
whereis (搜索文档 相关信息)
alias 别名="指令"(对指令起别名)
通过which指令可以查看指令的一些信息,包括这些指令所在的目录,这些指令本质都是程序也是属于文件。whereis 可以对文档进行搜索查看相关信息,指令也是属于文件,所以对指令和普通文件都可以查找相关属性。alias指令可以对原有指令进行重命名,图中就是将ls重命名成了myls
grep 文本行过滤工具
grep '关键字' 文本名称 (将文本中含有关键字的内容按行过滤出来)
grep -n'关键字' 文本名称(在原有的基础上会显示行号)
grep -v'关键字' 文本名称(会将不含关键字的内容显示出来)
grep -i'关键字' 文本名称(不按大小写过滤)
grep -ivn'关键字' 文本名称(不按大小写反向过滤显示行号)
sort 文件名(根据每行第一个ascll值进行比较,如果第一个相同接着往后比较,升序排列)
sort 文件名 | uniq (对文本内容相邻行进行去重)
sort 文件名 | uniq | wc-l (显示文本中不重复的内容有多少行)
sort按ascll值进行比较排序,排序比较的过程类似C语言中的strcmp函数比较过程。
Linux中常用的两种打包压缩方式为以zip格式压缩和tgz格式压缩
以下便是常用打包压缩文件和解压文件的指令
zip -r file.zip 目录或文件 (将目录或文件打包成压缩包file.zip)
unzip file.zip (对压缩包解压同时生成一个file(文件或者目录))
unzip file.zip -d 路径 (解压到指定路径下)
tar -czf file.tgz 文件名(将文件打包压缩成file.tgz)
tar -xzf file.tgz (解压压缩包)
tar -xzf file.tgz -C 路径(解压压缩包到指定路径下)
tar -ztvf file.tgz (显示压缩文件中含有的文件相关信息)
-c :建立一个压缩文件的参数指令(create 的意思);
-f :使用档名,请留意,在 f 之后要立即接档名喔!不要再加参数!
-z:是否同时具有 gzip 的属性?亦即是否需要用 gzip 压缩?
-x :解开一个压缩文件的参数指令!
-t :查看 tarfile 里面的文件!
-v :压缩的过程中显示文件!这个常用,但不建议用在背景执行过程
zip指令会将指定文件或者目录以zip格式进行打包压缩,并且默认在当前路径下生成一个压缩包文件,用unzip指令解压时如果不加上-d选项会默认解压在当前路径下
使用tar指令解压文件时只需要将打包压缩指令选项中的c换成x即可。解压到指定路径需要加上选项-C,默认解压到当前路径下
通过ztf选项可以查看压缩包中的简单的文件信息,文件名称或者目录名称
在Linux中可以通过一些指令查看时间
date +%Y:%m:%d:%H:%M:%S (显示日期)
date +%s (显示时间戳)
date -d@时间戳 (将时间戳转化为正常时间)中间可加自定义格式显示
cal 显示日历(默认显示当前月份日历)
cal +年份(显示该年的日历)
cal -3 (显示去年 当前年份和明年当前月份的日历)
date指令中的 Y m d H M S 有点类似于C语言中的占位符,分别表示年 月 日 时 分 秒。这些符号之间可以自定义分隔符号,用来显示时间,比如图中我用/和:来分隔,但是不能以空格分隔。
时间戳和当前时间是可以相互转化的,关于时间戳的概念可以自行百度查阅
bc (相当于计算器也可以计算浮点数)
例如echo "1+2+3" |bc 计算1+2+3的和
uname用来获取电脑和操作系统的相关信息。
uname可显示linux主机所用的操作系统的版本、硬件的名称等基本信息 -a或-all 详细输出所有信息,依次为内核名称,主机名,内核版本号,内核版本,硬件名,处理器类型,硬件平台类型,操作系统名称
uname -r (查看Linux机器的主要体系结构)
uname -a
top (相当于windows下的任务管理器)查看cpu占用的命令,按q退出
man 手册查询指令 如果没有man手册安装指令如下:yum install -y man-pages
创建用户 useradd 用户名 (之后创建新用户密码)
创建用户密码指令 passwd 后跟用户名
删除用户 userdel -r 用户名
这个创建和删除用户只有root用户可以操作
可以通过man手册查询指令,也可以man man查询man手册,按q
退出
man手册分为8章
1 是普通的命令
2 是系统调用,如open,write之类的(通过这个,至少可以很方便的查到调用这个函数,需要加什么头文件)
3 是库函数,如printf,fread4是特殊文件,也就是/dev下的各种设备文件
5 是指文件的格式,比如passwd, 就会说明这个文件中各个字段的含义
6 是给游戏留的,由各个游戏自己定义
7 是附件还有一些变量,比如向environ这种全局变量在这里就有说明
8 是系统管理用的命令,这些命令只能由root使用,如ifconfig
在补充两个指令
whoami 查看当前用户
history (显示所有的历史命令)
最后结束一些常用的快捷键
xshell下的复制粘贴
复制: ctrl + insert (有些同学的 insert 需要配合 fn 来按)
粘贴: shift + insert
热键 :Tab (自动补齐)
Ctrl+C(疯狂刷屏,停止刷屏或者强制终止或影响控制台输入中的指令)
Ctrl+d(退出Xshell)或者exit
Ctrl +r(在历史命令中进行搜索)可以按上下键翻出以往的命令
当记不清路径时也可以tap一下
可以通过tap看到当前路径下有哪些目录