本文将给大家详细介绍Linux常用的指令、演示以及一些基础知识的讲解
目录
-
ls指令 -
file指令 -
pwd命令 -
whoami指令 -
cd指令 -
相对路径和绝对路径 -
which指令 -
touch指令 -
mkdir指令 -
添加用户信任关系 -
rmdir指令 -
rm指令 -
man指令 -
cp指令 -
mv指令 -
编辑 -
cat指令 -
echo指令 -
重定向 -
more指令 -
less指令 -
head 指令 -
tail指令 -
管道操作 -
date指令 -
cal指令 -
find指令 -
grep指令 -
zip指令/unzip指令 -
tar指令 -
bc指令 -
uname 指令 -
shutdown指令 -
stat指令 -
Linux下的三个时间 -
touch指令补充 -
Linux中的热键- -
指令一览
ls指令
语法:ls [选项] [目录]
功能:ls有多个选项,对于目录,该命令列出该目录下的所有子目录与文件。对于文件,将列出文件名以及其他信息
ls不带选项默认显示当前目录下的文件
选项:
-l
:以列表的形式列出文件详细信息
在Linux系统中,不以文件后缀区分文件类型,而是以第一个字符标识文件类型,不管是文件后缀是.c
还是.txt
或是其他后缀,只有是以-开头的就是普通文件
-
d:目录文件,简单来说就是文件夹,我们可以在该目录文件下新建文件 -
-:普通文件,分为文本文件、动静态库、可执行程序等 -
l:软链接(类似Windows的快捷方式) -
b:块设备文件(例如硬盘、光驱等) -
p:管道文件 -
c:字符设备文件(例如屏幕等串口设备)- -
s:套接口文件
我们今天重点在前面的两类文件
单普通文件就可以分很多种,为了兼容windows同时便于我们大多数linux的用户区分文件的不同,我们还是习惯通过后缀来表示不同文件的类型。但有的文件必须加后缀,例如用c语言写的
.c
文件,需要特殊处理,以后缀区分类型
-
-a:显示目录下的所有文件包括隐藏文件,以点开头的表示隐藏文件,其中一个点表示当前路径,两个点表示上一级路径,我们将在下面的cd指令中讲解和..
-
-d :将目录像文件一样显示,而不显示目录下的文件,这里的点,就表示当前路径
-
-R:列出所有子目录下的文件(以递归的方式) ,目录下的所有文件都会列出来
-
-n :用数字的 UID,GID 代替名称
还有一些其他的选项就不演示了,大家下去可以尝试一下
-
-1 一行只输出一个文件 -
-r 对目录反向排序 -
-k 以 k 字节的形式表示文件的大小。ls –alk 指定文件 -
-i 输出文件的 i 节点的索引信息。如 ls –ai 指定文件- -
-t 以时间排序
file指令
功能:文件类型
语法:file [文件]
[kingVM-12-11-centos ~]$ file cat.txt
cat.txt: UTF-8 Unicode text #类型是文本文件
[kingVM-12-11-centos ~]$ file ret #类型是目录文件
ret: directory
pwd命令
语法:pwd
功能:显示当前路径
whoami指令
功能:显示当前用户
两种写法
cd指令
功能:切换路径
用法:cd [想要切换的路径]
Linux是以多叉树的结构管理文件的,磁盘上的文件和目录被组成一棵目录树,每个节点都是目录或文件。根目录:/
相对路径和绝对路径
当我们需要找一个文件时,就必须知道文件所在路径和文件名,例如寻找text.c
文件,因为每一个节点只有一个父亲节点,从根目录出发到text.c
文件的路径是唯一的。完整的描述文件位置的路径就是绝对路径,绝对路径能唯一标识一个文件,上面的pwd指令显示的就是绝对路径
而相对路径是:自己相对于目标位置而言的路径,不具有唯一性,我们可以从不同的位置找到文件
-
绝对路径:从跟目录出发到到指定文件的路径,能唯一标识一个文件
-
相对路径:从某个文件出发到指定文件的路径,不能唯一标识一个文件
cd命令就可以通过相对路径和绝对路径的方式进行路径切换
可以通过绝对路径切换到指定目录
也可以通过相对路径切换,点点表示上一级路径,cd ..
切换到上一级目录,cd ../../
切换到上上级路径
[kingVM-12-11-centos Linuxclass]$ pwd
/home/king/Linuxclass
[kingVM-12-11-centos Linuxclass]$ cd classcode
[kingVM-12-11-centos classcode]$ ls
a.out ret.txt test test.c
[kingVM-12-11-centos classcode]$ cd test
[kingVM-12-11-centos test]$ cd ../../p1 #切换到上上级目录的p1路径下
[kingVM-12-11-centos p1]$ pwd
/home/king/Linuxclass/p1
有的小伙伴可能就有疑问了,cd ..
可以切换到上一级路径,那么cd .
有什么用呢?我们本来就在当前目录下,不需要切换啊。
这里我们用vim编写一个
hello Linux
的代码,通过gcc编译,生成a.out的可执行程序,而我们要运行可执行程序就需要路径和文件名,用点就可以表示它的路径了,相比于下面用绝对路径方便很多
cd还有两个选项
[kingVM-12-11-centos Linuxclass]$ pwd
/home/king/Linuxclass
[kingVM-12-11-centos Linuxclass]$ cd ~ #cd ~进入工作目录,就是用户的路径下
[kingVM-12-11-centos ~]$ pwd
/home/king
[kingVM-12-11-centos ~]$ cd - #cd -返回最近一次访问的路径
/home/king/Linuxclass
which指令
语法:which [指令]
功能:指令的系统路径和相关信息
[kingVM-12-11-centos Linuxclass]$ which ls
alias ls=\'ls --color=auto\' #alias:给指令取别名
/usr/bin/ls #我们的指令都是系统简化过的
[kingVM-12-11-centos Linuxclass]$ which ll
alias ll=\'ls -l --color=auto\' #ll可以代替ls -l
/usr/bin/ls
[kingVM-12-11-centos Linuxclass]$ which cd #同时我们发现指令都是在bin目录下的
/usr/bin/cd
指令本质上就是程序,Linux中,指令、命令、工具都是可执行程序 ,都存放在普通文件中,linux下一切皆文件,我们的指令都在bin目录下
touch指令
功能:新建文件,更改文档或目录的日期,包括存取时间和更改时间,我们先了解新建文件,关于更改目录日期我们在文章的最后介绍
需要注意的是touch创建的是普通文件,不是目录文件,所以不能cd进入
[kingVM-12-11-centos test]$ touch file1 file2 file3 #touch可以连续创建多个文件
[kingVM-12-11-centos test]$ touch file4 #创建单个文件
[kingVM-12-11-centos test]$ ls
file1 file2 file3 file4
mkdir指令
功能:新建目录文件
mkdir也可以同时创建多个目录文件,cd可以进入,但是不能在一个目录文件下再创建多个子目录,这里就显示无法创建
选项-p:递归建立多个子目录
添加用户信任关系
这里的tree指令是以树状显示文件,需要用yum
yum intsall -y tree
如果我们是普通用户,需要在前面加sudo, sudo可以短暂提升权限,以root的身份执行相应指令
单独su表示切换为root用户,需要输入root用户的密码
[retVM-12-11-centos ~]$ su
Password: #输入root用户密码
[rootVM-12-11-centos ret]# whoami #切换为root用户
root
[rootVM-12-11-centos ret]# su ret #root用户可以直接切换成指定用户,不需要输入用户密码
[retVM-12-11-centos ~]$ whoami #现在我们就切换到用户ret了
ret
如果我们sudo yum install -y tree
显示类似如下的指令,表示当前用户没有添加信任关系
需要以root的身份帮用户添加信任关系,我们将身份切换为root用户,执行如下指令即可添加信任关系,之后我们就可以sudo 了
echo \'xxx ALL=(ALL) ALL\' >> /etc/sudoers (其中xxx代表用户名)
rmdir指令
功能:删除空目录 ,也就是不存放其他文件的目录
这里p1不为空,所以无法删除,如要借助rm指令
rm指令
我们删除文件一般都用rm指令,rmdir有点鸡肋
功能:删除目录或文件
选项:
-
-f:强制删除 -
-r:删除目录及目录下的所有文件,以递归的方式。
删除目录要带r选项,此时我们的p1/p2/p3就删除了
如果我们想删除目录中的所以文件而不想删除目录,直接加通配符*
切记别把根目录给删除
rm -rf / #切记不要使用,递归强制删除根目录,可能会把系统干崩
man指令
linux中有很多的指令,如果我们不记得某个指令的使用,可以man一下,问问那个男人
选项:
1 是普通的命令
2 是系统调用,如open,write之类的(通过这个,至少可以很方便的查到调用这个函数,需要加什么头文 件)
3 是库函数,如printf,fread4是特殊文件,也就是/dev下的各种设备文件
5 是指文件的格式,比如passwd, 就会说明这个文件中各个字段的含义
6 是给游戏留的,由各个游戏自己定义
7 是附件还有一些变量,比如向environ这种全局变量在这里就有说明
8 是系统管理用的命令,这些命令只能由root使用,如ifconfig
9 内核例程
我们目前先了解 1 和 3
同样man需要我们 ,普通用户加sudo
yum install -y man-pages
man不加选项,默认解释指令
[kingVM-12-11-centos file11]$ man ls
q退出当前界面
$ man 3 printf #我们可以printf库函数
cp指令
语法:cp [选项] [源文件] [目标文件] [指定目录]
功能:复制文件或目录
常用选项:
-
-f 强行复制文件或目录, 不论目的文件或目录是否已经存在
-
-r 递归处理,将指定目录下的文件与子目录一并处理。
我们复制文件file11,同时命名为file
默认复制到当前目录下,也可以最后指定目录
mv指令
功能:移动文件或重命名文件
用法:mv [选项] [源文件] [目标文件]
选项:
-
-f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖
-
-i :若目标文件 (destination) 已经存在时,就会询问是否覆盖!
这里我们将文件file11移动到file目录下
如果mv后面跟的不是文件,而是文件名,就会将文件重命名
例如将文件file11重命名为change
cat指令
功能:文件内容
语法:cat [选项] [文件]
选项:
-
-b :对非空输出行编号
-
-n :对输出的所有行编号
-
-s :不输出多行空行
echo指令
功能:将字符串显示到标准输出,也就是屏幕上,echo默认换行
重定向
那我们可以将字符串写入文件中吗?
答案是可以的,通过重定向,字符串后面加 > 符号和文件名,就可以将本该显示到标准输出的字符串,写入文件中,如果文件不存在,就会自动创建文件,这就是输出重定向
将本该显示到屏幕上的字符串写入目标文件中,同时输出重定向会清空文件原始内容再重新写入
在此写入时,之前的hello Linux已近被清空了
想要保留之前的内容并写入就需要追加重定向 > 符号变成 >> 符号
cat指令后面不加文件,默认从键盘中读取内容并回显到显示器上,也就是屏幕上
之前cat显示文件内容就是通过输入重定向显示的
[kingVM-12-11-centos ~]$ cat < file #这个 < 符号可以省略
AAAAAAA
BBBBBBB
CCCCCCC
more指令
功能:和cat类似,一般用于日志,内容比较长的文件
选项:
-
-n :对行编号
-
q :退出more
比如这里我写一个内容从0-1000行的文件
count=0; while [ $count -le 1000 ]; do echo \"hello ${count}\"; let count++; done > cat.txt
1more会先显示一部分内容,按回车就可以继续读取内容,按q退出,但more有一个弊端,只能往下翻,不能往上翻,所以我们一般不用more指令
less指令
功能:文件内容,less用法比more更具有弹性,可以使用 [pageup][pagedown]
(前后按键)等按键的功能来往前往后翻看文件,而且less在之前不会加载整个文件。
选项:
-
-i :忽略大小写
-
-N :显示行号
-
/字符串:向上搜索字符串的内容
-
?字符串:向下搜索字符串的内容
-
n :重复前一个搜索(与/ 或?有关)
-
N:返向重复前一个搜索(与/ 或?有关)
-
q:退出less
[kingVM-12-11-centos ~]$ less cat.txt
我们输入 /3向上搜索字符3,less就会帮我们标记字符3的内容
还有其它选项大家可以直接尝试,这里就不在演示了,我们q退出less界面
head 指令
功能:显示文件内容的开头到标准输出,也就是屏幕上,head不加参数默认显示前10行
选项:
-n<行数>
[kingVM-12-11-centos ~]$ head cat.txt #默认输出前10行
hello 0
hello 1
hello 2
hello 3
hello 4
hello 5
hello 6
hello 7
hello 8
hello 9
[kingVM-12-11-centos ~]$ head -n5 cat.txt #指定输出前5行
hello 0
hello 1
hello 2
hello 3
hello 4
[kingVM-12-11-centos ~]$ head -5 cat.txt # n可以省略
hello 0
hello 1
hello 2
hello 3
hello 4
tail指令
功能:用于显示指定文件末尾内容,我们一般日志时肯定是最新的内容,也就是从尾部开始,tail就能很好的帮助我们最近的内容
选项:
-
-f :循环读取
-
-n<行号>
:显示行数
tail - f filename
会把filename里最尾部的内容显示在屏幕上,并且不但刷新,使你看到最新的文件内容,非常适合日志
[kingVM-12-11-centos ~]$ tail cat.txt #tail不加行号默认显示尾10行
hello 991
hello 992
hello 993
hello 994
hello 995
hello 996
hello 997
hello 998
hello 999
hello 1000
[kingVM-12-11-centos ~]$ tail -n5 cat.txt #指定显示尾5行
hello 996
hello 997
hello 998
hello 999
hello 1000
[kingVM-12-11-centos ~]$ tail -5 cat.txt #n可以省略
hello 996
hello 997
hello 998
hello 999
hello 1000
那我们可以显示文件的头和尾,如果要显示文件中间的内容怎么办呢?
比如我们要显示第100行到110行,有两种方法:
通过重定向将前110行写入一个tmp临时文件,然后在读取尾10行,不过这种方法需要重新创建文件,不进浪费空间效率也低
答案是有的,第二种方法借助管道操作
管道操作
使用管道时,默认隐式发生了重定向
# 符号 | 表示管道,通过管道将执行的结果传给下一条指令
[kingVM-12-11-centos ~]$ head -110 cat.txt | tail -10
hello 100
hello 101
hello 102
hello 103
hello 104
hello 105
hello 106
hello 107
hello 108
hello 109
date指令
格式
-
%H : 小时(00..23) -
%M : 分钟(00..59) -
%S : 秒(00..61) -
%X : 相当于 %H:%M:%S -
%d : 日 (01..31) -
%m : 月份 (01..12) -
%Y : 完整年份 (0000..9999) -
%F : 相当于 %Y-%m-%d
[kingVM-12-11-centos ~]$ date #date默认显示
Fri Jan 28 16:55:54 CST 2022
[kingVM-12-11-centos ~]$ date +%s #date +%s显示时间戳
1643360162
[kingVM-12-11-centos ~]$ date +%F%X #按年月日 时分秒的格式显示当前时间
2022-01-2804:56:08 PM
[kingVM-12-11-centos ~]$ date +%F%X1643360162 # 时间戳,将时间戳转换成标准时间
2022-01-2804:56:27 PM1643360162
我们可以加_以示区分,但不能是空格,这种写法是错误的
cal指令
功能:日历
选项:
-
-3 显示系统前一个月,当前月,下一个月的月历
-
-y 显示当前年份的年历
-
cal默认显示当前月的月历
[kingVM-12-11-centos ~]$ cal -y 2021 #也可以指定年份显示2021的年历
本文内容由互联网用户自发贡献,该文观点仅代表作者本人。如发现本站有涉嫌抄袭侵权/违法违规的内容,请发送邮件至 449@qq.com 举报,一经查实,本站将立刻删除。本文链接:https://www.hnhgjc.com/n/76141.html