linux

linux路径的描述方式

1
2
3
4
1、在linux系统中没有盘符的概念,只有一个根目录/(斜杠),所有的文件都在它下面
2、在linux系统中层次关系使用/来表示,Windows使用\来表示
比如说/根目录下面的usr文件夹下的local文件夹中的hello.txt表示路径为/usr/local/hello.txt,第一个反斜杠表示根目录,后面的/表示层级关系
3、

linux命令基础

什么是命令、命令行

学习linux,本质上是学习在命令行下熟练的使用linux的各项命令

1
2
命令行:即linux终端,是一种命令提示符页面。以纯字符的形式操作系统,可以使用各种字符化命令对系统发出操作指令。
命令:即linux程序。一个命令就是一个linux的程序。命令没有图形化界面,可以在命令行提供字符化的反馈

linux命令的通用格式

1
2
3
4
5
command [-options] [parameter] 
commmand:命令本身 -options:[可选,非必填]命令的一些选项,控制命令的一些行为细节
parameter:[可选,非必填]命令的参数,多数用于命令的指向目标等 语法中[]表示可选
实例:ls -l /home/itheima,ls是命令本身,-l是选项,/home/itheima是参数
意思是以列表的形式,显示/home/itheima目录内的内容

ls命令入门

ls命令的作用是列出目录下的内容,语法细节如下:

1
2
3
4
5
6
ls [-a -l -h] [linux路径]
当不使用选项和参数,直接使用ls命令本体,表示:以平铺形式,列出当前工作目录下的内容
当前工作目录:linux系统的命令行终端,在启动时默认加载:
1、当前登录用户的HOME目录作为当前工作目录,所以ls命令列出的时HOME目录的内容
HOME目录:每个linux用户在linux操作系统的个人账户目录,路径:/home/用户名

ls命令的参数和选项

参数:指定一个linux路径,列出此路径下的内容
选项:

1
2
3
-a:表示all的意思,即列出全部文件(包含隐藏文件/文件夹)
-l:表示以列表的形式展示内容,并展示更多信息
-h:需要和-l选项搭配使用,可以在列表中文件大小一栏显示单位


1、图中以.开头的,表示linux系统的隐藏文件/文件夹(只要以.开头,就能自动隐藏)
2、只有通过-a选项,才能看到这些隐藏文件/文件夹
注意:选项可以组合使用,如-la、-al、-l -a都是一样的

cd 切换工作目录

当Linux终端打开的时候,会默认以用户的HOME目录作为当前的工作目录
cd(change directory)

1
2
3
语法:cd[linux路径]
cd无需选项,只有参数,表示要切换到哪个目录下
cd命令直接执行,不写参数,表示回到用户的HOME目录

pwd

查看当前工作目录

相对路径和绝对路径

1
2
绝对路径:以根目录为起点,描述路径的一种写法,路径描述以/开头
相对路径: 以当前目录为起点,描述路径的一种写法,路径描述无需以/开头

特殊路径符

1
2
3
. 表示当前目录,比如cd./desktop表示切换到当前目录下的desktop目录内,和cd desktop效果一样
..表示上一级目录,比如:cd ..退回上一级 cd ../.. 退回上两级
~ 表示HOME目录 cd ~ <=>cd

eg:在当前目录的上级目录有一个test文件夹,文件夹内有一个文件hello.txt
相对路径为:../test/hello.txt

mkdir命令

通过mkdir命令可以创建新的目录(文件夹)
mkdir(make directory)

1
2
3
语法:mkdir [-p] linux路径
参数必填,表示创建文件夹的路径,相对路径和绝对路径均可
-p选项可选,表示自动创建不存在的父目录,适用于创建连续多层级的目录

eg:mkdir -p itcast/good/666 创建了三层级文件夹
注意:创建文件夹需要修改权限,请确保均在HOME目录内,不要在HOME目录外操作
涉及到权限问题,HOME外无法成功

touch 创建文件

1
2
touch linux路径
参数表示创建的文件路径,记得写要创建的文件后缀

