Linux系统零基础入门之基本操作

为什么学习Linux?

Linux一般是用作服务器端的操作系统。

操作系统分类 例如
桌面操作系统 Windows、MacOS、Linux
服务器操作系统 Linux
手机操作系统 Android、IOS
嵌入式操作系统 Linux

可以看出,WindowsMacOS一般家用,一般叫做客户端。而Linux一般运行在服务器端。因此,学习Linux主要有两个方向:

  • Linux运维
  • Linux嵌入式开发

Linux版本

  1. 内核版本

    操作系统的核心,用于处理各种和硬件打交道的工作。分为5个部分:内存管理,进程管理,进程间通信,虚拟文件系统和网络。

  2. 发行版本

    内核版本+各种应用软件。常见的有:Ubuntu、RedHat、CentOS、Debian、Fedora

虚拟机

虚拟机本质是一个软件,用来模拟真实的计算机,可以在虚拟机上安装操作系统。

虚拟机下载安装:VMWARE15

Ubuntu18.04下载与安装:Ubuntu18.04

Linux文件系统

Windows下有盘符,但Linux下没有盘符的概念,它只有一个根目录

  • /bin 存放二进制可执行文件
  • /etc 存放系统管理和配置文件
  • /home/用户名 存放用户的文档
  • /lib 存放文件系统中的程序运行所需要的共享库与内核模块
  • /usr 存放用户应用程序

Linux终端命令

ls、pwd、cd命令

启动终端,有个默认目录:/home/用户名

  • pwd → \to print work directory 打印当前工作目录/路径

  • ls → \to list 列出所有文件
    蓝色代表文件夹白色代表文件

  • cd → \to change directory 切换操作路径(区分大小写)
    cd .. → \to 回到上一级路径
    可以打开多级路径 → \to cd Desktop/aa

tab和上下方向键

输入cd 切换目录时,可以按下tab键进行补全。

当已输入字母和目录中匹配仅有一个时,可以直接匹配;

不止一个时,再按一次tab键可以打印所有匹配目录

按方向键,可以获取历史命令

ls的三个选项lha的作用和隐藏文件

输入clear可以清除界面上所有命令

直接回到家目录 → \to cd ~或者cd

ls -l → \to 以列表形式呈现

ls -a → \to 显示隐藏文件

两者可以结合使用,ls -l -a

ls -h → \to 单独使用没有效果

ls -l -h → \to 显示文件大小

也可以,将命令写在一块:ls -lh。先后顺序并不影响

ubuntu中隐藏文件都是以.开头的

ls 路径 → \to 列出目录下所有文件

ls通配符

  1. *代表0或多个任意字符

    ls *.txt → \to 列出所有txt文件

  2. ?代表一个字符

    ls ???.txt → \to 文件以txt结尾的,有三个字母/数字的

  3. []代表其中任意一个字符

    ls [1234]23.txt → \to 第一个字符从1234中取

    ls [1-4]23.txt

使用cd命令打开路径

cd . → \to 打开当前目录

cd .. → \to 打开上一级目录

cd ../.. → \to 打开上上一级目录

cd ~ → \to 回到家目录

cd 相对路径 → \to 根据当前所处路径进行计算

cd 绝对路径 → \to 从根目录进行描述

cd - → \to 从前后两个操作目录来回切换

使用touch、mkdir和rm命令进行文件/文件夹的创建和删除

touch test.txt → \to 创建文件`test.txt

touch .test.txt → \to 创建隐藏文件`test.txt

mkdir bb → \to 创建文件夹bb

mkdir bb/cc → \to 无法创建多级文件夹bbcc

rm test.txt → \to 删除文件test.txt

rm .test.txt → \to 删除隐藏文件.test.txt

rm -d bb → \to 删除空文件夹bb

rm -r bb → \to 删除文件夹bb

使用mv和cp命令进行文件/文件夹的移动和复制

mv test.txt aa → \to 移动当前目录下的test.txt文件至当前目录的aa文件夹下

mv test.txt 绝对路径 → \to 移动当前目录下的test.txt文件至绝对路径下

移动不但可以移动文件,还可以移动文件夹

mv bb aa → \to 将当前目录下的bb文件夹移动至aa文件夹下

cp text.txt aa → \to 复制当前目录下的test.txt文件至当前目录的aa文件夹下

cp -r aa/bb . → \to 复制当前目录下aa文件夹中的bb文件夹至当前目录下

使用mv命令可以进行重命名的操作

mv test.txt ./123.txt → \to 重命名为123.txt

mv test.txt aa/123.txt → \to 将当前目录下test.txt文件移动aa目录下,并重命名为123.txt

cp test.txt ./123.txt → \to 将当前目录下test.txt文件复制至当前目录下,并重命名为123.txt

Linux命令格式和帮助手册

cmd -option parameter

cmd → \to 命令

-option → \to 选项

parameter → \to 对象

cmd --help → \to 查看cmd命令帮助文档

man cmd → \to 查看cmd命令用户手册

语言设置、时区设置

先安装下Vim编辑器:sudo apt-get install vim

sudo vim /etc/default/locale

