【Linux系统】快速入门一些常用的基础指令
各位大佬好,我是落羽!一个坚持不断学习进步的学生。
如果您觉得我的文章还不错,欢迎多多互三分享交流,一起学习进步!
也欢迎关注我的blog主页: 落羽的落羽
文章目录
- pwd、whoami、clear
- mkdir、touch、tree
- cd
- ls
- rmdir、rm
- man
- echo
- cat、tac、more、less、head、tail
- cp、mv
- find、which、whereis
- alias
- grep
- zip、unzip、tar
- uname
开始学习使用Linux,我们首先要掌握一些Linux的基础指令。在我们常用的Windows系统中,各种基础功能大多是靠鼠标、键盘完成的,这是Windows提供的指令利用硬件来完成的相应操作。而Linux中,我们要学会一些基本的指令语句:
pwd、whoami、clear
计算机中的数据存储,无非可以认为只有两种方式:文件和文件夹。可以认为文件是存储的最小单元,文件夹中可以存文件,也可以有其他文件夹,也可以为空。我们也可以称文件夹为目录。Linux的这整个文件系统,是一种树形结构!既然是树,就有根,Linux中根目录名为/
。由于树形结构的特点,文件的唯一性是通过路径标识的。无论是Linux还是Windows,登录后都会处在一个默认的路径下,Windows是桌面文件夹,Linux中通过pwd指令查看。
-
pwd指令,功能是显示用户当前所在的目录
打开我们的XShell,进入机器,连接到云服务器后,输入pwd,回车,就能看到:
这就表明我当前所在的目录是/root。 -
whoami指令,功能是显示当前登录的用户,输入whoami,回车:
表明我现在是root账号登录的。 -
clear指令:清空当前屏幕。
很简单,写了满满一屏幕指令后,可以用clear清屏:
mkdir、touch、tree
-
mkdir指令,用来创建目录,可以一次创建一个目录,也可以通过选项
-p
一次创建一串目录:
语法:mkdir a
,在当前目录下创建一个目录a。mkdir -p a/b/c/d
,在当前目录下创建一串目录a、b、c、d,它们的结构是当前目录包含目录a,目录a包含目录b,目录b包含目录c,目录c包含目录d。
-
touch指令,用来创建文件或修改文件信息:
最简单的用法,touch后加新建的文件名:touch test.c
,在当前目录下创建一个test.c文件
举例,如果输入以下指令:
显然,当前/root路径下是这样的树形结构:
这个图像是用tree指令生成的,tree指令需要额外下载:我们使用的是CentOS版本系统,输入指令yum install -y tree
,系统就会自动下载了(不同的系统下载指令可能不一样)。稍等几秒,显示complete后就下载好了,我们就可以使用tree指令了:
tree
指令,显示出以当前所处路径为根的树形结构。tree 指定路径
指令,显示出以指定路径为根的树形结构(路径指定方式有两种,见下文)。
我们当前还处在/root目录下,所以使用tree
指令,就得到了上图:
(可以看到它还能显式出当前结构中有几个文件夹和几个文件,后面我们都以这个文件结构举例子
除此之外,还可以使用tree a
,显示出以a目录为根的树形结构:
还可以使用tree dir1
,显示出以dir1目录为根的树形结构,当然dir1是空目录,什么都没有:
刚才还提到过,整个Linux系统的文件结构的根目录名是
/
,所以我们可以试试tree /
指令,由于系统中还有很多其他内部文件,屏幕上就会刷新很长时间文件信息。可以用ctrl c快捷键,中断指令执行的过程。
cd
我们创建了不同的目录,肯定需要进去再进去别的操作。cd的功能就是进入指定的路径。指定路径有两种方式:绝对路径和相对路径。
-
绝对路径指定:用
cd 绝对路径名
,即可进入指定的路径:
-
相对路径指定:相对于当前所处的目录,指定目录。通过
..
和.
完成,..
指上级路径,.
指本身所在路径。.
的主要作用是找到当前路径下的可执行程序并执行。此时我们主要使用..
和路径分隔符/
,比如我现在在a目录下,想进入上一层目录/root,用绝对路径表示是cd /root
,用相对路径表示是cd ..
;我在a目录下,想进入上一层目录/root的子目录dir1,用绝对路径表示是cd /root/dir1
,用相对路径表示是cd ../dir1
。
-
除此之外,如果只是想去当前目录下的子目录,可以直接使用
cd 目录名
,这种写法对跨层次或逆层次的进入不起作用:
绝对路径一般不会随着用户的路径变化失去唯一性,一般在特定服务的配置文件中经常被使用。而相对路径可能会随着用户的路径变化失效,但由于它的便携性,一般在命令行中使用比较多。
cd指令还有一种选项用法:cd -
指令,可以回到上一次所处的路径。连续使用cd -
,就会在两个路径见反复横跳:
ls
ls指令用来罗列指定目录下的内容。
ls
,直接罗列出当前目录下的文件名和文件夹名:
一个文件或文件夹通常由内容和属性组成,就算内容是空的,也一定有属性,如名字、创建时间、类型、修改时间、内容大小等等。上面的ls
指令仅仅列出文件和文件夹名字,而ls -l
可以列出它们的详细信息:
前面的还看不懂没事,知道每一行是一个文件或文件夹的详细信息就好。
但是,Linux系统中还可以存在隐藏文件(夹),一般以.
开头。隐藏文件(夹)大多是不想被修改,因此直接隐藏起来的文件(夹)。想要把这些隐藏的内容也列出来,使用ls -a
指令:
-a
和-l
都是ls
指令的选项,选项间可以组合使用,写成ls -al 或 ls -la 或 ls -a -l
都是一样的效果。这个指令功能不言而喻,就是把当前目录下的所有文件和文件夹包括隐藏文件,并把它们的详细信息都列出来:
值得注意的是,每一个目录,都有两个隐藏文件夹,名字就是
.
和..
。实际上,.
就是自己当前目录,..
就是上一级目录。刚才说的相对路径中的.
和..
就是这么来的。
除此之外,ls也可以指定目录罗列其下的内容,也可以搭配-a和-l等选项使用,指定目录写在选项后:
rmdir、rm
学了新建目录和文件,当然也要学会删除。
- rmdir是与mkdir相对的指令,用于删除空目录:
rmdir有一个选项-p。rmdir -p dir
,会删除空目录dir,并且如果子目录删除后父目录也空了,父目录也删除。循环直至某一个目录不为空或到当前所处路径:
- rm相对更泛用,能删除文件或目录。
一般情况下,为了安全考虑,系统还会询问一次是否要删除,输入y为是,输入n为否。如果不想让系统提醒,果断删除,就加上-f选项,可以强制删除。
只是这样,一次只能删除一项。我们可以使用-r选项,删除指定目录及其下所有文件。
这样删除,也会一次次询问。所以,最强硬的删除方式就是rm -rf 指定目录
了,一口气通通删掉。当然,风险也相当大,Linux中删除文件可是无法恢复的。
Linux系统的根目录是/
,如果写下rm -rf /
,后果可就不堪设想了!
man
Linux的命令有很多参数,不可能全记住,man就是Linux自带的一个联机手册,可以查询获取帮助。语法是man 选项 想要查询的命令
:
常用选项有:
- -k(根据关键字进行联机查找)
- num(只在第num章节查找)
- -a(在所有章节中搜索,直到所有章节都搜索完毕)
man手册中分为9个章节(不同系统可能有差别),里面是不同的内容,我们只需知道前三个:
- 1 是 普通的命令(最常用,如 ls、cp、man 本身)
- 2 是 系统调用(内核提供的函数,如 open、fork)
- 3 是 库函数(C标准库等的函数,如 printf、strcpy)
我们也可以通过man man
指令查询到这些内容:
echo
echo命令,作用是将文本写入文件
- 第一个用法是
echo 文本 > 文件名
,叫做输出重定向。 - 不写
> 文件名
时,默认是输入到显示器文件中,也就是我们的屏幕上: - 输出重定向的规则是:目标文件若不存在则创建后写入,若已存在则先清空原有内容再写入。我们也可以反向利用这一点,
echo > 文件名
便可以清空指定文件。 - 第二个用法是
echo 文本 >> 文件名
,叫做追加重定向,不会清空文件原有内容,而是在后面续写。
cat、tac、more、less、head、tail
cat命令,作用是查看文件中的内容。语法是cat 选项 文件名
。
常用选项有:-b(对非空输出行编号)、-n(对所有的输出行编号)、-s(遇到连续的多行空行时,只输出一行空行)
tac命令,和cat命令相反,它是从文件结尾倒着查看文件内容,具体使用方法和cat几乎一样。
cat命令主要用于查看小文件,查看大文件时会刷屏。
more指令类似于cat,一次只会显示固定行数文本,常用选项有-n(指定输出行数),按回车键不断往下翻查看后面的内容。
还有一个less指令,算是Linux下正统查看文件内容的工具,相比more只能往后面翻,less能往前面和往后面翻。它还有查找指定内容的功能。它的常用选项有:
- -i,忽略搜索时的大小写
- -N,显示每行的行号
- /字符串,向下搜索指定字符串
- ?字符串,向上搜索指定字符串
再来认识一下head与tail指令。顾名思义,head可以显示开头几行的文本,tail可以显示结尾几行的文本。它们的选项 -n 用来规定查看几行,默认是查看10行。
Linux命令行中有一种叫“管道”的用法,|
符号,可以连接不同的命令,组合使用。在这里,我们也可以组合使用head和tail,比如:
有一个1000行的文件test.txt,我们想查看200到210行的内容,就可以写下命令head -210 test.txt | tail -10
,意思是先找test.txt中的前210行,再找其后10行,就是200~210行了。
cp、mv
cp指令的功能是复制文件或目录
语法:cp 选项 源文件或目录 目标文件或目录
如果想复制一个不为空的目录,它的内容也想一并复制,需要加选项 -r 进行递归处理。想要强制复制,用 -f 选项。
也可以选择复制文件覆盖另一个已存在文件,加选项 -i 会在覆盖文件前询问用户。
举个栗子,我现在有如下结构:
将test.c拷贝一份到b目录下;
再演示复制目录及其内容:
既然cp命令是复制,当然也有剪切命令了,就是mv。
mv用来移动文件或将文件改名,语法是mv 选项 源文件或目录 目标文件或目录
-
当第二个参数是目标目录时,该文件会移动到这个目录下。
-
当第二个参数是目标文件时,该文件会改名为这个目标文件名。
-
当第二个参数是已存在的目录时,源文件或目录可以有多个,这些源文件和目录都会被移动到目标目录中。
find、which、whereis
Linux下的find命令用于在目录结构中搜索文件,并执行指定的操作。find命令中有许多的选项,功能十分丰富。
语法是find 目录名 选项
,常用选项有 -name ,后写文件名,是按照指定文件名查找文件。查找时会在指定目录下寻找:
值得注意的是,Linux下一切皆文件,命令也不例外,大部分Linux命令的本质就是可执行文件,存放在一个固定的位置,也可以通过find查询到:/usr/bin
路径下,是Linux的固定目录。
which命令,就是用于搜索系统指定的命令位置,which XXX
它就相当于find /usr/bin -name XXX
whereis命令,则用于查找程序的源文件、二进制文件或手册:
alias
alias指令用于设置命令的别名,这个新起的别名是内存级别的,并不会真实存储,如果退出机器或启动新的终端,是无法使用别名的。
使用语法是alias 别名='命令'
(命令中可以带选项)
grep
gerp指令是文本过滤器,用于在文件中搜索字符串,将找到的行打印出来。语法是grep 选项 要搜寻的字符串 文件
常用选项有:
- -i,搜索时忽略字符大小写的不同,大小写视为相同
- -n,同时输出行号
- -v,反向选择,即显示出没有要搜索的字符串的其他内容
zip、unzip、tar
这三个命令与文件的压缩与解压缩有关
zip命令用于将目录或文件压缩成.zip格式,语法是zip 选项 压缩文件.zip 目录或文件
,常用选项是-r,用于递归处理,压缩目录时必须加-r。
而unzip命令用于解压缩zip格式的压缩包,语法是unzip 压缩文件.zip 选项 目录
,不加选项和指定目录时,默认解压到当前目录下。选项 -d 用于指定解压到的目录。
tar指令既能用于打包,也能用于解包,作用在. tgz 或 .gz 格式的压缩文件。语法是tar 选项 文件与目录 ...
。常用选项有:
- -c,表示要建立一个压缩文件
- -x,表示要解开一个压缩文件
- -z,检查是否需要用 gzip 压缩
- -f,指定归档文件的名称,使用这个选项必须紧跟在 -f 后面接文件名。
- -C,解压到指定目录,这个选项写在压缩文件名后,后接要解压到的目录。
uname
uname指令用于获取电脑和操作系统的相关信息。常用选项有 -a(详细输出所有信息)
另外,补充两个查看操作系统版本的命令:
lsb_release -a
cat /etc/os-release
本篇完,感谢阅读。