cat和more命令

两者都是查看文件命令,但more支持翻页,使用空格翻页,使用q退出
语法:more/cat linux路径

cp复制文件/文件夹

cp命令来自英文copy

1
2
3
4
语法:cp [-r] 参数1 参数2
-r选项,可选,用于复制文件夹使用,表示递归
参数1,linux路径,表示被复制的文件或文件夹
参数2,linux路径,表示要复制去的地方

mv移动文件或文件夹

1
2
语法:mv 参数1 参数2
1表示要移动的,2表示移动到的地方,如果目标不存在则进行改名,确保目标存在

eg:mv test1.txt test2.txt 改名

rm删除文件、文件夹

rm(remove)

1
2
3
4
语法:rm [-r -f] 参数1 参数2 ...
-r适用于删除文件夹
-f表示force,强制删除(不会弹出确认信息)
参数表示要删除的文件或文件夹路径,用空格隔开

Vim编辑器

linux下常用的文本编辑器有Vim、gVim、gedit
在终端输入vim启动

Vim有三种工作模式

  • 普通模式:默认进入是普通模式,可以在冒号后面输入命令,如:wp,保存并退出
  • 插入模式:在普通模式下,按i或者a进入,可以编辑文本内容
  • 可视模式:在普通模式下按v进入,按ESC退出

保存与打开文件
保存文件的命令是:w,打开文件的命令是:r
比如写入这样一段话:

1
2
good moring everyone !
I am learning vim !

编辑完按ESC退回普通模式,这时输入下面的命令,将文件保存到/home/linux/文件夹下,命名为vim1.txt

:w /home/linux/vim1.txt

Vim会显示下面的提示信息:
“~/vim1.txt” [新] 3L ,48C已写入
表示新建了文件vim1.txt,文件有3行,48个字符
如果再次以同样的名字保存文件会提示:
E13:File exists (add ! to override)
这时我们可以在w后面加!来覆盖以前的文件:

:w! /home/linux/vim1.txt

按ESC退回,输入:wq命令退出(:q!可以在不保存的情况下退出)
查看文件命令:

:-r /home/linux/vim1.txt

也可以直接在终端输入:

/home/linux/vim1.txt

回退
.(英文):重复上一次修改
u:取消上一次修改
U:将当前行回复到修改前的状态
U命令会一次撤销对一行的全部操作,第二次使用U会撤销前一个U命令的操作,u或.同理
以上是Vim的一些基础操作

关于shell

shell有多种版本,我们常见到的版本是bash
命令通配符

  • :匹配任何字符和字符串,包括空字符串
    ?:匹配任意一个字符。比如?abc。可以匹配任何以abc结尾,以任意字符开头的4个字符
    []:匹配括号里的任意单字符。比如abc[def],可以匹配以abc开头以def中任意一个字符结尾的字符串

shell程序的基本结构

1
2
3
#! /bin/bash
#hello
echo 'hello Linux'

1、所有的shell程序第一行都是以#!开头,后面跟执行shell程序的shell解释器目录与名称。系统默认的shell解释器是bash
2、程序的第二行以注释的形式写出程序的名称
3、只有添加了可执行权限后才可以执行
chmod +x 文件名
如果将文件保存在用户主目录下,只需要在终端输入./文件名,就可以运行
运行结果: hello Linux

变量
在shell程序中的变量分为局部变量、环境变量、位置变量

局部变量
Shell语言是解释型语言,不用事先声明变量,一对变量赋值就等于定义了变量。局部变量是指只在当前程序中有效
shell变量是无类型的,可以存放不同类型的数据,访问变量只需要在变量前面加$
ps:对没有空格的字符串赋值可以不用引号,但如果有空格也没加引号就会报错

环境变量
环境变量是在一个用户的所有进程中都可以访问的变量。在系统中常常使用环境变量来存储常用的信息

位置变量
位置变量是指shell程序在运行时传入的参数,在程序中可以以变量的形式来调用。这些参数被存放在1~9个变量名中,与普通变量一样在变量前加$来访问。