改为如下内容:

LANG="en_US.UTF-8"
LANGUAGE="en_US:en"

which查看命令所在位置

每个命令执行时,都会去执行一个程序。该程序文件指示了执行该命令时需要做哪些事情。

/bin → \to binary,二进制文件,普通命令

/usr/bin → \to 用户安装的应用程序

which cd为空,因为cd是shell内置的命令

文件搜索

find 搜索范围 搜索条件

在搜索过程中按下ctrl c可以中止

find /home -name 123 → \to 精确搜索

find /home -name 123* → \to 模糊搜索

find /home -iname abc → \to 选项-i不区分大小写

find /home -user jn → \to 按照文件所属人搜索目录下所有文件

find /home -mmin -5 → \to 文件内容上次被修改i时间在5分钟以内

  • -mmin → \to 上次文件内容被修改时间
  • -amin → \to 上次文件被访问时间
  • cmin → \to 上次文件属性(文件权限)被修改时间
  • -5 → \to 5分钟以内
  • +5 → \to 超过5分钟

find /home type -f → \to -type文件类型 f文件 d目录(文件夹) l软链接文件

find /home -size +1 → \to 查找大于512字节的文件

有时需要使用条件连接符将两个条件连接起来

-a → \to and,表示两个条件都要满足
-o → \to or,表示两个条件满足其一即可

例如:find /home/jn/Desktop -name 'a*' -a type -f 表示在桌面上搜索文件名以a开头的文件

除了上述搜索文件的方式,另外,还可以通过文件id去搜索文件

ls -i → \to 列出所有文件及其id

例如:find /home -inum 263502 → \to 寻找id = 263502的文件

除了find命令,还可以使用locate命令进行文件搜索

为什么使用locate命令会比find快呢? → \to locate根据PC上文件创建出一个索引库,而无需遍历。新建的文件不会立即添加到索引库中,当需要立即更新索引库时,输入命令:sudo upatedb


使用catmore命令查看文件内容

cat 1234.txt → \to 在终端不分页地显示所有文件内容

cat -b 1234.txt → \to 显示行号,但去除空行

cat -n 1234.txt → \to 显示行号,但不去除空行

more 1234.txt → \to 分页地显示所有文件内容。按空格键可跳转下一页,按b键可返回上一页


使用grep进行文件内容的搜索

grep -n user 1234.txt → \to 搜索含user的行并显示行号

grep -v user 1234.txt → \to 搜索user的行

grep ‘#' /etc/services → \to services文件中搜索含#的文本行

grep -v '#' /etc/services → \to services文件中搜索#的文本行

grep ^'#' /etc/services → \to services文件中搜索以#开头的文本行

grep -v ^'#' /etc/services → \to services文件中搜索#开头的文本行

grep s$ /etc/services → \to services文件中搜索以s结尾的文本行

grep -i abc 126.txt → \to 忽略大小写搜索含abc的文本行

使用右尖括号和双右尖括号进行命令结果输出到文本

echo hello → \to 在终端输出上回显

echo hello < 126.txt → \to hello写入到126.txt文本文件中,并会清除原有的文本内容

echo hello << 126.txt → \to hello追加写入126.txt文本文件

重定向不仅可以对echo命令使用,还可以对其他命令使用

grep jn 126.txt >> res.txt → \to 126.txt中搜索含jn的文本行,并将搜索到的文本行追加写入到res.txt中(若没有该文本文件,则创建后再写入)

什么是管道

把一个命令的输出,通过管道连接,作为另一个命令的输入

输出就是命令的结果,输入一般是一个命令的参数。管道通过|建立。

ls -lh | grep 126.txt → \to ls -lh执行完毕的结果中抓取含126.txt的文本行

grep -v ^'#' /etc/services | more → \to 将搜索到的文本内容以分页的方式显示

关于linux下的软链接(快捷方式)

一般不会在同一目录下创建软链接

ln aa/abc abc_softlink → \to 在桌面上创建aa文件夹中abc文件的软链接文件abc_softlink

用户管理,用户组管理和权限

Linux系统是多用户的,为什么需要多用户? → \to 服务器是多个人管理(有多个运维人员)

安装系统时,不是默认启用一个root用户,而是创建一个普通用户。root用户具有所有权限,容易闯祸。因此,日常维护工作由普通用户完成,除非遇到系统管理的工作,才会使用到root用户。

那如何添加用户和设置密码呢?

  1. 添加用户名

    sudo useradd 用户名 (-m 创建家目录 -g 指定所在的组选项)
    查看是否添加成功,可以输入命令:cat /etc/passwd

  2. 设置密码

    sudo passwd 用户名
    若是需要给当前用户更改密码,则直接在终端输入:passwd。不想修改密码,按Ctrl d退出。


关于sudo命令

允许系统管理员让普通用户执行一些或者全部的root命令的一个工具,如userddhaltrebotsu等。这样,不仅可以减少root用户登录和管理时间,同时提高了安全性。

在用户使用sudo时,会验证当前用户的密码,该密码具有5分钟的有效期,在有效期内输入sudo不需要再输入密码。

