Linux系统操作入门

记录学习Linux的一些总结,包括学习鸟哥的Linux私房菜的笔记

其他

图形模式与文字模式的切换方式

Linux预设提供了六个命令窗口终端机让我们来登录。

默认我们登录的就是第一个窗口,也就是tty1,这个六个窗口分别为tty1,tty2 … tty6,你可以按下Ctrl + Alt + F1 ~ F6 来切换它们。

如果你安装了图形界面,默认情况下是进入图形界面的,此时你就可以按Ctrl + Alt + F1 ~ F6来进入其中一个命令窗口界面。

当你进入命令窗口界面后再返回图形界面只要按下Ctrl + Alt + F7 就回来了。

Linux 关机

在linux领域内大多用在服务器上,很少遇到关机的操作。毕竟服务器上跑一个服务是永无止境的,除非特殊情况下,不得已才会关机。

正确的关机流程为:sync > shutdown > reboot > halt

关机指令为:shutdown ,你可以man shutdown 来看一下帮助文档。

例如你可以运行如下命令关机:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
sync 将数据由内存同步到硬盘中。

shutdown 关机指令,你可以man shutdown 来看一下帮助文档。例如你可以运行如下命令关机:

shutdown –h 10 ‘This server will shutdown after 10 mins’ 这个命令告诉大家,计算机将在10分钟后关机,并且会显示在登陆用户的当前屏幕中。

shutdown –h now 立马关机

shutdown –h 20:25 系统会在今天20:25关机

shutdown –h +10 十分钟后关机

shutdown –r now 系统立马重启

shutdown –r +10 系统十分钟后重启

reboot 就是重启,等同于 shutdown –r now

halt 关闭系统,等同于shutdown –h now 和 poweroff

最后总结一下,不管是重启系统还是关闭系统,首先要运行 sync 命令,把内存中的数据写到磁盘中。

关机的命令有 shutdown –h now halt poweroffinit 0 , 重启系统的命令有 shutdown –r now reboot init 6

处理目录的常用命令

接下来我们就来看几个常见的处理目录的命令吧:

  • ls(英文全拼:list files): 列出目录及文件名
  • cd(英文全拼:change directory):切换目录
  • pwd(英文全拼:print work directory):显示目前的目录
  • mkdir(英文全拼:make directory):创建一个新的目录
  • rmdir(英文全拼:remove directory):删除一个空的目录
  • cp(英文全拼:copy file): 复制文件或目录
  • rm(英文全拼:remove): 删除文件或目录
  • mv(英文全拼:move file): 移动文件与目录,或修改文件与目录的名称

你可以使用 man [命令] 来查看各个命令的使用文档,如 :man cp。

ls (列出目录)

在Linux系统当中, ls 命令可能是最常被运行的。

语法:

1
2
3
[root@www ~]# ls [-aAdfFhilnrRSt] 目录名称
[root@www ~]# ls [--color={never,auto,always}] 目录名称
[root@www ~]# ls [--full-time] 目录名称

选项与参数:

  • -a :全部的文件,连同隐藏文件( 开头为 . 的文件) 一起列出来(常用)
  • -d :仅列出目录本身,而不是列出目录内的文件数据(常用)
  • -l :长数据串列出,包含文件的属性与权限等等数据;(常用)

将家目录下的所有文件列出来(含属性与隐藏档)

1
[root@www ~]# ls -al ~

cd (切换目录)

cd是Change Directory的缩写,这是用来变换工作目录的命令。

语法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 cd [相对路径或绝对路径]
#使用 mkdir 命令创建 runoob 目录
[root@www ~]# mkdir runoob

#使用绝对路径切换到 runoob 目录
[root@www ~]# cd /root/runoob/

#使用相对路径切换到 runoob 目录
[root@www ~]# cd ./runoob/

# 表示回到自己的家目录,亦即是 /root 这个目录
[root@www runoob]# cd ~

# 表示去到目前的上一级目录,亦即是 /root 的上一级目录的意思;
[root@www ~]# cd ..