在位置变量中,$0的值为bash;$1开是输入参数
比如:

1
2
3
4
#! /bin/bash
#3.sh
echo $1;
echo $2;

那么在保存和添加执行权限后在终端输入

./3.sh hello linux

运行结果是:
hello
linux

反引号
反引号用于执行引号中的系统命令,然后将命令的执行结果返回

1
2
A=`ls`
结果:01.c 02.c 1.sh 2.sh

字符串中不能直接使用$、单引号、双引号、反斜线、反引号等特殊字符,需要\转义

多命令执行

; 顺次执行命令
| 前一个命令执行结果的标准输出传递给后面进行执行,即作为后面命令的标准输入
|| 如果1执行成功则不执行2;如果1失败则执行2
&& 1成功则继续执行2;1不成功则不执行2

这也就解释了为什么grep前面要加|

Linux文件系统

Linux文件系统的组织方式
Linux文件系统的组织方式称为文件系统分层标准(FHS),即采用层次式的树状目录结构

目录名称 说明
/ Linux文件系统的最上层根目录,其他所有目录均是该目录的子目录
/bin Binary的缩写,存放用户的可执行程序,如cp和mv等:也存放Shell,如bash和csh
/boot 操作系统启动时所需的文件,包括vmlinuz和initrd.img等。若这些文件损坏,则会导致系统无法正常启动,因此最好不要任意改动
/dev 设备文件目录,例如/dev/sda 表示第一块sCsI设备,/dev/hda 表示第一块IDE设备
/etc 有关系统设置与管理的文件,包括密码、守护程序及与X-Window 相关的配置。可以通过编辑器(如Vi、gedit 等)打开并编辑相关的配置文件
/etc/X11 X-Window System的配置目录
/home 普通用户的主目录或FTP站点目录,一般存放在/home 目录下
/lib 存放共享函数库(Library)
/mnt 文件系统挂载点(Mount),例如光盘的挂载点可以是/mnt/cdrom,软盘的挂载点可以是/mnt/floppy,Zip驱动器为/mnt/zip
/opt 该目录通常提供给较大型的第三方应用程序使用,如Sun Sarfice. Corel WordPerfect,可避免将文件分散至整个文件系统
/proc 保存目前系统内核与程序执行的相关信息,和利用ps命令看到的内容相同。例如,/proc/interruptsp文件保存了当前分配的中断请求端口号,/proc/cpuinfo保存了当前处理器信息
/root 根用户的主目录
/sbin System Binary的缩写。此目录存放的是系统启动时所需执行的系统程序
/tmp Temporary的缩写,用来存放临时文件的目录
usr 存放用户使用的系统命令和应用程序
/usr/bin 存放用户可执行的程序,如Openffice的可执行程序
/usr/doc 存放各种文档的目录
/usr/include 存放C语言用到的头文件
/usr/include/X11 存放x-Window程序使用的头文件
/usr/info 存放GNU文档的目录

Linux文件和目录常用通配符

通配符 说明
* 用来代表文件中任意长度的任意字符
? 用来代表文件中的任意一个字符
[…] 匹配任意一个在中括号中的字符,中括号中可以是个用破折号格式表示的字母或数字范围
前导字符串{…}后继字符串 大括号中的字符串逐一匹配前导字符串和后继字符串

[]{}中的字符用,隔开
着重介绍一下{}

1
2
#ls -l c{ar,an,at}s
列出car、cans、cats

文件内容查询命令——grep

该命令在文件中搜索指定的字符串模式,列出含有匹配模式字符串的文件名和输出含有该字符串的文本行
命令格式:

grep [选项] [查找模式] [文件名]
-F:将查找模式看作单纯的字符串
-i:要查找的字符串不区分字母的大小写
-r:以递归方式查询目录下的所有子目录的文件
-n:标出包含指定字符串的行编号

另外:grep可以直接处理一些命令(如ls、ps)的输出,比如在当前运行的进程中查找vi程序的进程信息:

#ps aux | grep vi