当切换到root用户就不需要使用sudo了。

在终端输入命令:sudo passwd rootroot用户设置密码。设置完密码就可以直接登录root用户了,输入:su root


当创建用户时,系统会创建一个和用户名同名的组。

每个用户都有一个初始组,可以有零个或多个附加组

用户组的作用,是为了方便权限控制。(附加组就是为了给用户附加别的权限)

一个用户可以属于多个组,一个组可以有多个用户。

文件属性:所属用户、所属用户组

使用命令:id 用户名 可以查看对应的用户组gid

sudo useradd -g user3 user4 → \to 创建属于user3用户组的用户user4


如何进行用户切换、用户删除、用户组管理?

su xx → \to 用户切换

su - xx → \to 用户切换,并回到切换到的用户的家目录

exit → \to 退出当前用户,并返回上一个用户(从哪个用户切换过来的)。若是没有上一用户,则直接退出终端。

userdel xx → \to 删除指定用户,但默认不删除家目录

userdel -r xx → \to 删除家目录

userdel -f xx → \to 强制删除,即使用户正在登录系统

groupadd xx → \to 添加用户组

cat /etc/group → \to 确认组是否被添加成功

groupmod -n newname xx → \to 改名

groupdel xx → \to 删除


关于用户的配置文件

/etc/passwd(配置当前系统有哪些用户,以及密码)

  • 用户名
  • 用户名密码标志,真正的密码在passwd的影子文件/etc/shadow
  • 用户id,即uid
  • 用户所属的组id,即gid
  • 全名
  • 家目录
  • 使用的shell

那什么是shell呢? → \to shell是用来解析命令,它接收用户命令,并调用对应程序执行。系统内置的有三种shell

  1. /bin/bashroot用户和初始用户的shell
  2. /usr/sbin/nologin
  3. /bin/sh(自己创建用户时的shell

查看当前系统的所有shell:在终端输入命令cat /etc/shells

/bin/sh
/bin/bash
/bin/rbash
/bin/dash

1和3的一个显著区别是:1有命令提示符(用户名@计算机名);而3则没有,且3不支持上下方向键和切换目录时没有提示。

那怎么将3修改成1呢? → \to chsh

/etc/group(配置当前系统有哪些用户组)

  • 组名
  • 组密码标志,真正的密码在passwd的影子文件/etc/gshadow
  • GID
  • 组中附加用户

关于内置命令和外置命令

当用户在终端输入命令并按下回车时,shell会接收到命令,并判断是内置命令/外置命令。若是内置命令,会直接启用内核中的系统功能调用;若是外置命令,则在系统中查找该命令的文件并调入内存执行,再去进行系统调用。

如何查看一个命令为内置/外置? → \to which 命令


如何查看用户信息及使用usermod修改用户组和shell

id/id xx → \to 查看id信息

whoami → \to 当前登录用户

user -g xxgroup xxuser → \to 修改初始组,但基本不会修改

usermod -G xxgroup,xxgroup xxuser → \to 修改附加组

usermod -s /bin/bash xxuser → \to 修改shell


文件权限的控制

linux系统中的文件分为几类:普通文件、目录文件、设备文件、符号链接文件

普通文件在shell下用ls查看时以-开头,常见的C程序文件、脚本文件、数据库文件都是普通文件

目录文件是一种特殊文件,可以构成文件系统的分层树形结构,在shell下用ls查看时以d开头

设备文件是一种特殊文件,有效的设备文件对应相应的设备,通过设备文件可以操作对应的硬件设备。设备文件包括字符设备和块设备文件。键盘、终端等都是字符设备文件,它们按照字符操作设备;磁盘、光盘等都是块设备文件,它们按照块为单位操作设备。Linux系统的设备文件都放在/dev目录下。第一个字符用b表示的是块设备,用c的是字符设备。

链接文件是一种特殊文件,提供对其他文件的参照,它的数据是所链接的文件的路径名。

九个字符三个为一组,一共有三组。例如:-rwxr-xr-x

第一组为该文件拥有者的权限:可读/写/执行

第二组为组成员的权限:可读/执行

第三组为其他用户的权限:可读/执行

文件夹的权限:

  • r → \to 列出目录中的内容(仅限于名字)
  • w → \to 可在目录中创建、删除文件
  • x → \to 可进入目录(不能查看目录内容)

什么是可执行文件?

windows下的exe(批处理命令/批处理脚本)一般用来启动某个应用程序;Linux下的shell脚本一般用来启动某个应用程序或服务程序。


怎么修改文件的权限?

请注意,只有文件所有者和超管才可以修改文件权限。使用命令chmod

格式一:chomd [ugo][+-=][rwx] 文件或者目录

例如,chmod u+w,g+x xx.txt

格式二:用数字表示权限,r=4 w=2, x=1

例如,chmod 444 126.txt


如何修改文件的所属者和所属组?

chown newuser 文件/文件夹 → \to 修改文件/文件夹的拥有者

chgrp newgroupname → \to 修改文件/文件夹的所属组

猜你喜欢

转载自blog.csdn.net/Star_ID/article/details/125858358
今日推荐