您的位置:首页 > 运维架构 > Linux

c笔记01---扩展名简介,linux 常用命令,vi 设置

2015-09-30 16:23 435 查看
1. gcc 扩展名简介:

.c c语言

.cc c++语言

.C c++语言

.cpp c++语言

.h 头文件

.i 预处理过的c语言

.ii 预处理过的c++语言

.o 编译后的目标文件,二进制

.s 汇编语言代码

.a 静态库(多个 .o 文件打包,就形成 .a)

.so 共享库(动态库)

2. linux GCC 常用命令 (终端输入)

注意:该目录下有好多命令都是以后课程才学到的;

whoami 可以知道当前使用的帐号

who 查看用户名和终端类型

uname 查看内核版本

-a

date 查看系统时间

umask 查看当前系统权限掩码

cal 显示日历

bc 计算器

locale 查看系统字体

df 显示文件系统

-h

mount 列出所有分区

pwd 查看当前目录的绝对路径

clear 把当前屏幕上的所有内容清除

cd 切换目录命令

cd /usr/include/c++

ls 查看目录内容命令

ls 命令支持 -a 和 -l 选项,

-a 选项可以把所有内容都显示在屏幕上,不显示每个文件的详细信息

-l 选项可以显示每个文件或目录的详细信息;

-a 选项和 -l 选项可以合并成 -al。

-i 文件 i 节点

ls /sys/bus 查看系统总线

touch 新建文件,如果文件已经存在,则会修改文件时间

mkdir 新建文件夹

用 -p 命令可以同时创建多个具有父子关系的目录(循环创建)

rmdir 删除空文件夹

rm 删除文件或空文件夹

rm -r aa 强制删除 aa 非空文件夹

mv 移动或更名文件

mv a.c aa.c 把 a.c 改名为 aa.c

mv a.c /c 把 a.c 移动到 c 文件夹

mv *.c /c 把所有 .c 文件移动到 c 文件夹

cp 复制

cp a.c aa.c 同文件夹下,a.c 复制为 aa.c

cp *.c /c 所有 .c 文件复制到 c 文件夹下

cp -r xxx xxxxx 文件夹复制

cp -a xxx 当有软链接的时候,需要加 -a

ln 命令可以制作链接文件,分为硬链接和软链接

硬链接:

# ln 文件 硬链接名

软链接:

ln -s 文件/目录 软链接名

more 显示文件内容

clare 清屏

ps 可以察看当前终端窗口中运行的所有程序,每个程序都有一个进程 ID

# ps -efl

# ps -efl | grep 10086 // 查看具体某一个进程

# ps -efl | grep a.out

# ps -efl | more // 按页显示;回车查看;

(详情参见《UC笔记》DAY07)

pstree 以树状图显示程序

ipcs 查看共享内存/消息队列

# ipcs -m // 显示共享内存 (m: memory)

# ipcs -q // 显示消息队列 (q: queue)

# ipcs -s // 显示信号量 (s: semphore)

# ipcs -a // 显示所有 IPC 对象 (a: all)

ipcrm 删除共享内存/消息队列

# ipcrm -m ID // 删除具体某一个共享内存;

# ipcrm -q ID

# ipcrm -s ID

kill 可以强制终止一个程序的运行,需要使用那个程序的进程 ID,可以使用 -9 选项强制终止

kill -2 xxxxxxx,相当于 <Ctrl+C>,终止某一个进程;

jobs 查看后台暂停程序

top 查看后他程序,每两秒更新一次,相当于 windows 的资源管理器

fg 将后台程序调到前台

bg 让工作在后台进行

free 显示内存状态

uptime 显示目前系统开机时间

netstat 显示网络状态

echo 查看环境变量/显示指定文本

$ echo hello word ! 1>xxx.txt // 把 hello word! 字符串写入 xxx.txt 文件里(输出重定向)

$ echo hello, word >xxx.txt // 如果不写 1 就不能写感叹号,bashell 不识别;

wc 查看文件信息

cat 查看文件内容

cat xxx.txt

cat /dev/null>xxx.dat // 清空 xxx.dat 文件

cat /proc/cpuinfo // 查看系统信息

cat /proc/devices // 查看正在运行的设备号

sudo 可以使用最高权限执行某些命令

chmod 文件权限设置

chmod +x arr.c

find 查找

find ./ -name xxx

which 查找

file 查看文件信息

man 系统帮助

man rand 或者 man 2 rand

info 和 man 一样,查看帮助手册

yum 在线升级

startx 进入图形界面

tar 可以用来实现打包压缩处理,和解压缩

压缩方法:

tar -zcvf day03.tar.gz day03

(这个命令可以把 day03 目录制作成 day03.tar.gz 文件)

压缩文件名应该以.tar.gz作为扩展名

解压缩方法:

tar -zxvf day03.tar.gz

tar xf day03.tar.gz

z:调用 zip 压缩工具;

x:解压缩的意思;

v:显示解压缩过程;

f:解压缩文件命令;

nm 查看目标或者库文件

nm xxx.o

hexdump 十六进制查看

diff 判断两个文件是否一样

diff a.out b.out

poweroff 关机

reboot 重启

ifconfig 显示网络设备(查看 ip 地址)

history 历史记录

insmod 加载内核模块

rmmod 移除内核模块

lsmod 查看运行中内核模块

modinfo 查看具体某一个内核模块

grep -R "xxxx" ./* 查找某些函数或者函数名 /**/

grep -R "xxxx" ./* | grep '\.h' /**/

export PS1=## 配置终端前头提示符只显示 ##

mount -t proc proc /tmp 挂载文件系统

mknod console c 5 1 挂载设备文件

