Linux基础命令

ls命令的讲解

ls -a 的选项

-a选项,表示:all的意思,即列出全部文件夹(包含隐藏的文件/文件夹)

  • 表示是Linux系统的隐藏文件/文件夹(只要以.开头的,就能自动隐藏)
  • 只有通过-a选项,才能看到这些隐藏文件/文件夹
ls -l选项

-l表示:以列表(竖向排列)的形式展示内容并展示更多内容

ls命令选项的组合使用
  • ls -l -a
  • ls -la
  • ls -al

上述三种写法,都是一样的,表示同时应用-l和-a的功能

ls命令的 -h选项
ls [-a -l -h] [Linux路径]
  • -h表示以阅读的形式,列出文件大小,如K、M、G
  • -h选项必须搭配-l一起使用

cd和pws命令

cd的切换命令使用
语法: cd [Linux路径]
  • cd命令无需选项,只有参数,表示要切到哪个目录下
  • cd命令直接执行,不写参数,表示回到用户的HOME目录
pwd查看当前工作目录
语法: pwd
  • pwd命令,无选项,无参数,直接输入pwd即可

相对路径、绝对路径和特殊路径符

绝对路径

  • 绝对路径:以根目录起点。描述路径的一种写法,路径描述以/开头
cd /home/xiaolu/Desktop

相对路径

  • 相对路径:以当前目录起点,描述路径的一种写法,路径描述无需以/开头
cd Desktop

特殊路径符

  • . 表示当前目录,比如cd ./Desktop 表示切换到当前目录下的Desktop目录内,和cd Desktop效果一致
  • .. 表示上一级目录,比如:cd .. 即可切换上一级目录,cd ../.. 切换到上二级目录
  • ~ 表示HOME目录,比如:cd ~ 即可切换到HOME目录下或cd ~ /Desktop,切换到HOME内的Desktop目录

创建目录命令(mkdir)

语法: mkdir [-p] [Linux路径]
  • 参数必填,表示Linux的路径,即创建的文件夹的路径,相对路径或绝对路径均可
  • -p选项可选,表示自动创建不存在的父目录,适用于创建连续多层级的目录
写法: mkdir -p itcast/good/666

文件操作命令part1(touch、cat、more)

touch创建文件

可以通过touch命令创建文件

语法: touch Linux路径

写法: touch test.txt
  • touch命令无选项,参数必填,表示要创建的文件路径,相对、绝对、特殊路径符均可使用

cat命令 查看文件内容(参数必填)

语法: cat Linux路径

写法: cat test.txt

more命令查看文件内容(参数必填)

more命令同样可以查看文件内容,同cat不同的是:

  • cat是直接将内容显示出来
  • more支持翻页,如果文件内容过多,可以一页页的展示
语法: more Linux路径

写法: more test.txt
  • 使用空格进行翻页,使用q退出查看

文件操作命令part2(cp、mv、rm)

cp命令复制文件文件夹

语法: cp [-r] 参数1 参数2

文件写法: cp test1.txt test2.txt

文件夹写法: cp -r itcast itcast2
  • -r选项,可选,用于复制文件夹使用,表示递归
  • 参数1,Linux路径,表示被复制的文件或者文件夹
  • 参数2,Linux路径,表示要复制去的地方

mv移动文件或文件夹

语法: mv 参数1 参数2

文件写法: mv test1.txt itcast/

改名写法: mv test1.txt test2.txt

文件夹写法: mv itcast Desktop/

rm删除文件、文件夹

rm命令可用于删除文件、文件夹

语法: rm [-r -f] 参数1 参数2......参数n
  • 同cp命令一样,-r选项用于删除文件夹
  • -f表示force,强制删除(不会弹出提示确认信息)
    • 普通用户删除内容不会弹出提示,只有root管理员用户删除内容才会有提示
    • 所以一般普通用户用不到-f选项
  • 参数1、参数2、…….、参数N表示要删除的文件或文件夹路径,按照空格隔开

rm删除文件、文件夹-通配符

rm命令支持通配符*,用来做迷糊匹配

  • 符号*表示通配符,即可任意匹配(包含空)
  • test*,表示匹配任何以test开头的内容
  • *test,表示匹配任合以test结尾的内容
  • *test *,表示匹配任何包含test的内容
