Linux基础命令
二、Linux基础命令
2.1 Linux的目录结构
-
Linux操作系统的目录结构
- Linux只有一个顶级目录,称之为:根目录;
- Windows系统有多个顶级目录,即各个盘符。
-
/
在Linux系统中表示- 出现在开头,表示根目录;
- 出现在后面的,表示层次关系。
2.2 Linux命令入门
2.2.1 Linux命令基础
什么是命令、命令行?
- 命令:即Linux操作指令,是系统内置的程序,可以以字符化的形式去使用;
- 命令行:即Linux终端,可以提供字符化的操作页面供命令执行。
Linux命令的通用格式?
command [-options] [parameter]
- 命令本体,即命令本身;
- 可选选项,控制命令的行为细节;
- 可选参数,控制命令的指向目标。
语法中的[],表示可选的意思
2.2.2 ls命令入门
语法:
# 列出目录下的内容(文件/文件夹)
ls [-a -l -h] [Linux路径]
-
ls
,不使用可选项和参数,直接使用ls
命令本体,表示:以平铺的形式,列出当前工作目录下的内容[mingdajiang@192 ~]$ ls Desktop Documents Downloads Music Pictures Public Templates Videos
-
ls -a
,列出全部文件(包含隐藏的文件/文件夹)# 以.开头的,表示是Linux系统的隐藏文件/文件夹 [mingdajiang@192 ~]$ ls -a . .bash_history .bash_profile .cache .dbus Documents .esd_auth .local Music Public Videos .. .bash_logout .bashrc .config Desktop Downloads .ICEauthority .mozilla Pictures Templates [mingdajiang@192 ~]$
-
ls -l
,以列表(竖向排列)的形式展示内容,显示更多信息[mingdajiang@192 ~]$ ls -l 总用量 0 drwxr-xr-x. 2 mingdajiang mingdajiang 6 9月 8 18:36 Desktop drwxr-xr-x. 2 mingdajiang mingdajiang 6 9月 8 18:36 Documents drwxr-xr-x. 2 mingdajiang mingdajiang 6 9月 8 18:36 Downloads drwxr-xr-x. 2 mingdajiang mingdajiang 6 9月 8 18:36 Music drwxr-xr-x. 2 mingdajiang mingdajiang 6 9月 8 18:36 Pictures drwxr-xr-x. 2 mingdajiang mingdajiang 6 9月 8 18:36 Public drwxr-xr-x. 2 mingdajiang mingdajiang 6 9月 8 18:36 Templates drwxr-xr-x. 2 mingdajiang mingdajiang 6 9月 8 18:36 Videos [mingdajiang@192 ~]$
-
语法中的选项和参数可组合使用:
ls -l -a
/ls -a -l
/ls -la
/ls -al
,表示同时应用-a
和-l
的功能 -
ls -h
,以易于阅读的形式,列出文件的大小,如K/M/G;-h
必须搭配-l
使用:ls -lh
[mingdajiang@192 ~]$ ls -lh / 总用量 24K lrwxrwxrwx. 1 root root 7 9月 8 08:55 bin -> usr/bin dr-xr-xr-x. 5 root root 4.0K 9月 8 09:17 boot drwxr-xr-x. 19 root root 3.2K 9月 11 07:59 dev drwxr-xr-x. 143 root root 8.0K 9月 11 07:59 etc drwxr-xr-x. 3 root root 25 9月 8 09:17 home lrwxrwxrwx. 1 root root 7 9月 8 08:55 lib -> usr/lib lrwxrwxrwx. 1 root root 9 9月 8 08:55 lib64 -> usr/lib64 drwxr-xr-x. 2 root root 6 4月 10 2018 media drwxr-xr-x. 2 root root 6 4月 10 2018 mnt drwxr-xr-x. 3 root root 16 9月 8 09:04 opt dr-xr-xr-x. 181 root root 0 9月 11 07:59 proc dr-xr-x---. 3 root root 151 9月 8 09:18 root drwxr-xr-x. 41 root root 1.3K 9月 11 08:00 run lrwxrwxrwx. 1 root root 8 9月 8 08:55 sbin -> usr/sbin drwxr-xr-x. 2 root root 6 4月 10 2018 srv dr-xr-xr-x. 13 root root 0 9月 11 07:59 sys drwxrwxrwt. 23 root root 4.0K 9月 11 08:22 tmp drwxr-xr-x. 13 root root 155 9月 8 08:55 usr drwxr-xr-x. 21 root root 4.0K 9月 8 09:17 var [mingdajiang@192 ~]$
2.2.3 home目录和工作目录
home目录?
每个Linux操作用户在Linux系统的个人账户目录,路径是/home/用户名。Linux系统的命令行终端,在启动的时候,默认会加载。
[mingdajiang@192 ~]$ pwd
/home/mingdajiang
工作目录?
Linux命令行在执行命令的时候,需要一个工作目录,打开命令行程序(终端),默认设置的工作目录在用户的home目录。
2.3 cd/pwd
2.3.1 cd
源于Change Directory
语法:
# 切换工作目录
cd [Linux路径]
-
cd命令无需选项,只有参数,表示切换到那个目录下
[mingdajiang@192 ~]$ cd Music/ [mingdajiang@192 Music]$
-
cd命令直接执行,不写参数,表示回到用户的home目录
[mingdajiang@192 Music]$ cd [mingdajiang@192 ~]$ pwd /home/mingdajiang [mingdajiang@192 ~]$
2.3.2 pwd
源于Print Work Directory
语法:
# 查看当前工作目录
pwd
-
无选项、无参数,直接使用
[mingdajiang@192 ~]$ cd / [mingdajiang@192 /]$ pwd /
2.4 相对路径/绝对路径/特殊路径符
2.4.1 相对路径/绝对路径
绝对路径:以根目录为起点,描述路径的一种写法,路径描述以/开头
相对路径:以当前目录为起点,描述路径的一种写法,路径描述无需以/开头
如我们现在的工作目录是
[mingdajiang@192 /]$ pwd
/
[mingdajiang@192 /]$ ls
bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
[mingdajiang@192 /]$
需要切换到home目录下
-
# 绝对路径 [mingdajiang@192 /]$ cd /home/ [mingdajiang@192 home]$ pwd /home [mingdajiang@192 home]$
-
# 相对路径 [mingdajiang@192 /]$ cd home/ [mingdajiang@192 home]$ pwd /home [mingdajiang@192 home]$
2.4.2 特殊路径符
.
表示当前目录,比如 cd ./Desktop 表示切换到当前目录下的Desktop目录内,和cd Desktop效果一致..
表示上一级目录,比如:cd … 即可切换到上一级目录,cd …/… 切换到上二级的目录~
表示HOME目录,比如:cd ~ 即可切换到HOME目录或cd ~/Desktop,切换到HOME内的Desktop目录
2.5 mkdir
源于Make Directory
语法:
# 创建新的目录(文件夹)
mkdir [-p] Linux路径
-
Linux路径必填,表示要创建的文件夹的路径,相对路径/绝对路径都可
[mingdajiang@192 ~]$ ls Desktop Documents Downloads Music Pictures Public Templates Videos [mingdajiang@192 ~]$ mkdir test1 [mingdajiang@192 ~]$ ls Desktop Documents Downloads Music Pictures Public Templates test1 Videos [mingdajiang@192 ~]$
-
-p可选,可以自动创建不存在的父目录,即创建连续多层级的目录
[mingdajiang@192 ~]$ mkdir -p /home/mingdajiang/test1/a/b [mingdajiang@192 ~]$ ls /home/mingdajiang/test1/a b [mingdajiang@192 ~]$
2.6 文件操作命令
2.6.1 touch
语法:
# 创建文件
touch Linux路径
-
无可选项,Linux路径必填,表示要创建的文件路径,相对路径/绝对路径/特殊路径符均可使用
[mingdajiang@192 ~]$ ls Desktop Documents Downloads Music Pictures Public Templates test1 Videos [mingdajiang@192 ~]$ touch test.txt [mingdajiang@192 ~]$ ls Desktop Documents Downloads Music Pictures Public Templates test1 test.txt Videos [mingdajiang@192 ~]$
2.6.2 cat
语法:
# 查看文件内容
cat Linux路径
-
没有可选项,Linux路径必填,表示被查看文件的路径,相对路径/绝对路径/特殊路径符均可用
[mingdajiang@192 ~]$ cat test.txt 12345 [mingdajiang@192 ~]$
2.6.3 more
语法:
# 查看文件内容,可翻页查看
more Linux路径
-
没有可选项,Linux路径必填,表示被查看文件的路径,相对路径/绝对路径/特殊路径符均可用
# 回车键,下一行 # 空格键,翻页 # Q/ctrl+C退出 [mingdajiang@192 ~]$ more /etc/services
2.6.4 cp
源于 copy
语法:
# 复制文件/文件夹
cp [-r] 参数1 参数2
- -r 选项,可选,用于复制文件夹使用,表示递归(复制文件夹必须使用 -r)
- 参数1,Linux路径,表示被复制的文件或文件夹
- 参数2,Linux路径,表示要复制去的路径
[mingdajiang@192 ~]$ cp test.txt test1
[mingdajiang@192 ~]$ ls test1
a test.txt
[mingdajiang@192 ~]$
2.6.5 mv
源于 move
语法:
# 移动文件/文件夹
mv 参数1 参数2
-
参数1,Linux路径,表示被移动的文件或文件夹
-
参数2,Linux路径,表示要移动去的路径,如果目标不存在,则进行改名
[mingdajiang@192 ~]$ ls Desktop Documents Downloads Music Pictures Public Templates test.txt Videos [mingdajiang@192 ~]$ mv test.txt t.txt [mingdajiang@192 ~]$ ls Desktop Documents Downloads Music Pictures Public Templates t.txt Videos [mingdajiang@192 ~]$
2.6.6 rm
源于 remove
语法:
# 删除文件/文件夹
rm [-r -f] 参数1 参数2......参数N
- -r,用于删除文件夹
- -f,表示force,强制删除(不会弹出提示确认信息)
- 普通用户删除内容不会弹出提示,只有root管理员用户删除内容会有提示
- 所以一般普通用户用不到 -f 选项
- 参数1,参数2…参数N表示要删除的文件夹/文件路径,空格隔开
- 使用通配符做模糊匹配删除
- 符号==*==,匹配任意内容,包含空
- 如
test*
,表示匹配任何以test开头的内容 - 如
*test
,表示匹配任何以test结尾的内容 - 如
*test*
,表示匹配任何包含test的内容
- 如
- 符号==*==,匹配任意内容,包含空
[mingdajiang@192 ~]$ ls
Desktop Documents Downloads Music Pictures Public Templates test Videos
[mingdajiang@192 ~]$ ls test/
t1.txt t2.txt t3.txt
[mingdajiang@192 ~]$ rm -r test/
[mingdajiang@192 ~]$ ls
Desktop Documents Downloads Music Pictures Public Templates Videos
[mingdajiang@192 ~]$
注意1:
# su - root 切换到root用户
[mingdajiang@192 ~]$ su - root
密码:
# 退出
[root@192 ~]# exit
logout
[mingdajiang@192 ~]$
注意2:
rm是一个非常危险的命令!
以下命令万万不可在root管理员用户下执行:
rm -rf /
rm -rf /*
就相当于Windows的C盘格式化!!!
2.7 which、find
2.7.1 which
Linux命令,本体就是一个个的二进制可执行程序
语法:
# 查看命令的程序文件存放在哪
which 要查找的命令
[mingdajiang@192 ~]$ which ls
alias ls='ls --color=auto'
/usr/bin/ls
[mingdajiang@192 ~]$
2.7.2 find
按文件名查找文件
语法:
# 在指定目录下搜索指定文件
find 起始路径 -name "被查找的文件名"
[root@192 ~]# find / -name "test"
find: ‘/proc/45702’: No such file or directory
find: ‘/proc/45716’: No such file or directory
find: ‘/run/user/1000/gvfs’: Permission denied
/usr/bin/test
/usr/lib/modules/3.10.0-957.el7.x86_64/kernel/drivers/ntb/test
/usr/lib/alsa/init/test
/usr/lib64/python2.7/test
/usr/lib64/python2.7/unittest/test
/usr/share/espeak-data/voices/test
/usr/src/kernels/3.10.0-957.el7.x86_64/drivers/ntb/test
/usr/src/kernels/3.10.0-957.el7.x86_64/include/config/test
/usr/src/kernels/3.10.0-957.el7.x86_64/lib/raid6/test
[root@192 ~]#
使用通配符查找文件
test*
,表示匹配任何以test开头的内容*test
,表示匹配任何以test结尾的内容*test*
,表示匹配任何包含test的内容
[root@192 ~]# find / -name "*test"
find: ‘/proc/49838’: No such file or directory
find: ‘/proc/49852’: No such file or directory
find: ‘/run/user/1000/gvfs’: Permission denied
/sys/power/pm_test
/sys/module/8250/parameters/skip_txen_test
/sys/module/sr_mod/parameters/xa_test
/usr/bin/test
按文件大小查找文件
语法:
# 按照文件大小搜索文件
find 起始路径 -size +|-n[kMG]
- +/-,表示大于/小于
- n,表示大小数字
- kMG表示大小单位,k(小写)表示kb,M表示MB,G表示GB
[root@192 ~]# find / -size +100M
/proc/kcore
find: ‘/proc/62845’: No such file or directory
find: ‘/proc/62859’: No such file or directory
find: ‘/proc/62892/task/62892/fd/5’: No such file or directory
find: ‘/proc/62892/task/62892/fdinfo/5’: No such file or directory
find: ‘/proc/62892/fd/6’: No such file or directory
find: ‘/proc/62892/fdinfo/6’: No such file or directory
find: ‘/run/user/1000/gvfs’: Permission denied
/sys/devices/pci0000:00/0000:00:0f.0/resource1_wc
/sys/devices/pci0000:00/0000:00:0f.0/resource1
/var/lib/rpm/Packages
/var/cache/yum/x86_64/7/updates/gen/primary_db.sqlite
/var/cache/yum/x86_64/7/updates/gen/filelists_db.sqlite
/var/cache/yum/x86_64/7/updates/packages/firefox-102.14.0-3.el7.centos.x86_64.rpm
/usr/lib/locale/locale-archive
[root@192 ~]#
2.8 grep、wc、管道符
2.8.1 grep
语法:
# 从文件中通过关键字过滤文件行
grep [-n] 关键字 文件路径
- -n,可选,表示在结果中显示匹配的行的行号
- 关键字,必填,表示过滤的关键字,带有空格或特殊符号时,建议使用
""
将关键字包围 - 文件路径,必填,表示要过滤内容的文件路径,可作为管道符的输入
[mingdajiang@192 ~]$ cat test.txt
Hello World!
linux
windows
java python c go
[mingdajiang@192 ~]$ grep -n c test.txt
4:java python c go
[mingdajiang@192 ~]$
2.8.2 wc
语法:
# 统计文件行数、单词数量
wc [-c -m -l -w] 文件路径
-
不带可选项,显示的分别是:行数、单词数、字节数
[mingdajiang@192 ~]$ cat test.txt Hello World! linux windows java python c go [mingdajiang@192 ~]$ wc test.txt 4 8 44 test.txt [mingdajiang@192 ~]$
-
-c,可选,统计bytes数量
[mingdajiang@192 ~]$ wc -c test.txt 44 test.txt [mingdajiang@192 ~]$
-
-m,可选,统计字符数量
[mingdajiang@192 ~]$ wc -m test.txt 44 test.txt [mingdajiang@192 ~]$
-
-l,可选,统计行数
[mingdajiang@192 ~]$ wc -l test.txt 4 test.txt [mingdajiang@192 ~]$
-
-w,可选,统计单词数量
[mingdajiang@192 ~]$ wc -w test.txt 8 test.txt [mingdajiang@192 ~]$
-
文件路径,表示被统计的文件,可作为管道符的输入
2.8.3 管道符
管道符:|
,将管道符左边命令的结果,作为右边命令的输入
[mingdajiang@192 ~]$ cat test.txt
Hello World!
linux
windows
java python c go
[mingdajiang@192 ~]$ cat test.txt | grep -n pyth
4:java python c go
[mingdajiang@192 ~]$
2.9 echo、tail、重定向符
2.9.1 echo
语法:
# 在命令行输出指定内容
echo 输出的内容
- 无需选项,直接跟输出的内容,复杂内容可以用
""
包围
[mingdajiang@192 ~]$ echo "fjoeihfddzkxjnc jZSD dad"
fjoeihfddzkxjnc jZSD dad
[mingdajiang@192 ~]$
反引号==``==
被其包围的内容,会被作为命令执行
[mingdajiang@192 ~]$ echo `pwd`
/home/mingdajiang
[mingdajiang@192 ~]$
2.9.2 重定向符
>
,将左侧命令的结果,覆盖写入到符号右侧指定的文件中>>
,将左侧命令的结果,追加写入到符号右侧指定的文件中
[mingdajiang@192 ~]$ echo "hello linux" > test.txt
[mingdajiang@192 ~]$ cat test.txt
hello linux
[mingdajiang@192 ~]$ echo "windows" >> test.txt
[mingdajiang@192 ~]$ cat test.txt
hello linux
windows
[mingdajiang@192 ~]$
2.9.3 tail
语法:
# 查看文件尾部内容,跟踪文件的最新更改
tail [-f -num] Linux路径
- -f,表示持续跟踪
- -num,表示查看尾部多少行,不写默认10行
- Linux路径,表示被跟踪的文件路径
窗口1:
[mingdajiang@192 ~]$ tail -f test.txt
hello linux
windows
窗口2:
[mingdajiang@192 ~]$ ls >> test.txt
[mingdajiang@192 ~]$
窗口1:
[mingdajiang@192 ~]$ tail -f test.txt
hello linux
windows
Desktop
Documents
Downloads
Music
Pictures
Public
Templates
test.txt
Videos
2.10 vi编辑器
vi\vim是visual interface的简称, 是Linux中最经典的文本编辑器
vim 是 vi 的加强版本,兼容 vi 的所有指令,不仅能编辑文本,而且还具有 shell 程序编辑的功能,可以不同颜色的字体来辨别语法的正确性,极大方便了程序的设计和编辑性。
vi/vim编辑器的三种工作模式:
-
命令模式(Command mode)
命令模式下,所敲的按键编辑器都理解为命令,以命令驱动执行不同的功能。此模式下,不能自由进行文本编辑。
-
输入模式(Insert mode)
编辑模式、插入模式。此模式下,可以对文件内容进行自由编辑。
-
底线命令模式(Last line mode)
以:开始,通常用于文件的保存、退出。
命令模式
语法:
# 编辑文件,vim兼容vi的全部功能
vi 文件路径
vim 文件路径
- 如果文件路径不存在,则编辑新文件
- 如果文件路径存在,则编辑已有文件
步骤:
- vim 文件路径,编辑文件,执行后进入命令模式
- 键盘
i
键,进入输入模式 - 输入完成,按
esc
键退回命令模式 - 在命令模式内,按
:
键,进入底线命令模式 - 在底线命令模式内,输入
wq
,保存并退出vi编辑器
常用快捷键:
模式 | 快捷键 | 描述 |
---|---|---|
命令模式 | i | 在当前光标位置进入输入模式 |
命令模式 | a | 在当前光标位置 之后 进入输入模式 |
命令模式 | I | 在当前行的开头进入输入模式 |
命令模式 | A | 在当前行的结尾进入输入模式 |
命令模式 | o | 在当前光标下一行进入输入模式 |
命令模式 | O | 在当前光标上一行进入输入模式 |
命令模式 | esc | 任何情况输入esc都能回到命令模式 |
命令模式 | 键盘上、键盘k | 向上移动光标 |
命令模式 | 键盘下、键盘j | 向下移动光标 |
命令模式 | 键盘左、键盘h | 向左移动光标 |
命令模式 | 键盘右,键盘l | 向右移动光标 |
命令模式 | 0 | 移动光标到当前行开头 |
命令模式 | $ | 移动光标到当前行结尾 |
命令模式 | pageup | 向上翻页 |
命令模式 | pagedown | 向下翻页 |
命令模式 | / | 进入搜索 |
命令模式 | n | 向下继续搜索 |
命令模式 | N | 向上继续搜索 |
命令模式 | dd | 删除光标所在行的内容 |
命令模式 | ndd | 删除当前光标向下n行 |
命令模式 | yy | 复制当前行 |
命令模式 | nyy | 复制当前行和向下n行 |
命令模式 | p | 粘贴复制的内容 |
命令模式 | u | 撤销修改 |
命令模式 | Ctrl+r | 反撤销 |
命令模式 | gg | 跳到首行 |
命令模式 | G | 跳到行位 |
命令模式 | dG | 当前行开始,向下全部删除 |
命令模式 | dgg | 当前行开始,向上全部删除 |
命令模式 | d$ | 当前光标开始,删除到本行结尾 |
命令模式 | d0 | 当前光标开始,删除到本行开头 |
底线命令模式 | :w | 仅保存 |
底线命令模式 | :wq | 保存并退出 |
底线命令模式 | :q | 仅退出 |
底线命令模式 | :q! | 强制退出 |
底线命令模式 | :set nu | 显示行号 |
底线命令模式 | :set paste | 设置粘贴模式 |
命令 --help 查看指定命令帮助
man 命令 查看指定命令手册