C语言 - Linux基础使用

Linux

1. Linux简介

Linux是操作系统

Linux中所有的程序与硬件设备对Linux系统而言都是一个文件或文件夹

1.1 Linux发行版本

发型版本的名称/版本有发行方决定

  • Red Hat Enterprise Linux 5/6/7
  • Suse Linux Enterprise 12
  • Debian Linux 7.8
  • Ubuntu Linux 14.10/15.04

1.2 Red Hat 系列版本

  • 红帽 Linux 企业版

    • 简称RHEL(Red Hat Enterprise Linux)
    • http://ww.redhat.com/
  • Fedora Core 社区版

    • http://fedoraproject.org/
  • CentOS,社区企业操作系统

    • Community Enterprise Operating System
    • http://www.centos.org/

1.3 Linux 目录结构

树形结构

/                系统根目录,通常不会在这里存储文件
 ├── boot        启动目录(引导区块)
 │
 ├── bin         系统二进制目录,存放普通用户级的 GNU 命令
 ├── sbin        系统超级二进制目录,存放管理员级别的 GNU 命令
 ├── usr         资源目录 (User System Resources)
 │   ├── bin     用户二进制目录,存放用户级的 GNU 命令
 │   └── sbin    用户超级二进制目录,存放管理员用户的 GNU 命令
 │   └── local   存储第三方软件的
 │       ├── bin
 │       └── sbin
 │
 ├── opt         第三方开发的程序 (option), 意为"选装"
 │
 ├── dev         设备目录(device) 
 │   ├── null    无底洞 (丢弃一切写入其中的数据)
 │   ├── zero    无限 0 数据流 (常用来产生一个特定大小的空白文件, 或安全销毁文件)
 │   ├── shm     内存文件夹
 │   ├── sda	 第一块SCSI设备(及第一块SCSI磁盘)
 │   ├── random  随机数发生器
 │   └── urandom 非阻塞的随机数发生器
 │
 ├── etc         系统配置文件目录 (et cetera)
 ├── proc        当前的进程、运行状态信息的目录
 │
 ├── root        管理员家目录
 ├── home        用户的家目录
 │
 ├── media       媒体目录,可移动媒体设备的常用挂载点,一般是系统自动挂载到这里
 ├── mnt         挂载目录,另一个可移动媒体设备的常用挂载点,一般是留给用户手动挂载
 │
 ├── lib         系统库目录,存放系统和应用程序的库文件
 │
 ├── srv         服务目录,存放本地服务的相关文件
 ├── sys         系统目录,存放系统硬件信息的相关文件
 │
 ├── run         运行目录,存放系统运作时的运行时数据
 ├── tmp         临时目录,可以在该目录中创建和删除临时工作文件
 └── var         可变目录,用以存放经常变化的文件,比如日志文件

2. 常用命令

平常通过图形界面能够实现的功能,通过命令基本上都可以实现

① --help

命令 --help

命令帮助信息

② man

man 是 Linux 提供的一个手册,这个手册有很多个章节

第一章中放的是 命令 的帮助信息

第二章中放的是系统调用(操作系统提供的函数 open)

第三章中放的是库函数(c 库提供的函数 printf)的帮助信息

语法:

man 章节 查找信息

例:

man 1 ls

注意:

  • 查看内容后想要翻译点击上下键

  • 如果想退出输入q

③ ls

查看当前路径下的文件

ls 选项 参数

选项
	-a	所有
	-l	详细信息
	-h	人性化输出(数据有单位)

④ tree

作用:树状查看文件

没有的需要安装:

sudo apt-get install tree

语法:

tree -L 层数

tree:默认列出所有层。

例:

zhb@zhb-edu:~/temp$ tree
.
└── file
    ├── file1
    │   ├── aaa.text
    │   └── bbb.text
    └── file2
        ├── ccc.text
        └── ddd.text

3 directories, 4 files

⑤ cd

作用:进入指定的文件夹

路径可以使用 相对路径 也可以是 绝对路径
: 表示 /home/用户名

⑥ pwd、which

pwd :显示当前工作目录的绝对路径

zhb@zhb-edu:~/temp$ pwd
/home/zhb/temp

which :查看命令所在路径

zhb@zhb-edu:~/temp$ which ls
/bin/ls

⑦ cat

作用:查看文件中的内容

⑧ rm

作用:删除文件或文件夹

语法:

rm 选项 要删除的文件或文件夹路径

选项:
	-r 文件夹
	-f 强制
	-rf

⑨ cp、mv

cp:复制

语法:

cp 选项 原文件路径 目标路径

选项
	-r 文件夹
	-a 进度

mv:移动

语法:同cp

⑩ mkdir、touch

mkdir:创建文件夹

touch:创建文件

⑪ find、grep