写法1: rm -r test*

写法2: rm -r *test

写法3: rm -r *test*

如下命令,千万不要在root管理员用户下执行:

等同于在Windows上执行C盘格式化

rm -rf /
rm -rf *

查找命令(which、find)

which命令

我们可以通过which命令,查看所有使用的一系列命令的程序文件存放在哪里

语法: which 要查找的命令 

写法1: which cd
写法2: which pwd
写法3: which touch

find命令-按文件命查找文件

语法: find 起始路径 -name "被查找文件命"

写法1: find / -name "test" # 全盘搜索test

写法2: find etc -name "test" # 从etc下面搜索test

写法3: find / -name "*test" # 通配符使用

find命令-按照文件大小查找文件

语法: find 起始路径 -size + | -n[KMG]
  • +、-表示大于和小于
  • n表示数字大小
  • KMG表示大小单位,K(小写字母)表示kb,M表示MB,G表示GB

示例:

查找小于10KB的文件: find / -size -10k

查找大于100MB的文件: find / -size +100M

查找大于1GB的文件: find / -size +1G

grep、wc和管道符

grep命令

可以通过grep命令,从文件中通过关键字过滤文件行

语法: grep [-n] 关键字 文件路径

写法1: grep "itcast" test.txt

写法2: grep -n "itcast" test.txt # 显示行号
  • 选项-n,可选,表示在结果中显示匹配的行号。
  • 参数,关键字,必填,表示过滤的关键字,带有空格或其它特殊符号,建议使用 “ “ 将关键字包围起来
  • 参数,文件路径,必填,表示要过滤内容的文件路径,可作为内容输入端口

wc命令做数量统计

可以通过wc命令统计文件的行数、单纯数量等

语法: wc [-c -m -l -w] 文件路径
  • 选项,-c,统计bytes字节数量
  • 选项,-m,统计字符数量
  • 选项,-l,统计行数
  • 选项,-w,统计单词数量
  • 参数,文件路径,被统计的文件,可作为内容输入端口

管道符的使用

语法: cat 文件路径 | grep "关键字"

写法: cat test.txt | grep "itcast"

echo、tail和重定向符

echo命令

可以使用echo命令在命令行内输出指定内容

语法: echo 输出的内容

写法: echo "Hello Linux"

无需选项,只有一个参数,表示要输出的内容,复杂内容可以用 “ “ 包围

重定向符

  • “>”,将左侧命令的结果,覆盖写入到符号右侧指定的文件中
  • “>>”,将左侧命令的结果,追加到写入到符号的右侧指定文件中
写法1: echo "Hello Linux" > test.txt # 覆盖

写法2: echo "Hello itcast" # 追加

tail命令

使用tail命令,可以查看文件尾部内容,跟踪文件的最新更改

语法: tail [-f -num] Linux路径

写法1: tail -f test-txt

写法2: tail -5 test.txt # -num
  • 参数,Linux路径,表示被跟踪的文件路径
  • 选项,-f,表示持效跟踪
  • 选项,-num,表示,查看尾部多少行,默认10行

vi、vim编辑器

语法: vi 文件路径

语法: vim 文件路径
  • 如果文件路径表示的文件不存在,那么此命令用于编辑新文件
  • 如果文件路径表示文件存在,那么此命令用于编辑已有文件
  • 输入完后,按esc回退命令模式
  • 在底线命令输入:wq,保存文件并退出vi编辑器

命令快捷键

