这一章我们将讲解在Linux系统下,一些基本指令的用法和功能.
后面有一些重要的指令我们将单独讲解.
目录
ls 指令
pwd 指令
cd 指令
touch 指令
mkdir 指令★
rmdir 指令 && rm指令★
man 指令★
cp 指令 ★
mv 指令★
cat && tac指令
echo 指令
ls 指令
用法:ls [选项] [目录和文件]
功能:对于目录,该命令列出该目录下的所有子目录与文件。对于文件,将列出文件名以及其他信息。
ls常用的选项有以下几种:
-a 列出目录下的所有文件,包括以 . 开头的隐含文件
-l 列出文件的详细信息
ls -a
这就是当前目录下的所有文件,包括隐藏的文件.
ls -l
这个是显示文件的详细信息,但是不显示隐藏文件的信息.
其它选项:
-d 将目录像文件一样显示,而不是显示其下的文件。 如:ls –d 指定目录
-i 输出文件的 i 节点的索引信息。 如 ls –ai 指定文件
-k 以 k 字节的形式表示文件的大小。ls –alk 指定文件。
-n 用数字的 UID,GID 代替名称。 (介绍 UID, GID)
-F 在每个文件名后附上一个字符以说明该文件的类型,“*”表示可执行的普通文件;“/”表示目录;“@”表示符号链接;“|”表示FIFOs;“=”表示套接字(sockets)。(目录类型识别)
-r 对目录反向排序。
-t 以时间排序。
-s 在l文件名后输出该文件的大小。(大小排序,如何找到目录下最大的文件)
-R 列出所有子目录下的文件。(递归)
-1 一行只输出一个文件。
值得注意的是:
1.选项可以随意搭配使用,并不是只可以指定一个选项,而是可以多个一起使用.
2.可以不写选项和文件名,默认为显示当前目录下的文件夹.
3.前两个文件:. 代表当前目录;.. 代表上一级目录.
pwd 指令
用法:pwd(后面不加任何东西)
功能:显示用户当前所在目录.
说明我当前所在的路径在/home/liqi
cd 指令
用法:cd 目录名
功能: 改变工作目录,将当前目录改变到指定目录下.
用法举例:
cd .. :返回上级目录(上面说过,..代表上级目录,所以进入上级目录就是cd ..)
cd /home/liqi : 绝对路径
cd ../liqi/ : 相对路径
cd ~ :进入用户家目录
cd - :访问最近一次访问的目录
.代表是当前路径,所以cd .就是进入当前路径,所以并没有什么效果.
解释一下相对路径:不是以根目录开始,而是以当前路径为参考点,这样定位文件的方式,叫做相对路径.
touch 指令
语法:touch [选项] [文件]
功能:touch命令参数可更改文档或目录的日期时间,包括存取时间和更改时间,或者 新建一个不存在的文件(核心作用).
有以下选项,但不常用,touch主要被用来创建文件.
-a 或--time=atime或--time=access或--time=use只更改存取时间。
-c 或--no-create 不建立任何文档。
-d 使用指定的日期时间,而非现在的时间。
-f 此参数将忽略不予处理,仅负责解决BSD版本touch指令的兼容性问题。
-m 或--time=mtime或--time=modify 只更改变动时间。
-r 把指定文档或目录的日期时间,统统设成和参考文档或目录的日期时间相同。
-t 使用指定的日期时间,而非现在的时间.
用touch创建普通文件:
touch 文件名
可以看到,我先显示一下当前文件,然后再创建一个liqi文件,这个时候我们再显示,发现liqi这个文件已经被创建好了.
这里先说一个命令:ll 等价于ls -l
touch还有一个作用:就是更新文件的时间.
看liqi这个文件,我一开始创建的时间是12:27,过了一会,我再touch一下,再次显示,发现最近新的时间更新为了当前的时间12:31.
mkdir 指令★
用法:mkdir [选项] dirname....
功能:在当前目录下创建一个名为dirname的目录
这里只有一个常用的选项 -p
-p, --parents 可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不存在的目录,即一次可以建立多个目录;
先来看普通mkdir的使用.
可以看到一开始这个文件里什么都没有,然后我mkdir既创建了一个名字为liqi的目录.然后再显示,发现成功了.
但是如果我想创建的时候在liqi的目录里再添加一个hmy的目录呢?
我们先按普通的试一下:
可以看到无法创建.
所以此时要想同时创建多个目录,必须加-p
可以发现此时liqi和hmy同时被创建完成了.
这里大家可以安装一个tree的结构,可以树状结构显示目录.
指令为yum install -y tree(注意必须是root用户)
安装完成后,就可以使用了,tree 目录名即可把当前目录下的所有文件树状显示.
这样再看目录时就一目了然了.
rmdir 指令 && rm指令★
rmdir是一个与mkdir相对应的命令。mkdir是建立目录,而rmdir是删除目录.
用法:rmdir [-p] [dirname]
适用对象:具有当前目录操作权限的所有使用者
功能:删除空目录
记住,只能删除空目录,不是空目录不能被删除.
当然上面这个是次要的,最重要的是下面这个指令.
rm指令
rm [选项] [dirname/dir]
适用对象:所有使用者
功能:删除文件或目录
常用选项:
-f 即使文件属性为只读(即写保护),也直接删除
-i 删除前逐一询问确认
-r 删除目录及其下所有文件
看一下大致用法
rm不加选项默认删除文件,不能删除目录.
加上-r才可以删除目录!
还有下面几种小用法,可以自己下去具体了解一下
rm -rf 文件/目录 //删除文件或目录
rm -rf *.c //*是一种通配结构,既*是什么都可以,只要最后带有.c的文件会全被删除.相当于是xxx.c的文件都会被移除.
rm -rf * //*后面什么都没加,说明这是删除所有文件(-r递归(删目录),-f强制)
rm -rf / //直接将根目录下的所有文件全部删除,也就是我们口中所说的删库.大家不要轻易尝试哦~
man 指令★
Linux的命令有很多参数,我们不可能全记住,我们可以通过查看联机手册获取帮助。访问Linux手册页的命令是
man 语法: man [选项] 命令功能:查看相关指令的用法
选项:
1. -k 根据关键字搜索联机帮助
2. num 只在第num章节找
3. -a 将所有章节的都显示出来,比如 man printf 它缺省从第一章开始搜索,知道就停止,用a选项,当按下q退出,他会继续往后面搜索,直到所有章节都搜索完毕。
针对于第二个num,这里详细解释一下,面手册分为8章
1 是普通的命令
2 是系统调用,如open,write之类的(通过这个,至少可以很方便的查到调用这个函数,需要加什么头文件)[也是常用的].
3 是库函数,如printf,fread4是特殊文件,也就是/dev下的各种设备文件
5 是指文件的格式,比如passwd, 就会说明这个文件中各个字段的含义
6 是给游戏留的,由各个游戏自己定义
7 是附件还有一些变量,比如向environ这种全局变量在这里就有说明
8 是系统管理用的命令,这些命令只能由root使用,如ifconfig
举个例子:
我们想查ls的用法.
这个时候我们可以用man 1 ls (ls属于普通的命令,所以选项是1,不加选项也可以)
然后看结果:
看NAME下面那一行,解释了功能:是列出所有的目录.
然后下面那一行也介绍了相应的用法.
再下面也分别介绍了各个选项的作用.非常方便.
cp 指令 ★
语法:cp [选项] 源文件或目录 目标文件或目录
功能:复制文件或目录
说明: cp指令用于复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到此目录中。若同时指定多个文件或目录,而最后的目的地并非一个已存在的目录,则会出现错误信息
常用选项:
-f 或 --force :强行复制文件或目录, 不论目的文件或目录是否已经存在
-i 或 --interactive :覆盖文件之前先询问用户
-r :递归处理,将指定目录下的文件与子目录一并处理。若源文件或目录的形态,不属于目录或符号链接,则一律视为普通文件处理
-R 或 --recursive :递归处理,将指定目录下的文件及子目录一并处理
先来一个文件的cp
这里就成功的将test1和test2拷贝到了tmp文件,而且自身也没有变化.
再来看目录的cp
首先可以看到普通的不加选项的cp指令不可以拷贝目录.
拷贝目录必须添加选项-r.
mv 指令★
mv命令是move的缩写,可以用来移动文件或者将文件改名,是Linux系统下常用的命令,经常用来备份文件或者目录。
用法:mv [选项] 源文件或目录 目标文件或目录
功能:
视mv命令中第二个参数类型的不同(是目标文件还是目标目录),mv命令将文件重命名或将其移至一个新的目录中。(若目标是个文件,则将其(源文件名字)重命名为目标文件名字,若目标是个目录,则会移动到这个目录中)
1.当第二个参数类型是文件时,mv命令完成文件重命名,此时,源文件只能有一个(也可以是源目录名),它将所给的源文件或目录重命名为给定的目标文件名。
2. 当第二个参数是已存在的目录名称时,源文件或目录参数可以有多个,mv命令将各参数指定的源文件均移至目标目录中。
常用选项:
-f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖
-i :若目标文件 (destination) 已经存在时,就会询问是否覆盖!
看第一种情况:当目标参数类型是文件时
可以看到test1里是123456,test2里是789
然后将test1 mv到 test2 中
由于test2是文件,所以将test1重命名为test2,里面的内容也变成了test1里的内容
相当于是test1覆盖了test2,并且将test1重命名为test2
再来看第二种情况:当目标参数类型是目录时
可以看到这会将文件移动到目标目录下.
这就是mv的两种基本用法.
cat && tac指令
语法:cat [选项] [文件]
功能: 查看目标文件的内容
常用选项:
-b 对非空输出行编号(不包括空行)
-n 对输出的所有行编号(包括空行)
-s 不输出多行空行(不输出每一行的的空行,相当于是不输出每一行的空格)
我们具体来看一下效果,然后很快就能明白区别.
tac指令
cat是把文件内容正向输出出来.
而tac指令是把文件内容反向输出出来.
我们看下面:
echo 指令
用法:echo [选项] [输出内容(string类型)]
功能:显示文字
选项
- -n 不要输出新行
- -e 启用反斜线转义解释
- -E 禁用反斜线转义解释(默认)
第二第三个选项的意思是对后面的string字符串,是否启用转义字符,-e启用,-E禁用.
若是用-e选项,则可用如下转义序列:
- \ 反斜线
- \a 警告(BEL)
- \b 反斜线
- \c 不产生进一步输出
- \e 转义
- \f 换页
- \n 新行
- \r 换行字符
- \t 水平制表
- \v 垂直制表
- \0NNN 八进制值表示的字节NNN(1到3个数字)
- \xHH 十六进制值表示的字节NNN(1到2个数字)
看这三选项的区别.
可以看到带-e选项的字符串中的\n被转移成了换行,而-E没有.
还有一种用法,就是可以直接输出到指定文件,用法如下:
echo "string" > 文件名
可以看到原本的文件里的内容是hello world
把hello linux输出到文件里面时候,会先清除文件里所有内容,然后再进入写入.
所以此时文件里只有hello linux.
这是Linux的一些基本的指令,但这只是一小部分,还有一部分等待我们后面继续讲解.