pwd (显示目前所在的目录)

pwd 是 Print Working Directory 的缩写,也就是显示目前所在目录的命令。

1
[root@www ~]# pwd [-P]

选项与参数:

  • -P :显示出确实的路径,而非使用连结 (link) 路径。

实例:单纯显示出目前的工作目录:

1
2
[root@www ~]# pwd
/root <== 显示出目录啦~

实例显示出实际的工作目录,而非连结档本身的目录名而已。

1
2
3
4
5
6
7
8
9
[root@www ~]# cd /var/mail   <==注意,/var/mail是一个连结档
[root@www mail]# pwd
/var/mail <==列出目前的工作目录
[root@www mail]# pwd -P
/var/spool/mail <==怎么回事?有没有加 -P 差很多~
[root@www mail]# ls -ld /var/mail
lrwxrwxrwx 1 root root 10 Sep 4 17:54 /var/mail -> spool/mail
# 看到这里应该知道为啥了吧?因为 /var/mail 是连结档,连结到 /var/spool/mail
# 所以,加上 pwd -P 的选项后,会不以连结档的数据显示,而是显示正确的完整路径啊!

mkdir (创建新目录)

如果想要创建新的目录的话,那么就使用mkdir (make directory)吧。

语法:

1
mkdir [-mp] 目录名称

选项与参数:

  • -m :配置文件的权限喔!直接配置,不需要看默认权限 (umask) 的脸色~
  • -p :帮助你直接将所需要的目录(包含上一级目录)递归创建起来!

实例:请到/tmp底下尝试创建数个新目录看看:

1
2
3
4
5
6
[root@www ~]# cd /tmp
[root@www tmp]# mkdir test <==创建一名为 test 的新目录
[root@www tmp]# mkdir test1/test2/test3/test4
mkdir: cannot create directory `test1/test2/test3/test4':
No such file or directory <== 没办法直接创建此目录啊!
[root@www tmp]# mkdir -p test1/test2/test3/test4

加了这个 -p 的选项,可以自行帮你创建多层目录!

实例:创建权限为 rwx–x–x 的目录。

1
2
3
4
5
[root@www tmp]# mkdir -m 711 test2
[root@www tmp]# ls -l
drwxr-xr-x 3 root root 4096 Jul 18 12:50 test
drwxr-xr-x 3 root root 4096 Jul 18 12:53 test1
drwx--x--x 2 root root 4096 Jul 18 12:54 test2

上面的权限部分,如果没有加上 -m 来强制配置属性,系统会使用默认属性。

如果我们使用 -m ,如上例我们给予 -m 711 来给予新的目录 drwx–x–x 的权限。

rmdir (删除空的目录)

语法:

1
rmdir [-p] 目录名称

选项与参数:

  • -p :连同上一级『空的』目录也一起删除

删除 runoob 目录

1
[root@www tmp]# rmdir runoob/

将 mkdir 实例中创建的目录(/tmp 底下)删除掉!

1
2
3
4
5
6
7
8
9
10
[root@www tmp]# ls -l   <==看看有多少目录存在?
drwxr-xr-x 3 root root 4096 Jul 18 12:50 test
drwxr-xr-x 3 root root 4096 Jul 18 12:53 test1
drwx--x--x 2 root root 4096 Jul 18 12:54 test2
[root@www tmp]# rmdir test <==可直接删除掉,没问题
[root@www tmp]# rmdir test1 <==因为尚有内容,所以无法删除!
rmdir: `test1': Directory not empty
[root@www tmp]# rmdir -p test1/test2/test3/test4
[root@www tmp]# ls -l <==您看看,底下的输出中test与test1不见了!
drwx--x--x 2 root root 4096 Jul 18 12:54 test2

利用 -p 这个选项,立刻就可以将 test1/test2/test3/test4 一次删除。

不过要注意的是,这个 rmdir 仅能删除空的目录,你可以使用 rm 命令来删除非空目录。

cp (复制文件或目录)

cp 即拷贝文件和目录。

语法:

1
2
[root@www ~]# cp [-adfilprsu] 来源档(source) 目标档(destination)
[root@www ~]# cp [options] source1 source2 source3 .... directory

选项与参数:

  • -a:相当於 -pdr 的意思,至於 pdr 请参考下列说明;(常用)
  • -d:若来源档为连结档的属性(link file),则复制连结档属性而非文件本身;
  • -f:为强制(force)的意思,若目标文件已经存在且无法开启,则移除后再尝试一次;
  • -i:若目标档(destination)已经存在时,在覆盖时会先询问动作的进行(常用)
  • -l:进行硬式连结(hard link)的连结档创建,而非复制文件本身;
  • -p:连同文件的属性一起复制过去,而非使用默认属性(备份常用);
  • -r:递归持续复制,用於目录的复制行为;(常用)
  • -s:复制成为符号连结档 (symbolic link),亦即『捷径』文件;
  • -u:若 destination 比 source 旧才升级 destination !

用 root 身份,将 root 目录下的 .bashrc 复制到 /tmp 下,并命名为 bashrc

1
2
3
[root@www ~]# cp ~/.bashrc /tmp/bashrc
[root@www ~]# cp -i ~/.bashrc /tmp/bashrc
cp: overwrite `/tmp/bashrc'? n <==n不覆盖,y为覆盖

鸟哥的Linux私房菜

第四章

文章链接

Ctrl + Shift + F1 ~ F6 切换6个终端

date 显示当前时间

locale 显示当前支持的语系

cal 显示日历

​ cal + 年份 显示该年份的日历

bc 简单的计算器小程序

​ bc仅支持+ - * / ^ %运算

nano 一个很简单的文本编辑程序,后面加上文件名即可进行编辑。

Ctrl + C 强制退出

Ctrl + D 表示EOF或者exit

Tab 按两下自动补全

sync 将内存中的内容转存在硬盘中

​ 在关机之前记得多使用几次这个命令,防止内容的丢失

shutdown 为关机指令

reboot 为重启指令

第五章

文章链接

用户分为自己,自己所在群组,其他人三种。

su - 切换为root账户,密码为安装系统时创建的账户的密码

ls -al 显示当前文件夹下的所有文件

文件的类型和权限

第一个字符可能为d,-,l,b,c。分别表示文件夹,文件,连接档(类似windows里面的快捷方式),周边设备(随机存储设备),键盘鼠标(一次性存储设备)

后面三个字母一组表示每类用户的权限,r表示可读,w表示可写,x表示可执行。三组分别为:拥有者,群组内成员,非本人且没有加入本群组之外的账户。

image-20211015213137627

一串字母之后的一个数字是连接数,后面的两个分别是拥有者和拥有者所加入的群组。最后名字前面的是最后修改的时间,在前面一个数字是该文件的大小bytes。

如果一个目录d的权限没有x的话就不能进入该目录。

root无视所有的规则。

ls - l 查看最近修改的记录

chgrp 更改指定文件的群组。e.g. chgrp users test.txt

chown 更改指定文件的拥有者,e.g. chown bin test.txt e.g. chown root:root test.txt

cp 对指定文件进行拷贝。e.g. cp test.txt test2.txt

chmod 更改文件的权限,r的权限对应的值是4,w是2,x是1,对于每个类型的用户的权限就是这些权值相加。e.g. chmod 777 test.txt

​ 很巧妙的是,这个值唯一对应一种权限的组合。

chmod 的另一种方法e.g. chmod u=rwx,go=rx test.txt u表示拥有者,g表示群组,o表示其他人,a表示所有类型。

image-20211015215928404

文件是否能执行和后缀名无关,和是否有x的权限有关。文件的w权限是指可以修改文件的内容,但是不包括删除该文件

image-20211016110356855

在有w权限的文件夹下是可以删除没有w权限的文件。

常见的后缀名有:*.sh表示为脚本或者批处理文件,*Z *.tar *.tar.gz *.zip *.tgz表示压缩包文件 *.html *.php表示网络相关的文件。文件是否可以执行和后缀名没有关系,只和这个文件的x权限有关。

Linux的文件系统依据:FHS

网页中有一些关于Linux根目录下目录的主要含义的解释。

目錄樹架構示意圖

目录树的简单示意图。

绝对路径和相对路径:以根目录/开头的路径都是绝对路径,反之则为相对路径,相对路径是指当前所在路径的相对位置来定义的。

. ./都表示当前目录 .. ../都表示上一级目录

使用 uname -r 查看核心版本

使用 uname -a 查看操作系统的版本

第六章

文章链接

image-20211016204944202

Linux中根目录中也有./和../目录,并且 ./ 目录和 ../目录是同一个目录。

cd 表示切换目录。几个比较特殊的目录在上面的图片上都可以看出。

pwd表示显示当前的目录。pwd -P表示显示文档的实际地址,对于一些快捷方式的地址会发生区别。

mkdir表示建立一个新目录。e.g. mkdir -p test1/test2/test3/test4会依次建立目录 e.g. mkdir -m711 test2会建立一个test2目录并且权限为711。

​ 一般情况下建立目录需要一层一层建立,加上-p选项可以将所有的目录都按照顺序依次建立起来,而且如果本来目录存在的情况下,系统不会提示错误信息。(不建议,如果出错很麻烦)。

rmdir删除空目录。e.g. rmdir -p test1/test2/test3/test4该命令只能一层一层删除目录,加上-p可以一次性全部删除,该命令删除的目录中必须不能有别的文档或者目录,如果想要带里面的文件一起删除的话可以使用rm -r test命令来删除,(不过比较危险)。

输入exit或者按Ctrl + D可以退出已经登录的root账户

echo $PATH可以显示当前用户的PATH路径都有哪些。在使用指令的时候会优先在PATH的路径下寻找可执行文件,如果有多个重名文件的话会优先使用先搜索到的文件。

PATH="${PATH}:/root"可以将/root加入到PATH路径中。

​ 为了安全起见不要将 . 加入PATH中。


image-20211016235319366

在Bash Shell中ls -l 可以简写为ll


image-20211017002404054

cp表示copy,即对文件进行复制和粘贴。

​ 其中-i选项表示如果出现覆盖先进行询问。-a表示复制的文件的群组和时间都和原文件一样。-l表示创建一个实体链接。-s表示创建一个符号链接,即产生了源文件的一个捷径。-d表示如果复制的文件为一个捷径文件的话复制该捷径,因为cp直接复制一个捷径的话会复制源文件。cp指令可以将多个资料一次复制到一个目录中去,但是最前面一定是目录。


image-20211017004951502

rm表示remove,即移除目录或者文档。

​ 其中大部分的发行版Linux都默认rm带上了-i参数,-r很危险,同时不要将文件起名为-aaa-这种类型,因为如果这时想要删除这个文件的时候,就会报错,因为会优先检测出-a这个选项,所以文件起名一般不要用-开头。


image-20211017005614342

mv表示move,即移动文件或者目录。

​ 可以使用mv来对一个文件进行更名的操作。


image-20211017103829397

cat用来显示文档内的内容。-n选项用来带行号输出,-A用来显示所有的特殊字符和正常字符。

taccat命令的反着输出的版本,从最后一行到第一行输出。


image-20211017105321632

nl命令用来带行号输出文件的内容。-b a选项用来将空白行也带上行号。-b a -n rz用来将空白行带上行号之后再前面补零。-b a -n rz -w 3用来将空白行带上行号之后再前面补零,并且规定零加上数字一共宽度为三。


more命令用来可以翻页的查看一个文档。

image-20211017105909332

进入more一个文档之后的一些操作如上图。对文档内的字符串进行/查找之后按n查看下一个查找到的字符串。


less命令也是可以翻页查看一个文档,功能比more更加的强大。

image-20211017110548332


head命令用来取出前面的几行。

image-20211017110912050

在不加上-n选项的时候默认输出一个文件的前10行,加上-n选项可以自定义输出文件的前几行,值得注意的是,如果-n后面跟的是一个负数,表示的是这些行不输出,比如-n -100表示前100行不输出,从100行之后的所有行全部输出。


tail命令用来取出文件的后面几行。

image-20211017111631255

-n的使用和head大致相同,一个比较好玩的是 -n +100表示100行之后的所有行都输出。-f选项用来持续检测这个文件,如果一个文件一直在进行写入操作,那么会持续的输出这个文件新加入的行,直到按下Ctrl + C后结束检测。

headtail的组合使用可以输出11 ~ 20 行:head -n 20 /etc/man_db.conf | tail -n 10 |表示将前面执行的结果交给后面接着执行。

在上面的基础上再加上cat可以输出正确的11~20行的行号:cat -n /etc/man_db.conf | head -n 20 | tail -n 10


image-20211017112447936

od命令是针对那些非文字文档的一个命令。

对于一些 data file 或者 binary file 可以使用od命令使这些文件以ASCII码的形式输出出来。

我们可以利用这个命令来对已有的字符串输出对应的八进制ASCII码:echo password | od -t oCc


使用ls--time选项来查看每个文件的不同类型的时间。

image-20211017113820032


使用touch命令可以:1.建立一个空白的文档。2.将一个文档的时间修改为某一个特定的时间。

image-20211017230559922


umask命令可以查看当前用户创建的文档或者目录的预设权限。

输入umask输出的一串数字从第二个到第四个分别表示user,group,other三种用户被拿掉的权限的权值的和。比如4表示读,2表示写,5表示读和执行。

命令umask 002表示将该用户创建文件的预设权限设置为仅为other的用户不能写。

一般root用户将umask设置为022,因为是出于安全的考虑。


image-20211017231924941

chattr命令表示设置文件或者目录的隐藏属性

chattr +i attrtest表示给attrtest文件加上锁定的隐藏属性,用chattr -i attrtest来取消该隐藏属性。

image-20211017232430627

lsattr命令用来查看一个文件或者目录的隐藏属性。


SUID(Set UID)是一个特殊的权限,可以让非root用户暂时使用root命令。

SUID是在原本user的x权限的位置上标为s,此时权限表示为SUID。

下图为SUID的限制于功能:

image-20211017234508661

SUID程式執行的過程示意圖

而且需要注意的是SUID只可以用在binary program上,并不能用于shell script。


SGID(Set GID)是指在群组的x权限的位置上标为s的一个权限。

SGID对于可执行文件的限制于功能为下图:

image-20211017234547632

SGID对于目录的限制于功能为下图:

image-20211017234859979


SBIT 只能对目录有作用。

image-20211017235236377


image-20211017235339098

4,2, 1分别表示这三个隐藏权限的权值。在chmod的第一个值中表示该文件的隐藏权限属性值。使用:chmod 4755 test可以设置test的隐藏权限。

image-20211018000050678

上图是使用文字的方式添加文件的隐藏属性。


fail命令来查看改文件的基本资料,是ASCII文件还是date文件或者可执行文件的一些细节。

image-20211018000446377


which命令用来寻找命令的完整路径。

image-20211018000810656

which会根据PATH的路径来依次寻找命令所在的地址。


whereis命令是用于在一些特定目录中寻找档案名。

image-20211018001136304


locate命令用来通过关键字在自建的数据库中搜索带有该关键字的文件。

image-20211018001928696

locate使用的是由已建立的資料庫 /var/lib/mlocate/里面的资料所搜到的,该数据库默认每天更新一次,所以如果没有更新的话就可能搜索不到,这时就可以进行手动更新。

updatedb命令会搜索硬盘中的文档的名称并且更新资料库中的档案。

image-20211018002257338


find命令用来查找文件。

image-20211018002626749

image-20211018002647603

image-20211018002835439

image-20211018003328825

image-20211018003429378

image-20211018003714199

Linux系统操作入门

https://dicemy.com/11830

作者

Dicemy

发布于

2021-03-05

更新于

2022-05-23

许可协议

评论