模式 命令 描述
命令模式 i 在当前光标位置进入输入模式
命令模式 a 在当前光标位置 之后进入 输入模式
命令模式 I 在当前行的开头,进入输入模式
命令模式 A 在当前行的结尾,进入输入模式
命令模式 o 在当前光标下一行进入输入模式
命令模式 O 在当前光标上一行进入输入模式
命令模式 esc 任何情况下输入esc都能回到命令模式
命令模式 键盘上、键盘k 向上移动光标
命令模式 键盘下、键盘j 向下移动光标
命令模式 键盘左、键盘h 向左移动光标
命令模式 键盘右、键盘l 向右移动光标
命令模式 0 移动光标到当前行的开头
命令模式 $ 移动光标到当前行的结尾
命令模式 pageup(PgUp) 向上翻页
命令模式 pangdown(PgDn) 向下翻页
命令模式 / 进入搜索模式
命令模式 n 向下继续搜索
命令模式 N 向上继续搜索
命令模式 dd 删掉光标所在行的内容
命令模式 ndd n是数字,表示删除当前光标向下的n行
命令模式 yy 复制当前行
命令模式 nyy n是数字,复制当前行和下面的n行
命令模式 p 粘贴复制内容
命令模式 u 撤销修改
命令模式 ctrl + r 反撤销修改
命令模式 gg 跳到首行
命令模式 G 跳到结尾
命令模式 dG 从当前行开始,向下全部删除
命令模式 dgg 从当前行开始,向上全部删除
命令模式 d$ 从当前光标开始,删除到本行的结尾
命令模式 d0 从当前光标开始,删除到本行的开头

底线命令模式

模式 命令 描述
底线命令模式 :wq 保存退出
底线命令模式 :q 仅退出不保存
底线命令模式 :!q 强制退出
底线命令模式 :w 仅保存
底线命令模式 :set nu 显示行号
底线命令模式 :set paste 设置粘贴模式

用户组管理

  • 创建用户组
groupadd # 用户组名
  • 删除用户组
groupdel # 用户组名

用户管理

  • 创建用户

useradd [-g -d]用户名

  • 选项:-g指定用户组,不指定-g,会创建同名组并自动加入,指定-g需要组已存在,如已存在同名组,必须使用-g
  • 选项:-d指定用户HOME路径,不指定,HOME目录默认在:/home/用户名
写法1: useradd test # 不指定

写法2: useradd test -g xiaolu -d /home/test2 # 指定用户组
  • 删除用户

userdel[-r]用户名

  • 选项:-r删除用户的HOME目录,不使用-r,删除用户时,home目录保留
写法1: userdel test
写法2: userdel -r test
  • 查看用户所属组

id[用户名]

  • 参数:用户名,被查看的用户,如果不提供则查看自身

  • 修改用户所属组

usermod-aG 用户组 用户名,将指定用户加入只当用户组

  • getent查询当前系统中有哪些用户

写法1: getent passwd # 查看系统全部用户信息

写法2: getent group # 查看系统全部组信息

共有7份信息,分别是:

用户名:密码(x):用户ID:组ID:描述信息(无用):HOME目录:执行终端(默认bash)

查看权限控制

所属用户权限

  • -表示文件
  • d表示文件夹
  • l表示软链接

权限意思

  • r:read可读取
  • w:write可写入
  • x:execute可执行

针对文件,文件夹的不同,rwx的含义有细微差别

  • r,针对文件可以查看文件内容
    • 针对文件夹,可以查看文件内容,如ls命令
  • w,针对文件表示可以修改文件
    • 针对文件夹,可以在文件夹内:创建、删除、改名等操作
  • x,针对文件表示可以将文件作为程序执行
    • 针对文件夹,可以表示更改工作目录到此文件夹,即cd进入

ls -l列出的权限信息如何解读

  • 序号1,表示文件、文件夹的权限控制信息

  • 序号2,表示文件、文件夹所属用户

  • 序号3,表示文件、文件夹所属用户组

修改权限控制 - chmod

我们可以使用chmod命令,修改文件、文件夹的权限信息。

注意,只有文件,文件夹的所属用户或root用户可以修改。

语法: chmod [-R] 权限 文件或文件夹
  • 选项:-R,对文件内的全部内容应用同样的操作

示例:

  • chmod u=rwx,g=rx,o=x hello.txt,将文件权限修改为:rwxr-x–x
    • 其中:u表示user所属用户权限,g表示group组权限,o表示other其它用户权限
  • chmod -R u=rwx,g=rx,o=x test,将文件夹test以及文件夹内全部内容权限设置为:rwxr-x–x

权限的数字序号

权限可以用3位数字来代表,第一位数字表示用户权限,第二位表示用户组权限,第三位表示其他用户权限。

数字的细节如下:r记为4,w记为2,x记为1,可以有:

  • 0:无任何权限,即 —
  • 1:仅有x权限,即 –x
  • 2:仅有w权限,即 -w-
  • 3有w和x权限,即 -wx
  • 4既有r权限,即 r–
  • 5有r和x权限,即 r-x
  • 6有r和w权限,即 rw-
  • 7有全部权限,即 rwx