find:在指定路径下查找指定文件

语法:

find 查询的目录 -name 查询的文件名

例:

zhb@zhb-edu:/$ find /home/zhb/temp/file/file1 -name abc.text
/home/zhb/temp/file/file1/abc.text

grep:在指定文件中查找指定内容

语法:

grep 要查询的内容 查询的文件路径 选项

选项
	-n 显示行数
	-r 文件夹

例:

zhb@zhb-edu:/$ grep a /home/zhb/temp/file/file1/aaa.text -n
1:aaa
6:abc
7:asfg
zhb@zhb-edu:/$

⑫ tar

压缩或解压缩

解压
	tar 选项 文件 -C 目标位置默认为当前目录
压缩
	tar 选项 压缩包名称 要压缩的文件1 要压缩的文件2 ...
选项
	z:gzip格式压缩包
	j:bz2格式
	x:解压
	c:压缩

例:

  • 压缩:tar zcvf file1.tar.gz file1
zhb@zhb-edu:~/temp/file$ ls
file1  file2
zhb@zhb-edu:~/temp/file$ tar zcvf file1.tar.gz file1
file1/
file1/abc.text
file1/aaa.text
file1/bbb.text
zhb@zhb-edu:~/temp/file$ ls
file1  file1.tar.gz  file2
  • 解压:tar zxvf file1.tar.gz -C ./
zhb@zhb-edu:~/temp/file/file2$ ls
ccc.text  ddd.text  file1.tar.gz
zhb@zhb-edu:~/temp/file/file2$ tar zxvf file1.tar.gz -C ./
file1/
file1/abc.text
file1/aaa.text
file1/bbb.text
zhb@zhb-edu:~/temp/file/file2$ ls
ccc.text  ddd.text  file1  file1.tar.gz
zhb@zhb-edu:~/temp/file/file2$

⑬ ln

创建软连接

语法:

ln 原文件路径 连接名 -s

例:ln file1/aaa.text aaa-1.test -s
在这里插入图片描述

软连接,也就是快捷方式

  • 改变软连接的内容,原文件内容也会随之改变
  • 但是删除软连接,原文件不收影响

⑭ chown、chmod

chown :用来 更改 某个目录或文件的 用户名和用户组

zhb@zhb-edu:~/test$ sudo mkdir /home/zhb/test/test01 -p
zhb@zhb-edu:~/test$ ls -l
总用量 8
drwxr-xr-x 2 root root 4096 14 18:58 test
drwxr-xr-x 2 root root 4096 14 18:59 test01
zhb@zhb-edu:~/test$

在这里插入图片描述

  • 使用 sudo 创建的就是 root权限,普通用户不能访问
  • mkdir -p:-p 表示在在创建目录时,没有就新建一个
zhb@zhb-edu:~/test$ chown zhb test
chown: 正在更改'test' 的所有者: 不允许的操作
zhb@zhb-edu:~/test$ sudo chown zhb test
zhb@zhb-edu:~/test$ ls -l
总用量 8
drwxr-xr-x 2 zhb  root 4096 14 18:58 test
drwxr-xr-x 2 root root 4096 14 18:59 test01
zhb@zhb-edu:~/test$ sudo chown :zhb test
zhb@zhb-edu:~/test$ ls -l
总用量 8
drwxr-xr-x 2 zhb  zhb  4096 14 18:58 test
drwxr-xr-x 2 root root 4096 14 18:59 test01
zhb@zhb-edu:~/test$ sudo chown -R zhb:zhb test01
zhb@zhb-edu:~/test$ ls -l
总用量 8
drwxr-xr-x 2 zhb zhb 4096 14 18:58 test
drwxr-xr-x 2 zhb zhb 4096 14 18:59 test01
zhb@zhb-edu:~/test$

在这里插入图片描述

chmod :用来 修改 某个目录或文件的 访问权限

chmod [-cfvR] [--help] [--version] [who] [+ | - | =] [mode] 文件名

示例:

zhb@zhb-edu:~/test$ ls -l
总用量 8
drwxr-xr-x 2 zhb zhb 4096 14 18:58 test
drwxr-xr-x 2 zhb zhb 4096 14 18:59 test01
zhb@zhb-edu:~/test$ chmod -R +777 test
zhb@zhb-edu:~/test$ ls -l
总用量 8
drwxrwxrwx 2 zhb zhb 4096 14 18:58 test
drwxr-xr-x 2 zhb zhb 4096 14 18:59 test01
zhb@zhb-edu:~/test$

在这里插入图片描述

参数详解:

命令中各选项的含义为: 
    -c : 若该档案权限确实已经更改,才显示其更改动作     
    -f : 若该档案权限无法被更改也不要显示错误讯息     
    -v : 显示权限变更的详细资料     
    -R : 对目前目录下的所有档案与子目录进行相同的权限变更(即以递回的方式逐个变更)   
    --help : 显示辅助说明   
    --version : 显示版本
