Linux系统编程01--Linux的基本操作指令

  • 作者介绍
  • 作者介绍
  • 学习目标:
  • 1.1 命令解析器---shell(用于解析用户输入终端的指令)
  • 1.2 shell操作和相关的快捷键
  • 2. Linux下的目录结构
    • 2.1 linux系统的目录结构
    • 2.2 linux主要目录介绍
  • 2.3 文件的操作指令
  • 2.4 用户权限的操作指令chmod(修改用户权限和用户相关的组)
  • 2.5 find命令(查找:知道文件名,不知道在哪时使用)
  • 2.6 grep命令
  • 2.7 给脚本中定义自己常用命令
  • 3.软件的安装与卸载
    • 3.1在线安装
    • 3.2离线的软件包安装
  • 4.压缩和解压缩工具(代码上传的需要)
  • 5.习题:

作者介绍

作者介绍

张伟伟,男,西安工程大学电子信息学院,2019级硕士研究生,张宏伟人工智能课题组。
微信公众号:可随时查阅,搜索—张二牛的笔记,内容会分类上传。
研究方向:机器视觉与人工智能。
电子邮件:[email protected]
电子邮件:[email protected]

  • 课题组CSDN官方账号,欢迎一键三连: https://blog.csdn.net/m0_37758063/article/details/113527955?spm=1001.2014.3001.5501.

整个课程目标:9天每天12个小时:

  1. linux基础–基础指令
  2. vi的使用和gcc编译器
  3. gdb调试和makefile的编写
  4. 文件IO操作
  5. 进程相关
  6. 进程间通信
  7. 信号相关
  8. 守护进程和线程
  9. 线程同步

学习目标:

  • 说出linux下的目录结构和常见目录的作用
  • 熟练使用linux下的相对路径和绝对路径
  • 熟练使用linux下常用文件和目录操作相关的指令
  • 熟练使用修改用户权限、用户、和用户组相关的指令
  • 熟练掌握Ubuntu下的软件安装与卸载
  • 熟练使用压缩工具完成文件或目录的压缩解压缩

linux系统结构:
Linux系统编程01--Linux的基本操作指令_第1张图片


1.1 命令解析器—shell(用于解析用户输入终端的指令)

Linux系统编程01--Linux的基本操作指令_第2张图片
注意:shell在寻找命令的时候是按照$PATH环境变量去查找的,如果找到了就执行对应的命令,若找不到就报错, 执行echo $PATH可以查看PATH环境变量的值

  • 常用的命令解析器
    /bin/sh
    /bin/bash

  • 指令
    查看当前系统所使用的shell: echo $SHELL
    查看当前系统下有哪些shell:cat /etc/shells

1.2 shell操作和相关的快捷键

#命令可以显示用户输入的所有命令  
history
# 向前删除命令
ctrl + a
# 向后删除
ctrl + d
# 删除光标前的指令
ctrl + u
#删除光标后的指令
ctrl + k

2. Linux下的目录结构

倒立的树状结构, 根目录用/表示

2.1 linux系统的目录结构

Linux系统编程01--Linux的基本操作指令_第3张图片

2.2 linux主要目录介绍

/bin--------: binary,二进制文件,可执行程序,shell命令
/dev--------: device,在linux下一切皆文件
/lib----------,库文件,标准输入输出库
/media-----外设自动挂载的目录
/mnt---------手动挂载的目录,如U盘等
/usr----------
 include目录里存放头文件, 如: stdio.h、stdlib.h、string.h、pthread.h
/etc----------: 存放配置文件
/etc/passwd
man 5 passwd可以查看passwd文件的格式信息
/etc/group
man 5 group可以查看group文件的格式信息
/etc/profile
系统的配置文件, 修改该文件会影响这个系统下面的所有的用户

查看当前用户的宿主目录: echo $HOME

2.3 文件的操作指令

tree
ls -alhR
cd    cd ~   cd -   cd $HOME
pwd
which   ---查看命令所在目录
touch 文件名
mkdir 目录名
mkdir -p aa/bb/  ---创建层级目录
rm 文件名
rm -r 目录名
  -i:递归删除目录
  -f:强制删除
cp 源文件 目标文件
   使用场景:修改文件时先拷贝
   文件存在则覆盖
   -r 目录不存在则成为子目录
   -a 文件时间信息也不变
mv 源文件 目标文件---(剪切、改名)

cat 文件名----将文件内容输出到终端
      cat file1 > file2 文件内容重定向(复制)
      
more 文件名----将文件内容分页显示 (但只能向下显示,不能回退)
	  相关操作:显示下一行:Enter
	  		  显示下一页:空格键
	  		  退出为:q
	  		  
less 文件名----(上下皆可浏览)
	 ctrl + p ,Enter,向上箭头
	 ctrl + n ,向下箭头
	 pageup,空格
	 pagedown

head -文件行数n 文件名---查看文件的前n行的内容
tail -文件行数n 文件名---查看文件的后n行的内容

ln -s 源文件 链接 ----创建软连接,使用绝对路径创建文件软连接不影响移动。
ln 源文件 链接 ----互为硬链接,移动不影响使用(可用于同步文件,保护文件的作用,删除时别的还在)

wc 文件名----显示文件行数, 字节数, 单词数
	wc -l file显示文件的总行数
	wc -c file显示文件的总字节数
	wc -w file显示文件的总单词数
	wc file 显示文件的总行数, 单词数和总字节数
