linux路径的描述方式
1 | 1、在linux系统中没有盘符的概念,只有一个根目录/(斜杠),所有的文件都在它下面 |
linux命令基础
什么是命令、命令行
学习linux,本质上是学习在命令行下熟练的使用linux的各项命令
1 | 命令行:即linux终端,是一种命令提示符页面。以纯字符的形式操作系统,可以使用各种字符化命令对系统发出操作指令。 |
linux命令的通用格式
1 | command [-options] [parameter] |
ls命令入门
ls命令的作用是列出目录下的内容,语法细节如下:
1 | ls [-a -l -h] [linux路径] |
ls命令的参数和选项
参数:指定一个linux路径,列出此路径下的内容
选项:
1 | -a:表示all的意思,即列出全部文件(包含隐藏文件/文件夹) |
1、图中以.开头的,表示linux系统的隐藏文件/文件夹(只要以.开头,就能自动隐藏)
2、只有通过-a选项,才能看到这些隐藏文件/文件夹
注意:选项可以组合使用,如-la、-al、-l -a都是一样的
cd 切换工作目录
当Linux终端打开的时候,会默认以用户的HOME目录作为当前的工作目录
cd(change directory)
1 | 语法:cd[linux路径] |
pwd
查看当前工作目录
相对路径和绝对路径
1 | 绝对路径:以根目录为起点,描述路径的一种写法,路径描述以/开头 |
特殊路径符
1 | . 表示当前目录,比如cd./desktop表示切换到当前目录下的desktop目录内,和cd desktop效果一样 |
eg:在当前目录的上级目录有一个test文件夹,文件夹内有一个文件hello.txt
相对路径为:../test/hello.txt
mkdir命令
通过mkdir命令可以创建新的目录(文件夹)
mkdir(make directory)
1 | 语法:mkdir [-p] linux路径 |
eg:mkdir -p itcast/good/666
创建了三层级文件夹
注意:创建文件夹需要修改权限,请确保均在HOME目录内,不要在HOME目录外操作
涉及到权限问题,HOME外无法成功
touch 创建文件
1 | touch linux路径 |
cat和more命令
两者都是查看文件命令,但more支持翻页,使用空格翻页,使用q退出
语法:more/cat linux路径
cp复制文件/文件夹
cp命令来自英文copy
1 | 语法:cp [-r] 参数1 参数2 |
mv移动文件或文件夹
1 | 语法:mv 参数1 参数2 |
eg:mv test1.txt test2.txt 改名
rm删除文件、文件夹
rm(remove)
1 | 语法:rm [-r -f] 参数1 参数2 ... |
Vim编辑器
linux下常用的文本编辑器有Vim、gVim、gedit
在终端输入vim启动
Vim有三种工作模式
- 普通模式:默认进入是普通模式,可以在冒号后面输入命令,如:wp,保存并退出
- 插入模式:在普通模式下,按i或者a进入,可以编辑文本内容
- 可视模式:在普通模式下按v进入,按ESC退出
保存与打开文件
保存文件的命令是:w,打开文件的命令是:r
比如写入这样一段话:
1 | good moring everyone ! |
编辑完按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 | #! /bin/bash |
1、所有的shell程序第一行都是以#!开头,后面跟执行shell程序的shell解释器目录与名称。系统默认的shell解释器是bash
2、程序的第二行以注释的形式写出程序的名称
3、只有添加了可执行权限后才可以执行
chmod +x 文件名
如果将文件保存在用户主目录下,只需要在终端输入./文件名,就可以运行
运行结果: hello Linux
变量
在shell程序中的变量分为局部变量、环境变量、位置变量
局部变量
Shell语言是解释型语言,不用事先声明变量,一对变量赋值就等于定义了变量。局部变量是指只在当前程序中有效
shell变量是无类型的,可以存放不同类型的数据,访问变量只需要在变量前面加$
ps:对没有空格的字符串赋值可以不用引号,但如果有空格也没加引号就会报错
环境变量
环境变量是在一个用户的所有进程中都可以访问的变量。在系统中常常使用环境变量来存储常用的信息
位置变量
位置变量是指shell程序在运行时传入的参数,在程序中可以以变量的形式来调用。这些参数被存放在1~9个变量名中,与普通变量一样在变量前加$来访问。
在位置变量中,$0的值为bash;$1开是输入参数
比如:
1 | #! /bin/bash |
那么在保存和添加执行权限后在终端输入
./3.sh hello linux
运行结果是:
hello
linux
反引号
反引号用于执行引号中的系统命令,然后将命令的执行结果返回
1 | A=`ls` |
字符串中不能直接使用$、单引号、双引号、反斜线、反引号等特殊字符,需要\转义
多命令执行
; 顺次执行命令
| 前一个命令执行结果的标准输出传递给后面进行执行,即作为后面命令的标准输入
|| 如果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 | #ls -l c{ar,an,at}s |
文件内容查询命令——grep
该命令在文件中搜索指定的字符串模式,列出含有匹配模式字符串的文件名和输出含有该字符串的文本行
命令格式:
grep [选项] [查找模式] [文件名]
-F:将查找模式看作单纯的字符串
-i:要查找的字符串不区分字母的大小写
-r:以递归方式查询目录下的所有子目录的文件
-n:标出包含指定字符串的行编号
另外:grep可以直接处理一些命令(如ls、ps)的输出,比如在当前运行的进程中查找vi程序的进程信息:
#ps aux | grep vi