从今天开始我会持续更新我学习Linux的学习笔记。今天主要学习Linux下基本指令。
目录
1.Linux下基本指令
01.ls 指令
02.pwd命令
03.cd指令
04.touch命令
05.mkdir命令
06.rmdir指令&&rm指令
07.man指令
08.cp指令
09.mv指令
10. cat指令
11.more指令
12.less指令
1.Linux下基本指令
1.为什么要进行指令操作?
因为指令距离OS更近,便于我们更好的掌握OS。
指令操作对于非专业人员来说没有必要学习,对于专业人员可以必要也可以不必要。但是对于我们学习OS原理,编程,指令操作必须需要掌握。
2.图像化界面不香吗?那是先有指令还是现有图形化界面呢?
答案是:先有指令。
我们要进行指令输入需要键盘,进行图形化界面需要鼠标。所有的操作系统,刚开始的时候全部都是支持指令操作的。但是由于指令操作的操作成本高因此在后期慢慢就出现了图形化界面。
01.ls 指令
语法
:
ls [
选项
][
目录或文件
]
功能
:对于目录,该命令列出该目录下的所有子目录与文件。对于文件,将列出文件名以及其他信息。
常用选项:
1:?-a
列出目录下的所有文件,包括以
.
开头的隐含文件。
2:-d
将目录象文件一样显示,而不是显示其下的文件。 如:
ls –d
指定目录
3:-i
输出文件的
i
节点的索引信息。 如
ls –ai
指定文件
4:-k
以
k
字节的形式表示文件的大小。
ls –alk
指定文件
5:-l
列出文件的详细信息。
6:-n
用数字的
UID,GID
代替名称。 (介绍
UID
,
GID
)
7:-F
在每个文件名后附上一个字符以说明该文件的类型,
“*”
表示可执行的普通文件;
“/”
表示目录;
“@”
表示符号链接;“|”
表示
FIFOs
;
“=”
表示套接字
(sockets)
。(目录类型识别)
8:-r
对目录反向排序。
9:-t
以时间排序。
10:-s
在
l
文件名后输出该文件的大小。(大小排序,如何找到目录下最大的文件)
11:-R
列出所有子目录下的文件。
(
递归
)
12:-1
一行只输出一个文件。
ls? #只显示文件名
[root@VM-20-12-centos 22_06_02_lesson4]# ls
tar_package
[root@VM-20-12-centos 22_06_02_lesson4]# mkdir code
[root@VM-20-12-centos 22_06_02_lesson4]# ls
code tar_package
[root@VM-20-12-centos 22_06_02_lesson4]# touch mytest.c
[root@VM-20-12-centos 22_06_02_lesson4]# ls
code mytest.c tar_package
ls -l? #显示文件的更多属性
[root@VM-20-12-centos 22_06_02_lesson4]# ls -l
total 8
drwxr-xr-x 2 root root 4096 Jun 15 12:54 code
-rw-r--r-- 1 root root 0 Jun 15 12:54 mytest.c
drwxr-xr-x 3 root root 4096 Jun 2 19:59 tar_package
[root@VM-20-12-centos 22_06_02_lesson4]#
ls -a #显示更多的隐藏文件
Linux中以 . 开头的是隐藏文件
[root@VM-20-12-centos 22_06_02_lesson4]# ls -a
. .. code mytest.c tar_package
[root@VM-20-12-centos 22_06_02_lesson4]# ls -a -l
total 16
drwxr-xr-x 4 root root 4096 Jun 15 12:54 .
dr-xr-x---. 10 root root 4096 Jun 2 18:37 ..
drwxr-xr-x 2 root root 4096 Jun 15 12:54 code
-rw-r--r-- 1 root root 0 Jun 15 12:54 mytest.c
drwxr-xr-x 3 root root 4096 Jun 2 19:59 tar_package
[root@VM-20-12-centos 22_06_02_lesson4]#
在任意目录下,都会存在两个隐藏文件 其中 一个. (当前路径)? ..(上级路径)
我们在当前路径下怎么返回上级路径呢?我们就可以使用cd ..
[root@VM-20-12-centos 22_06_02_lesson4]# pwd
/root/22_06_02_lesson4
[root@VM-20-12-centos 22_06_02_lesson4]# cd ..
[root@VM-20-12-centos ~]# pwd
/root
.(当前路径)有什么用?
作为一个限定,表示我要执行当前路径下的程序。比如我们写一段C语言程序,要这行这个结果,我们要使用./a.out
[root@VM-20-12-centos 22_06_02_lesson4]# vim mytest.c
[root@VM-20-12-centos 22_06_02_lesson4]# gcc mytest.c
[root@VM-20-12-centos 22_06_02_lesson4]# ls
a.out code mytest.c tar_package
[root@VM-20-12-centos 22_06_02_lesson4]# cat mytest.c
#include <stdio.h>
int main()
{
printf("Hello Linux\n");
return 0;
}
[root@VM-20-12-centos 22_06_02_lesson4]# ./a.out
Hello Linux
[root@VM-20-12-centos 22_06_02_lesson4]#
总结:ls核心命令就是ls -a和 ls -l 指令
02.pwd命令
语法
: pwd
功能
:显示用户当前所在的目录? 查看当前所处的路径
[root@VM-20-12-centos 22_06_02_lesson4]# pwd
/root/22_06_02_lesson4
[root@VM-20-12-centos 22_06_02_lesson4]#
03.cd指令
Linux的目录结构本质是一颗多叉树。
1.每一个子节点,既可以是一个目录(再放目录或者普通作业,递归式的定义),也可以是一个普通文件。
2.这课多叉树的叶子结点,一定是一个普通文件或者空目录。
语法
:cd
目录名
功能
:改变工作目录。将当前工作目录改变到指定的目录下。
cd .. : 返回上级目录
cd /home/litao/linux/ : 绝对路径
cd ../day02/ : 相对路径
cd ~:进入用户家目
cd -:返回最近访问目录
?我们一般通过“定位”,通过路径定位的方式找到文件的!那为什么我们都是通过路径方式定位文件的呢?
这是因为任何一个节点可以有很多子节点,但是只能有一个父节点。因此常规的路径定位是具有唯一性的!
绝对路径:常规路径,从跟目录开始直到目的节点的这条路径。
相对路径:相对于我当前所处的路径。
结论:如果是日常使用,我们推荐相对路径(简单);如果是进行添加配置文件之类,推荐绝对路径(不会出错)
[root@VM-20-12-centos 22_06_02_lesson4]# pwd
/root/22_06_02_lesson4
[root@VM-20-12-centos 22_06_02_lesson4]# cd ../
[root@VM-20-12-centos ~]# pwd
/root
[root@VM-20-12-centos ~]# cd ../
[root@VM-20-12-centos /]# pwd
/
cd ~ :进入用户家目
[root@VM-20-12-centos 22_06_02_lesson4]# cd ~
[root@VM-20-12-centos ~]# pwd
/root
?cd -:跳转至我上一次所处的路径
[root@VM-20-12-centos 22_06_02_lesson4]# cd ~
[root@VM-20-12-centos ~]# pwd
/root
[root@VM-20-12-centos ~]# cd -
/root/22_06_02_lesson4
[root@VM-20-12-centos 22_06_02_lesson4]# pwd
/root/22_06_02_lesson4
[root@VM-20-12-centos 22_06_02_lesson4]#
04.touch命令
语法
:touch?[
选项
]...?
文件
...
功能
:
touch
命令参数可更改文档或目录的日期时间,包括存取时间和更改时间,或者新建一个不存在的文件。
常用选项
:
-a???
或
--time=atime
或
--time=access
或
--time=use
只更改存取时间。
-c???
或
--no-create?
不建立任何文档。
-d?
使用指定的日期时间,而非现在的时间。
-f? ??
此参数将忽略不予处理,仅负责解决
BSD
版本
touch
指令的兼容性问题。
-m???
或
--time=mtime
或
--time=modify?
只更改变动时间。
-r? ?
把指定文档或目录的日期时间,统统设成和参考文档或目录的日期时间相同。
-t? ?
使用指定的日期时间,而非现在的时间
[root@VM-20-12-centos 22_06_02_lesson4]# ls
a.out code mytest.c tar_package
[root@VM-20-12-centos 22_06_02_lesson4]# touch test.c
[root@VM-20-12-centos 22_06_02_lesson4]# ls
a.out code mytest.c tar_package test.c
[root@VM-20-12-centos 22_06_02_lesson4]# nano test.c
[root@VM-20-12-centos 22_06_02_lesson4]# gcc test.c
[root@VM-20-12-centos 22_06_02_lesson4]# ls
a.out code mytest.c tar_package test.c
[root@VM-20-12-centos 22_06_02_lesson4]# ./a.out
Hello World
[root@VM-20-12-centos 22_06_02_lesson4]#
05.mkdir命令
语法
:
mkdir?[
选项
]?dirname...
功能
:在当前目录下创建一个名为
“dirname”
的目录
我们想创建一长串目录,我们可以使用,mkdir -p
-p,?--parents??
可以是一个路径名称。此时若路径中的某些目录尚不存在
,
加上此选项后
,
系统将自动建立好那些尚不存在的目录,
即一次可以建立多个目录
;
[root@VM-20-12-centos 22_06_15]# mkdir -p dir1/dir2/dir3/dir4
[root@VM-20-12-centos 22_06_15]# ls
dir1
[root@VM-20-12-centos 22_06_15]# cd dir1
[root@VM-20-12-centos dir1]# ls
dir2
[root@VM-20-12-centos dir1]# cd dir2
[root@VM-20-12-centos dir2]# ls
dir3
[root@VM-20-12-centos dir2]# cd dir3
[root@VM-20-12-centos dir3]# ls
dir4
[root@VM-20-12-centos dir3]# cd dir4
[root@VM-20-12-centos dir4]# ls
[root@VM-20-12-centos dir4]# pwd
/root/code/22_06_15/dir1/dir2/dir3/dir4
06.rmdir指令&&rm指令
rmdir
是一个与
mkdir
相对应的命令。
mkdir
是建立目录,而
rmdir
是删除命令。
语法
:
rmdir [-p][dirName]
适用对象
:具有当前目录操作权限的所有使用者
功能
:删除空目录
如果我们想删掉空目录可以是用rmdir指令
删除空目录(不常用)
[root@VM-20-12-centos 22_06_15]# rmdir dir1
rmdir: failed to remove ‘dir1’: Directory not empty
[root@VM-20-12-centos 22_06_15]# ls
dir1
-p 当子目录被删除后如果父目录也变成空目录的话,就连带父目录一起删除?
删除普通文件(常用)
rm
命令可以同时删除文件或目录
语法
:
rm [-f-i-r-v][dirName/dir]
适用对象
:所有使用者
功能
:删除文件或目录
常用选项
:
-f
即使文件属性为只读
(
即写保护
)
,亦直接删除
-i
删除前逐一询问确认
-r
删除目录及其下所有文件
[root@VM-20-12-centos 22_06_15]# touch test.txt
[root@VM-20-12-centos 22_06_15]# ls
dir1 test.txt
[root@VM-20-12-centos 22_06_15]# rm test.txt
rm: remove regular empty file ‘test.txt’? y
[root@VM-20-12-centos 22_06_15]# ls
dir1
如果要删除目录,使用rm-r
[root@VM-20-12-centos 22_06_15]# rm -r dir1
rm: descend into directory ‘dir1’? y
rm: descend into directory ‘dir1/dir2’? y
rm: descend into directory ‘dir1/dir2/dir3’? y
rm: remove directory ‘dir1/dir2/dir3/dir4’? y
rm: remove directory ‘dir1/dir2/dir3’? y
rm: remove directory ‘dir1/dir2’? y
rm: remove directory ‘dir1’? y
[root@VM-20-12-centos 22_06_15]# ls
此时我们发现dir1下的文件被全部删掉,我们在删除的过程中发现系统会询问你确定要删除?如果我们不想这个提示弹出的话,我们可以使用rm -f ,此命令表示强制删除。
[root@VM-20-12-centos 22_06_15]# touch test.txt
[root@VM-20-12-centos 22_06_15]# mkdir -p dir1/dir2/dir3/dir4
[root@VM-20-12-centos 22_06_15]# ls
dir1 test.txt
[root@VM-20-12-centos 22_06_15]# rm -f test.txt
[root@VM-20-12-centos 22_06_15]# ls
dir1
[root@VM-20-12-centos 22_06_15]# rm -r -f dir1
[root@VM-20-12-centos 22_06_15]# ls
[root@VM-20-12-centos 22_06_15]#
07.man指令
Linux
的命令有很多参数,我们不可能全记住,我们可以通过查看联机手册获取帮助。访问
Linux
手册页的命令是 man
语法
: man [
选项
]
命令
常用选项:
1.-k
根据关键字搜索联机帮助
2.num
只在第
num
章节找
3.-a
将所有章节的都显示出来,比如
man printf
它缺省从第一章开始搜索,知道就停止,用
a
选项,当按下q
退出,他会继续往后面搜索,直到所有章节都搜索完毕。
man手册没有的问题:
如果是第一次使用Linux的朋友这里需要切换root用户,输入:yum install -y man-pages
类似于这里我们查一下printf的帮助手册?
08.cp指令
类似于win中的复制粘贴功能
语法
:
cp [
选项
]
源文件或目录 目标文件或目录
功能
:
复制文件或目录
说明
: cp
指令用于复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录, 则它会把前面指定的所有文件或目录复制到此目录中。若同时指定多个文件或目录,而最后的目的地并非一个已存在的目录,则会出现错误信息
常用选项
:
-f
或
--force?
强行复制文件或目录, 不论目的文件或目录是否已经存在
-i
或
--interactive
覆盖文件之前先询问用户
-r
递归处理,将指定目录下的文件与子目录一并处理。若源文件或目录的形态,不属于目录或符号链
接,则一律视为普通文件处理
-R
或
--recursive
递归处理,将指定目录下的文件及子目录一并处理
?
?如果拷贝文件:
09.mv指令
mv
命令是
move
的缩写,可以用来移动文件或者将文件改名(
move?(rename)?fifiles
),是
Linux
系统下常用的命令,经常用来备份文件或者目录。
语法
: mv?[
选项
]?
源文件或目录 目标文件或目录
功能
:
1.
视
mv
命令中第二个参数类型的不同(是目标文件还是目标目录),
mv
命令将文件重命名或将其移至一个新的目录中。
2.
当第二个参数类型是文件时,
mv
命令完成文件重命名,此时,源文件只能有一个(也可以是源目录名),它将所给的源文件或目录重命名为给定的目标文件名。
3.
当第二个参数是已存在的目录名称时,源文件或目录参数可以有多个,
mv
命令将各参数指定的源文件均移至目标目录中。
常用选项
:
-f?
:
force?
强制的意思,如果目标文件已经存在,不会询问而直接覆盖
-i?
:若目标文件
?(destination)?
已经存在时,就会询问是否覆盖!
?剪切功能:
重命名:
10. cat指令
语法:cat [选项][文件]
功能
: 查看目标文件的内容,比较适合查看短文本。
常用选项
:
-b
对非空输出行编号
-n
对输出的所有行编号
-s
不输出多行空行
?
11.more指令
语法
:
more [
选项
][
文件
]
功能
:
more
命令,功能类似
cat
常用选项
:
-n
对输出的所有行编号
q
退出
more
我们先伪造一个10w行的长文本
cnt=1; while [ $cnt -le 100000 ];do echo "hello world $cnt"; let cnt++; done > hello.txt
准备工作做好之后,我们发现如果想看文本的话,使用cat我们只能看到后面的几行,如果我们想看到中间的某行就不能解决问题了。
那我们可以使用more
?输入/行数
?
12.less指令
less?
工具也是对文件或其它输出进行分页显示的工具,应该说是
linux
正统查看文件内容的工具,功能极其强大。
less?
的用法比起
?more?
更加的有弹性。在
?more?
的时候,我们并没有办法向前面翻, 只能往后面看
但若使用了?less?
时,就可以使用
?[pageup][pagedown]?
等按键的功能来往前往后翻看文件,更容易用来查看一个文件的内容!
除此之外,在
?less?
里头可以拥有更多的搜索功能,不止可以向下搜,也可以向上搜。
语法:
less [
参数
]
文件
功能
:
less
与
more
类似,但使用
less
可以随意浏览文件,而
more
仅能向前移动,却不能向后移动,而且
less
在查看之前 不会加载整个文件。
选项
:
-i??
忽略搜索时的大小写
-N??
显示每行的行号
/
字符串:向下搜索
“
字符串
”
的功能
?
字符串:向上搜索
“
字符串
”
的功能
n
:重复前一个搜索(与
?/?
或
???
有关)
N
:反向重复前一个搜索(与
?/?
或
???
有关)
q:quit
less可以上翻和下翻,更推荐使用less
按上和下键可以支持先后翻
less命令可以帮助我们的文本,可以进行日志的查看。
(本篇完)
|