操作对象who可是下述字母中的任一个或者它们的组合:
   u 表示“用户(user)”,即文件或目录的所有者。
   g 表示“同组(group)用户”,即与文件属主有相同组ID的所有用户。
   o 表示“其他(others)用户”。
   a 表示“所有(all)用户”。它是系统默认值。
操作符号可以是:
   + 添加某个权限。
   - 取消某个权限。
   = 赋予给定权限并取消其他所有权限(如果有的话)。
设置 mode 所表示的权限可用下述字母的任意组合:
	r 可读。
	w 可写。
	x 可执行。
	X 只有目标文件对某些用户是可执行的或该目标文件是目录时才追加x 属性。
	s 在文件执行时把进程的属主或组ID置为该文件的文件属主。
       方式“u+s”设置文件的用户ID位,“g+s”设置组ID位。
	t 保存程序的文本到交换设备上。
	u 与文件属主拥有一样的权限。
	g 与和文件属主同组的用户拥有一样的权限。
	o 与其他用户拥有一样的权限。
文件名:以空格分开的要改变权限的文件列表,支持通配符。

⑮ 其他

(1) echo

作用:输出(在屏幕输出)

zhb@zhb-edu:~/temp/file$ echo aaa-1.test
aaa-1.test
zhb@zhb-edu:~/temp/file$
(2) 重定向 >、>>

本来输出到屏幕上的数据,重定向输出 到了 目的文件中

>:替换

>>:追加

例:>

zhb@zhb-edu:~/temp/file$ echo hello Linux > aaa-1.test
zhb@zhb-edu:~/temp/file$ cat aaa-1.test
hello Linux
zhb@zhb-edu:~/temp/file$

例:>>

![02-管道](images/02-管道.png)zhb@zhb-edu:~/temp/file$ echo 知行合一,致良知 >> aaa-1.test
zhb@zhb-edu:~/temp/file$ cat aaa-1.test
hello Linux
知行合一,致良知
zhb@zhb-edu:~/temp/file$
(3) 管道 |

一个程序的输出 作为另外一个程序的输入

例:
在这里插入图片描述

zhb@zhb-edu:~/temp/file/file1$ ls | grep a
aaa.text
abc.text
zhb@zhb-edu:~/temp/file/file1$

3. vim

作用:文本编辑器

vi的升级版

3.1 安装

sudo apt-get install vim

3.2 使用

创建或打开文件

文件存在就打开,不存在就创建

语法:

vim 文件名

3.3 模式

插入模式:

  • 可以直接编辑文档

  • 按esc键进入编辑模式

编辑模式:

  • 不支持对文件的编辑,但是可以查找等其他操作

  • 打开文件文件时默认为编辑模式

  • shift+: 进入命令行模式

  • 按:iao 都可以区别在于插入的位置不同

命令行模式(最后一行模式) :

  • 退出,保存或保存退出登操作
  • 按esc键进入编辑模式
  • 命令:
    • q 退出
    • w 保存
    • ! 强制
    • wq 保存退出
    • q 强制退出

3.4 快捷键

编辑模式下:

a) u 撤消前面多次修改。 ctl r 反撤销
b) [n]x 删除光标后 n 个字符。如: 3x
c) [n]X 删除光标前 n 个字符。如: 6X
d) [n]dd 删除从当前行开始的 n 行。如: 4dd
e) [n]yy 复制从当前行开始的 n 行。如: 4yy

编辑模式下的查找

  • /字符串:从光标开始处向文件尾查找字符串。
  • n:同一方向重复上一次查找命令。
  • N:反方向重复上一次查找命令
  • :nohls 取消高亮

4. gcc编译器

将C语言代码文件编译为可执行文件

4.1 编译

编译后最终生成 .out 可执行文件。

① 步骤:

  • 预编译
  • 编译
  • 汇编:唯一一门可以与计算机直接交流的语言
    • 只能用加法(汇编中的减法的是+负数 )
  • 连接

② 对应的命令:

gcc -E 源文件.c 	-o	 预处理文件名.i	—— 1、预处理
gcc -S 预处理文件名.i -o 编译文件名.s	—— 2、编译
gcc -c 编译文件名.s -o 汇编文件名.o	—— 3、汇编
gcc 汇编文件名.o –o 可执行文件名	—— 4、链接

③ 简化 — 直接编译

gcc 原文件名 -o 可执行文件名

gcc 原文件名

注意:生成的可执行文件默认名为 .out 文件

4.2 执行可执行文件

./可执行文件名

注意:必须在当前可执行文件所在的目录下
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值