chown

使用chown命令,可以修改文件、文件夹的所属用户和用户组

普通用户无法修改所属为其它用户或组,所以此命令只适用于root用户

语法: chown [-R] [用户] [:] [用户组] 文件或文件夹
  • 选项,-R,同chmod,对文件夹内全部内容应用相同规则
  • 选项,用户,修改所属用户
  • 选项,用户组,修改所属用户组
  • : 用于分割用户和用户组

示例:

  • chown root hello.txt,将hello.txt所属用户修改为root
  • chown :root hello.txt,将hello.txt所属用户组修改为root
  • chown root:itcast hello.txt,将hello.txt所属用户修改为root,用户组修改为itcast
  • chown -R root test,将文件夹test所属用户修改为root并对文件夹内全部内容应用同样规则

快捷键

历史命令搜索

history

光标移动快捷键

  • ctrl + a,跳到命令开头
  • ctrl + e,跳到命令结尾
  • ctrl + 键盘左键,向左跳一个单词
  • ctrl + 键盘右键,向右跳一个单词

软件安装

yum命令

yum:RPM软件管理器,用于自动化安装配置Linux软件,并可以自动解决依赖问题。

语法: yum [-y] [install] | remove | search 软件名称
  • 语法: yum [-y],自动确认,无需手动确认安装或卸载过程
  • install:安装
  • remove:卸载
  • search:搜索

yum命令需要root权限,可以su切换到root下,或者使用sudo提权。

yum命令需要联网

通过yum命令安装wget程序

yum install wget

如果安装报错了输入这条命令试一下

curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

Ubuntu安装

语法: apt [-y] [install] | remove | search 软件名称

systemctl命令

Linux系统很多软件(内置或第三方)均支持使用systemcrtl命令控制:启动、停止、开机自启

能够被systemctl管理的软件,一般也称之为:服务

语法: systemctl start | stop | status | enable | disable 服务名称
  • start:启动
  • stop:停止
  • status:查看状态
  • enable:开启开机自启
  • disable:关闭开机自启

系统内置的服务比较多,比如:

  • NetworkManager,主网络服务
  • network,副网络服务
  • firewalld,防火墙服务
  • sshd,shh服务(FinalShell远程登陆Linux使用的就是这个服务)

掌握使用ln命令创建软链接

在系统中创建软链接,可以讲文件、文件夹链接到其他位置

语法: ln -s 参数1 参数2
  • -s选项,创建软链接
  • 参数1:被链接的文件或者文件夹
  • 参数2:要链接去的目的地

示例:

  • ln -s /etc/yum.conf ~/yum.conf
  • ln -s /etc/yum ~/yum

日期和时区

通过date命令可以在命令行中查看系统的时间

语法:date [-d] [+格式化字符串]
  • -d按照给定的字符串显示日期,一般用于日期计算
  • 格式化字符串:通过特定的字符串标记,来控制显示的日期格式
    • %Y 年
    • %y 年份后两位数(00..99)
    • %m 月份(01..02)
    • %d 日(01..31)
    • %H 小时(00.23)
    • %M 分钟(00.59)
    • %S 秒(00.60)
    • %s 自 1970-01-01 00:00:00 UTC 到现在的秒数

使用root权限,执行如下命令,修改时区喂东八区时区

rm -f /etc/localtime 
sudo ln -s /usr/share/zoneinfo/Asia/Guangxi /etc/localtime

讲系统自带的localtime文件删除,并将/usr/share/zoneinfo/Asia/Guangxi文件链接到localtime文件即可

ntp程序

可以通过mtp程序自动校准系统时间

安装ntp:yum -y install ntp

启动并设置开机自启

  • systemctl start ntpd
  • systemctl enable ntpd

当ntpd启动后定期的帮助我们联网校准系统的时间

也可以手动校准(需要root权限):ntpdate -u ntp.aliyun.com

IP地址、主机名

可以使用命令:hostname查看主机名

hostname

可以使用命令:hostnamectl set-hostname (主机名),修改主机名(需要root权限)

hostnamectl set-hostname 主机名