whoami ---显示当前登录的用户

硬链接和软连接的 i 节点
Linux系统编程01--Linux的基本操作指令_第4张图片

2.4 用户权限的操作指令chmod(修改用户权限和用户相关的组)

chmod [who][+|-|=][mode] 文件名
	u -- 用户(user)
	g -- 同组用户(group)
	o -- 其他用户(other)
	a -- 所用用户(all)【默认】
	操作符【+-=】
	+ -- 添加权限
	- -- 取消权限
	= -- 赋予给定权限并取消其他权限
	权限【mode】
	r -- 读  4
	w -- 写  2
	x -- 执行 1
	示例:给文件file.txt的所有者和所属组添加读写权限
	chmod ug+wr file.txt
	chmod u+x,u+w file.txt
	chmod -030 file.txt

2.5 find命令(查找:知道文件名,不知道在哪时使用)

1.按照文件名进行查找:-name
find 路径 -name "文件名"

2.按照文件类型进行查找:-type
find 路径 -type d
	d -> 目录
	l -> 符号链接
	b -> 块设备文件
	c -> 字符设备文件
	s -> socket文件
	p -> 管道文件

3.按照文件大小进行查找:-size
	大于100k的文件:  find ~/ -size +100k
	大于50k, 小于100k的文件:  find ~/ -size +50k -size -100k

4.按照创建修改日期查找
创建日期:-ctime -n/+ n
	-n: n天以内
	+n: n天以外
	修改日期:-mtime -n/+n
	访问日期:-atime -n/+n

5.高级查找:查找出并展示文件信息
find ./ -type d -exec shell命令 {} \
	例如:find ./ -type d -exec ls -l {} \
		 find ./ -type d -ok rm file1 {} \
管道命令:
		 find ./ -type d | xargs shell命令

2.6 grep命令

grep -r(有目录) “查找的内容” 搜索的路径

	-r参数, 若是目录, 则可以递归搜索
	-n参数可以显示该查找内容所在的行号
	-i参数可以忽略大小写进行查找
	-v参数不显示含有某字符串
例如:搜索当前目录下包含hello world字符串的文件
	grep -r -n "hello world" ./     ------显示行号
	grep -r -i -n "while"
高级使用于find结合使用,查找.sh中的指令
find . -name "*.sh"| xargs grep -n -i -r "main"

2.7 给脚本中定义自己常用命令

vim ~/.bashrc
alias 别名=‘命令’

3.软件的安装与卸载

3.1在线安装

#更新软件安装列表:
sudo apt-get update
#软件安装:
sudo apt-get install 软件名
#软件卸载:
sudo apt-get install 软件名
#清理安装包:
sudo apt-get clean

3.2离线的软件包安装

切换到目录,并且有安装包

#软件安装:
sudo dpkg -i xxx.deb
#软件卸载:
sudo dpkg -r xxx.deb

4.压缩和解压缩工具(代码上传的需要)

gzip和bzip2:只能压缩普通文件们不能压缩目录,实用性不强。
tar命令:

》》》压缩常用第一个 c 为新建压缩
tar zcvf 压缩包名字.tar.gz 原材料[要打包压缩的文件或目录]  
tar jcvf 压缩包名字.tar.bz2 原材料[要打包压缩的文件或目录]
tar cvf 压缩包名字.tar 原材料[要打包压缩的文件或目录]

》》》解压常用第一个 x 为解压
tar  zxvf  已有的压缩包(test.tar.gz)
tar  jxvf  已有的压缩包(test.tar.bz2)
tar  xvf   已有的压缩包(test.tar.gz)
》》》-C指定路径
解压到指定目录:添加参数 -C(大写)
	例子:
	tar xvf test.tar.gz -C 解压目录(./mytest)
	查看压缩包中有哪些文件
	tar tvf test.tar

》》》一些参数的含义
	z:用gzip来压缩/解压缩文件
	j:用bzip2来压缩/解压缩文件
	c:create, 创建新的压缩文件, 与x互斥使用
	x:从压缩文件中释放文件, 与c互斥使用
	v:详细报告tar处理的文件信息
	f:指定压缩文件的名字
	t:  查看压缩包中有哪些文件

5.习题:

1.Linux下的目录结构:
倒立的树形结构
2. 写出下列目录的作用:
/dev 设备–字符设备和块设备
/etc 配置文件
/home 用户的加目录
/usr programfile Unix系统资源
/bin 常见的指令
/lib 常用的库文件
/mnt 手动挂载的目录。
3.用户名@主机名:当前所处文件

  • 普通文件
    d 文件
    l 链接
    c 字符设备文件
    b 块设备文件
    p 管道文件
    s socket文件

4. 写出命令查找宿主目录下文件大于100k小于10M的文件,
并将查到文件的详细信息保存到另一个文件file中。

5. 写出命令查找宿主目录下文件中含有"hello, world"字符串的文件,并显示行号。

6. 写出命令卸载Linux中的tree软件(两种方式)

7. 当前目录下有 a, b, c 三个文件和一个目录Dir分别使用 tar, rar, zip命令将三个文件和目录压缩为一个文件.将压缩好的文件解压缩到/home/itheima目录中

你可能感兴趣的:(Linux操作系统,python,github,网络)