目录
运行级别
运行级别指的是Linux操作系统下不同的运行模式。运行级别通常分为7等,分别是从0到6。
- 运行级别0:关机;
- 运行级别1:单用户【用于找回root密码】;
- 运行级别2:多用户无网络状态,一般很少用;
- 运行级别3:多用户有网络状态,很常用;
- 运行级别4:程序未使用保留给用户的级别;
- 运行级别5:图形界面;
- 运行级别6:系统重启;
运行级别我们可以通过下面这条指令改变:
init x
但是我们也不可能每次都通过这个指令设置运行级别,所以为了方便我们就改变默认的运行级别。而我们要想改变默认的运行级别,就需要先知道现在的默认运行级别,所以我们可以先通过下面这条指令来找出当前的默认运行级别:
systemctl get-default
当我们找到后,我们就可以修改了。对于Centos7以上的版本,系统对于我们常用的两种运行级别(多用户有网络、图形界面)给予了快捷方式去更改:
systemctl set-default TARGET.target
而对于TARGET的选取系统提供了常用两种级别:
多用户有网络:multi-user.target
图像界面:graphical.target
所以如果我们想更改默认的运行级别为多用户有网络只需要写:
systemctl set-default multi-user.target
帮助指令
linux下我们获取命令的信息主要是man和help两个指令,man获取的信息更加全面、help获取的信息是主要信息,是shell内置的命令信息。下面我们先来看看man的用法:
man 命令
我们可以通过上面的命令来查看cd或者ls命令的用法和例子,当然,我们也可以使用help指令:
help 命令
这里我使用的help指令显示的是英文,使用man显示的是中文...
文件指令
1、pwd:
这个指令用于查询当前位置的绝对路径,它的基本用法也很简单:
pwd
2、ls:
这个指令用于查看当前目录下的文件、目录。它的基本语法就是:
ls [选项] [文件、目录]
这里的选项内容,我们可以通过man来查询一下可以看到有很多的选项方式
例如我们想看现在路径下的所有文件和目录,只需要写:
ls -a
3、cd:
cd指令可以简单理解为是一个切换当前目录的指令,我们可以通过这个指令将我们当前的位置切换到另一个目录。它的基本语法是:
cd [位置参数]
例如,如果我们想要切换到home目录下的k用户的目录,我们只需要写:
cd /home/k
由这个指令还衍生一些与cd指令有关的操作:
cd ~
这个指令是用于返回当前的用户的家目录,你是k用户,就返回home目录下面,你是root用户,就返回/root目录。
cd ..
这个指令用于返回到上一级的目录,要是想返回3次,则需要写为:
cd ../../..
4、mkdir:
这个指令用于创建一个空目录,它的基本语法是:
mkdir [选项] [新目录的绝对路径]
例如,我们想在home目录下的k目录下创建一个空目录world,则需要写:
mkdir /home/k/world
但是,这里一次只能创建一级目录,要是我们想要一次创建两个级别的目录,只需要选上选项p即可,下面是在k目录一次性创建两级目录(world目录下创建一个newworld目录)的例子:
mkdir -p /home/k/world/newworld
5、rmdir:
这个指令用于删除一个空的目录,它的基本语法是:
rmdir [选项] [要删除的目录的绝对路径]
但是这里要注意的是,这里只能删除空的目录,不能删除有内容的目录!!!
6、rm -rf:
这条指令用于强制删除一个目录,包括它下面的所有东西!!这个命令的使用语法是:
rm -rf [要删除的目录路径]
例如我们要删除k目录下的world目录,即使它下面还有一个newworld目录,我们依旧可以强制删除
rm -rf /home/k/world
7、touch:
除了创建目录以外,我们还需要创建新的文件,所以我们有创建新文件的指令touch,它用于在当前的目录下创建一个新的文件。它的语法是:
touch [新的文件名和格式]
8、cp:
这个命令用于将文件复制到指定目录下,它的语法是:
cp [选项] [文件] [目标目录路径]
例如我们要将k目录下的hello.txt文件复制到k目录下的world目录,只需要写:
cp hello.txt /home/k/world/
当然,如果我们想将当前目录下的所有文件即整个文件夹都复制到目标目录中,需要增加选项-r,例如下面的例子就是将world目录下面的所有文件拷贝到k目录中。
cp -r /home/k/world /home/k/
注意,当我们复制多次时,可能会出现覆盖的消息,如果我们默认全部覆盖,不想要理会这些消息,直接在命令前加上 \ 即:
\cp -r /home/k/world /home/k
9、rm:
这个指令用于删除文件或者目录,它的基本语法是:
rm [选项] [要删除的文件路径/目录路径]
它的常用选项有:
-r:递归删除整个文件夹;
-f:强制删除不提示;
例如删除k目录下的hello.txt文件,且不提示:
rm -f /home/k/hello.txt
我们使用它时要万分小心!!
10、mv:
这个指令用于移动文件 / 目录,它的功能类似于我们windows下的剪切。它的基本语法是:
mv [原文件名 / 目录目录路径] [ 目标文件名 / 目标目录路径]
我们可以利用它来移动目录 / 移动文件、重命名文件 / 目录等。例如将文件hello.c重命名为hellonew.c:
mv hello.c hellonew.c
或者将目录test移动到目录dest下:
mv /home/k/test /home/k/dest
又或者移动文件并且改名:
mv /home/k/test/hello.c /home/k/dest/hellonew.c
11、cat:
这个指令用于查看文件,与我们之前的vim不同,这个指令只读不能改,让我们的文件更加安全。它的基本语法是:
cat [选项] [要查看的文件路径]
一般我们这里要想查看方便,都会加上选项-n,这样就会显示行号。
12、more:
more是一个基于VI编辑器的文本过滤器,使用它查看文件可以进行许多互动操作,它的基本语法是:
more [文件名]
在使用more指令查看时,我们可以进行许多操作:
space -- 翻下一页;
Enter -- 翻下一行;
q -- 立即离开more,不再显示文件;
= -- 输出当前行行号;
:f -- 输出当前行号和文件名;
Ctrl+B -- 返回上一屏;
Ctrl+F -- 向下滚动一屏;
一般我们将more配合cat使用
cat /home/k/hello.c | more
13、less:
less是一个与more功能相类似的指令,只不过它的功能要比more的功能更加强大。它们的语法都是:
less [文件名]
less查看文件的时候,只会加载所需要查看到文件的内容,它不会将所有的内容都先加载到内存。这个处理将它的效率大大提升。
关于less也有一些相关的交互操作:
space -- 向下翻一页;
[pageup] -- 向上翻一页;
[pagedown] -- 向下翻一页;
/字符 -- 向下查找字符,n向下查找、N向上查找;
?字符 -- 向上查找字符,n向下查找、N向上查找;
q -- 退出文件;
我们可以发现,其实less和more的操作相对来说还是比较相似的。
14、echo:
这个指令用于将数据输出到控制台,它的基本语法是:
echo [要输出的内容]
例如我们可以查看主机名:
echo SHOSTNAME
又或者是输出hello,world!
echo "hello,world!"
15、tail、head:
这两个指令也用于查看文档的内容,只不过tail查看的是后面几行而head查看的是前面几行,默认情况下是10行。它们的基本语法是:
tail [选项] [文件名]
head [选项] [文件名]
我们也可以自定义查看多少行,使用选项-n x,例如查看前面6行:
head -n 6 /home/k/hello.c
16、>>、>
这两个符号用于追加和覆盖,其中>>表示追加、>表示覆盖,它们的基本语法是:
ls / cat /echo [文件/文件列表] > [文件路径]
ls / cat /echo [文件/文件列表] >>[文件路径]
ls可以将当前的文件列表输入到某个文件中,如果没有,则会自动创建这样一个文件;
cat则可以将一个文件整个输出到另一个文件中;
echo则是写入单独的字符;
17、history:
这个指令用于输出我们曾经执行过的历史指令,它的基本语法就是:
history
而且,我们也可以使用
!行号
的方式来快速再一次执行对应行的指令。
18、ln:
这条指令作用是一个软链接,就像我们windows系统下的快捷方式,我们可以通过某个链接寻找到根源,它的基本语法是:
ln -s [目标目录] [链接名]
例如我们想创建一个链接将直接访问到k目录下的dest目录。
ln -s /home/k/dest/ destlink
时间指令:
1、date:
date的指令用于显示当前的时间,包括当前的年份、月份、日、时、分、秒。在默认情况下,仅输入date指令默认为同时显示所有的时间(从年份精确到秒)。
它的基本语法是:
date [选项] [字符串]
如果我们想仅仅表示时间,只需要写下面的代码就可以将当前的年月日时分秒都输出:
date
而如果只想输出某部分时间,例如仅仅输出年份和月份,我们需要改为下面的格式:
date "+%Y -%m"
其中字符串里面的内容就是需要输出的时间,无论输出哪一种时间,都需要字符串内以 + 开头。
%Y表示年份;
%m表示月份;
%d表示日;
%H表示小时;
%M表示分钟;
%S表示秒;
例如我们输出分秒:
date "+%M %S"
如果我们需要修改时间,需要选上选项-s,后面跟上你想修改的字符串,里面包含时间格式即可;
2、cal:
这个指令用于输出当前的日历,它的基本语法是:
cal
默认情况下输出的是当前的日期、日历,而当我们想输出特定年份的年历,只需要后面跟上年份。
cal 2020//2020年年历
查找指令:
1、find:
find指令用于在linux系统中查找符合某个条件的一些文件/目录,它的基本语法如下:
find [查找目录] [选项] [查找方式]
其中查找的选项有:根据名字查找:-name、根据大小查找:-size、根据拥有者查找:-user。
根据名字查找我们可以举个例子:在/home目录下查找hello.c文件:
find /home -name hello.c
当然,我们也可以根据大小来查找,其中参数中:+x表示大于x大小的所有文件、x表示大小等于x的所有文件、-x表示大小小于x的所有文件(查找单位是:k、M、G)。
例如我们查找大小大于100M的文件:
find /home -size +100M
2、locate:
这个指令用于快速找到某个文件的路径,它的使用基本语法是:
locate [文件名]
locate指令的使用原理是locate会将我们的文件和目录加载到它的数据库里,再根据它内部的数据结构和算法来快速定位locate的位置。所有我们第一次使用这个指令时,需要先下载它的数据库,使用指令:updatedb。
3、which:
这个指令可以用于查找某个指令所在的位置,它的基本语法是:
which [指令]
例如我们查找which指令的位置:
which which
4、grep:
这个指令也可以用于查找,只不过它查找的是文件内指定名称的元素,它的基本语法是:
grep [选项] [要查找的内容] [查找的文件]
例如我们在k目录下的hello.c文件中查找一个单词“p”:
grep p /home/hello.c
它的常用选项有:-n(查找并显示行号)、-i(不分大小写地查找);
当然,我们一般将grep结合管道符号 “ | ” 使用。所谓管道符号就类似于一个中转站,它将上一个指令的输出作为下一个指令的输入。
所有我们对于上面的在hello.c文件中查找p也可以改为:
cat /home/k/hello.c | grep p /home/k/hello.c
压缩指令:
1、gzip/gunzip:
这两个指令分别用于压缩和解压文件,它们的基本用法都是:
gzip [文件名]
gunzip [压缩包名]
但值得注意的是,gzip的只能压缩为格式是.gz的压缩包。所以我们压缩文件hello.txt的操作就是:
gzip hello.c
2、zip/unzip:
这两个指令与前面的gzip也类似,都是用于压缩,只不过zip/unzip可以用于压缩文件夹或者文件。它的功能更强大。它的基本语法是:
zip [选项] [压缩后的压缩文件名.zip] [要压缩的文件]
unzip [选项] [要被解压的压缩文件]
一般来说,zip的选项常选-r,递归压缩,而unzip常选-d,这样后面就可以指定解压的路径了,如果不指定,那就默认为当前路径。
例如压缩dest文件夹:
zip -r my.zip /dest
解压my.zip到dest目录下;
unzip -d /home/k/dest my.zip
3、tar:
tar指令可以同时用于打包、压缩和解压文件,所以也就没有untar的指令。其中打包表示将一堆零散的文件汇聚到同一个文件夹中,它也可以不压缩。tar的基本用法是:
tar [选项] [压缩的新文件名.tar.gz] [要压缩/解压的文件]
tar的文件后缀名是tar.gz。其中tar的选项可以用来指定它的执行方式:
- -c:产生打包文件;
- -v:显示详细信息;
- -f:指定压缩后的文件名;
- -z:打包同时压缩文件;
- -x:解包文件;