mkfs.ext4 /dev/sdb1 格式化硬盘

du -hs xxx 查看文件夹大小

export CC=arm-linux-gcc 修改默认编译器,对当前 shell 有效

sudo passwd root 设置超级用户密码

sudo apt-get install xxx 在线安装软件

dpkg -i 安装包名字 离线安装,后缀名 .deb,UBUNTU 系统

rpm -ivh 安装包名字 离线安装,后缀名 .rpm,RED HAT 系统

sudo /etc/init.d/tftpd-hpa restart 重启 tftp 服务

sudo /etc/init.d/nfs-kernel-server restart 重启 nfs 服务

arm-linux-readelf -d xxx 查看和 xxx 文件相关的动态库

arm-linux-strip hello.o 减小目标文件体积

arm-linux-objdump -S hello.o >hello.asm 反汇编

arm-linux-objcopy -O binary hello.elf hello.bin 去掉头文件信息

gcc code.c 编译

./a.out 执行

ctrl + c 中断死循环

编辑: vi hello.c -> hello.c

预编译:gcc -E hello.c -o hello.i -> hello.i ---+

编译: gcc -S hello.i -> hello.s | GCC

汇编: gcc -c hello.s -> hello.o | 工具链

链接: gcc hello.o -o hello -> hello ---+

gcc -c code.c 只编译,不生成可执行程序。编译后生成 .o 目标文件,通常用于编译不包含主程序的子程序文件;

gcc hello.o -o hello 给 hello.o 重命名为 hello

gcc -x c++ code.c -lstdc++ 指定 gcc 编译器用 c++ 的方式编译

-std=c89/-std=c99 指定编译所采用的规范版本

gcc -std=c99 xxx.c

大型应用程序调试,一般使用 gdb 工具查看 core 文件,依次执行下面五行命令:

ulimit -c unlimited 取消禁止生成 core 文件,该文件里保存出错信息

gcc mian.c -g 重新编译程序,-g 允许 gdb 调试

a.out 重新执行错误文件,会生成 core 文件

gdb a.out -c core 用 gdb 查看 core 文件

(gdb) bt 打印执行路径

内核出错调试命令:

cat /proc/kallsyms > info.txt 内核用到的所有函数都以符号的形式列在 kallsyms 里

arm-linux-objdump -D xxx.ko > error.txt 反汇编,根据 pc 寄存器指向地址找到出错代码

终端下,不同颜色对应的文件类型:

绿色:可执行文件

亮蓝色:软链接

暗蓝色:文件夹

暗红色:套接字

黑底黄字:设备文件(c-字符设备,b-块设备/存储设备)

黑底红字:没有目标文件的软链接/错误软链接

这些命令都是在 shell 里面输入的,那么什么是 shell 呢 ?

1)shell 是操作系统最外面的一层,俗称壳,

2)shell 基本上是一个命令解释器,相当于 windows 下的 cmd 命令框;管理你于操作系统之间的交互;

3. 普通模式下输入:

:w 保存文件

:q 退出

:q! 强制退出,不保存

:wq 保存退出

:x 保存退出

:e 刷新

:nohls 清除标记

:129 跳到 129 行

/xxx 查找 xxx

ZZ 保存退出,不需要冒号

:r /root/code.c 把 code.c 文件拷贝到当前文档后面

:%s /;/, 把所有分号换为逗号

:22,28 co 29 把 22 到 28 行复制到 29 行之后;

:22,28 mo 29 把 22 到 28 行剪切到 29 行之后;

4. 普通模式下键入:

i 当前插入;

I 当前行首插入;

a 后移一位插入;

A 当前行尾插入;

o 下一行插入;

O 上一行插入;

r 替换当前一个字符;

R 替换当前 n 个字符,直到按 esc 结束;

H 屏幕首;

M 屏幕中;

L 屏幕尾;

G 跳到文件尾;

gg 跳到文件首; // 相当于 :1

x 删除当前字符;

dd 剪切当前行;

ndd 剪切n行;

yy 复制当前行;

nyy 复制n行;

p 粘贴;

u 取消上一次修改;

U 取消所有修改;

. 重复上一次修改;

5. vi编译器格式设置:

vi ~/.vimrc 进入enter

// 常用的四个设置:

set nu // 显示行号;

set cindent // 自动缩进;

set shiftwidth=4

set tabstop=4 // 设置 tab 键

// 不常用的设置:

set nonu // 取消行号;

set hlsearch // 高亮搜索;

set backup // 自动存档,当你改变文件时,原文件会被另存为 filename~ 的一个文件;

set ruler // 显示右下角状态栏;

set showmode // 在左下角显示 --INSERT--等字样;

set backspace=(012) // 为 2 的时候,backspace 键可以删除任意字符;为 0/1 时,仅可删除刚输入的字符,原字符无法删除;

set all // 在保存完文件时,显示目前所有环境参数设定值;

syntax on // 语法高亮;

syntax off // 关闭语法高亮;

set bg=light // 设定关键字颜色(默认);

set bg=dark // 设定关键字颜色;

vi 和 vim 的区别:

1)多极撤销

在 vim 里可以不限制的撤销

2)易用性

vi 只能运行于 unix 系统,vim 可以运行于多系统;

3)语法加亮

4)完全兼容 vi

6. 所有绝对路径都是以/做开头的;

相对路径是从某一个文件夹开始描述另外一个文件夹的位置;

. 代表当前文件夹

.. 代表当前目录的父目录

7. 脚本文件可以包含多条操作命令,执行脚本文件就相当于按顺序执行内部的所有操作命令。

脚本文件制作完成后需要添加执行属性,使用 chmod 命令,方法如下

chmod <属性值> 文件路径
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: