Linux及C语言高级[1](Linux基础命令)

554 阅读7分钟

“这是我参与8月更文挑战的第1天,活动详情查看:8月更文挑战

一.Linux系统的命令

ls cd pwd clear touch mkdir cp mv rm echo cat

linux系统的终端打开:点击Terminal ctrl+alt+t

linux系统的终端关闭:点击x图标 exit

linux系统终端上的字符串
linux@ ubuntu :~$
whoamihostname路径用户的类型
用户名主机名/home/linux
$ :普通用户 linux
# :超级用户 root

用户的切换 :su (命令) :eg: su linux | su root

sudo :单次具备root权限

【1】ls命令

ls 参数对应执行
ls列举当前目录下的内容
ls -l显示文件的属性信息
ls -lh显示文件的属性信息,把大小按照对应的单位显示
ls -a显示所有的文件包含隐藏文件
ls -i文件系统对文件的唯一的标号(inode)
ls 路径列举对应路径下的内容
ls -l test.c列举test.c的属性

l --->ls

ll--->ls -al

ls  -l
d rwxr-xr-x 3 linux linux 4096 5月 14 09:34 bootloader

下面的依次解释每一部分的内容:

1.文件的类型

7种文件的类型 (bsp-lcd)
- : 普通文件 (白色)
d : 目录 (蓝色)
l : (link) 链接文件 分为软链接和硬链接(类似于window的快捷方式)
c : 字符设备文件(/dev/input/mouse0鼠标)event1 键盘 usdo hexdump mouse0
b : 块设备文件 (硬盘 /dev/sda)
p : 管道文件 (进程间通讯)
s (socket) : 套接字文件(网络通讯相关的文件)

创建硬链接文件:

ln 源文件 要生产的硬链接文件名

ln xxx sss 创建 xxx 文件的硬链接文件 取名为 sss

创建软连接文件:

ln -s 源文件 要生成的硬链接文件名

2.文件的权限

权限命令及代表的八进制数字
r : 读 4
w : 写 2
x : 可执行 1
- : 无权限 0

三组命令分别是:用户的权限 组的权限 其他用的权限

r-- -w- --x 0421

rwx r-x r-x 0755

3.第三部分的数字3

如果是文件代表的是别名的个数

如果是目录代表子目录的个数

4.用户名和组名

linux linux

用户名 组名

5.文件大小

4096

6.时间

5月 14 09:34

7.文件名

bootloader

【2】cd命令

cd:切换目录

用法:

cd 参数对应执行
cd 绝对路径从根开始访问的路径
cd /进入根目录
cd /home/linux进入家目录
cd 相对路径/从当前目录开始访问的路径
cd ./进入当前路径
cd ../进入上一级目录
cd ./home进入当前目录下的home
cd ~回到家目录
cd -回到上一次操作目录

在linux系统中路径如何表示:在linux系统中路径是一颗倒置的树

/ --->根目录 (cd /)

lib64bindevetcusrhomeroot
库目录二进制文件设备文件系统的配置文件用户自己的内容linux超级用户家目录
用户内容

windows :库xxx.dll

ubuntu :libxxx.so(动态库) libxxx.a(静态库)

【3】pwd 命令

显示当前的位置

【4】clear命令

clear:清屏的命令

ctrl+l 快捷键

【5】touch命令

touch 文件名:

1.创建文件

2.更新文件的时间戳

用法:

touch 1.c :touch 文件名 :表示创建文件

touch 2.c 3.txt 4.doc :同时创建多个文件

如果文件存在,执行touch的时候是更新文件的时间戳

但是文件中的内容并不会被覆盖。

【6】mkdir命令

mkdir 创建目录

如果目录不存在mkdir会创建目录

如果目录存在mkdir就会失败

mkdir -p 目录1/目录2/目录3 :创建具备层级关系的目录

mkdir -m 0775 test/

【7】cp命令

cp 拷贝

用法:

cp 文件 路径

cp README ~/hello/

将README拷贝到/home/linux/hello目录下

cp 目录 路径 -r或-a

cp tools ~/hello/ -r

将tools目录拷贝到/home/linux/hello目录下

将test.c拷贝到共享目录下

桌面 /mnt/hgfs/Desktop

windows 《==》 |--共享目录--| 《==》 linux

20210730105038.png

【8】mv命令

mv:移动或者重命名的命令

①移动:

mv 文件/目录 路径

mv *.c ../

移动当前目录下的所有的.c结尾的文件到上一级目录

mv work/ udisk/

将work移动到udisk目录

②重命名

mv 源文件名 新文件名

mv test.c list.c

将test.c重命名为list.c

mv work/ udisk/

mv 源目录名 新目录名(存在移动,不存在命名该文件夹)

【9】rm命令

rm:删除

删除文件
rm 文件名
rm test.c删除test.c的文件
删除目录
rm 目录名 -rf (-r:递归删除 -f:强制删除)
rm -rf hello删除hello目录

sudo rm !(3.c) -rf

删除除3.c之外的所有的文件

rm !(3.c|4.c) -rf

删除除3.c和4.c之外的所有的文件

【10】echo命令

echo功能就是在终端上打印字符串

echo "helloworld"

echo "helloworld" > test.c

(> :重定向,将本来应该向终端上输出的内容重定向到test.c的文件中)

ls ~ > test.c

将家目录下的内容罗列下输出到test.c的文件中

echo "helloworld" >> test.c

(>>: 追加,向test.c中追加"helloworld")

【11】cat命令

cat:查看文件中的内容

cat test.c > 1.c ====>类似于cp命令

将test.c内容重定向到1.c中

二.vim编辑器

vi/vim 文件名 :使用vim编辑器编辑文件

【1】命令行模式:

新打开的文件在命令行模式,

如果在其他默认回到命令行模式 按Esc

拷贝:

yy 拷贝一行

5yy 拷贝5行

nyy 拷贝n行

鼠标选中想要拷贝的行,然后按下键盘的y

从ubuntu中向window中拷贝数据

按下shift键,鼠标选中想要拷贝的行,右键拷贝即可

剪切:dd 剪切一行

5dd 剪切5行

nd 剪切n行

鼠标选中想要剪切的行,然后按下键盘的d

粘贴:

p

撤销:

u

反向撤销:

ctrl+r

代码自动对齐:

gg=G 对齐所有的行

鼠标选中想要对齐的行,按下键盘的=

跳转到开头:gg

跳转到结尾:G

搜索:

/想要高亮显示的字符串

n :向下跳

N :向上跳转

F2:打开函数列表

F3:打开目录的列表

【2】插入模式:

从命令行模式进入插入模式 i

中文输入法的快捷键:ctrl+alt+空格

/home/linux/.vim/snippets$ vi c.snippets

Inc :Tab补全 #include <stdio.h>

main :Tab补全main函数

for :Tab补全for函数

do :Tab补全do/while函数

hdr :补全文件的注释

修改名字:cd ~

vi .vimrc

输入zo打开折叠

136 let g:snips_author="DAI ZhanSheng"

137 letg:snips_email="daizs_jt@hqyj.com"

138 let g:snips_copyright="Farsight, Inc"

139 " plugin shortcuts

补全编辑:/.vim/snippets/c.snippets

snippet funh

/*function:

*args :

*return :

*/

【3】底行模式:

从命令行模式进入底行模式 :shift+: (空格)

:w 保存 (:w 新文件名 另存为)

:wq或者x 保存退出

:qa 退出 (退出所有的窗口)

:q! 不保存退出

:wq! 强制保存退出

:set nonu :取消行号

:set nu :显示行号

:n :跳转到对应的行

:nohl :取消高亮

:vsp 新文件名 水平打开多窗口 //一个一个窗口退出光标移动该窗口 :q //退出所有的窗口 :wqa

:sp 新文件名 垂直的方式打开多窗口

:1,4y 拷贝1-4行

:1,4d 剪切1-4行

:%s/旧字符串/新字符串/g 字符串替换

(区分大小写!!!)

全部删除:按esc键后,先按gg(到达顶部),然后dG

全部复制:按esc键后,先按gg,然后ggyG

全选高亮显示:按esc键后,先按gg,然后ggvG或者ggVG

单行复制:按esc键后, 然后yy

单行删除:按esc键后, 然后dd

粘贴:按esc键后, 然后p

三.gcc

【1】gcc编译程序的过程

gcc test.c -o test

1.预处理

头文件的展开,宏的替换(其他预处理的替换),删除注释,不会对语法进行检查。

gcc -E 05define.c -o 05define.i

2.编译

对语法进行检查,将预处理后的.i文件编译成汇编文件

gcc -S 05define.i -o 05define.s

3.汇编

把汇编文件编译成二进制文件(但不会链接库)

gcc -c 05define.s -o 05define.o

4.链接

将上述的二进制文件和库的二进制文件通过连接器链接成可执行文件

gcc 05define.o -o 05define

【2】gcc编译常用的命令

gcc -E hello.c -o hello.i

gcc -S hello.c -o hello.s //汇编程序

gcc -C hello.s -o hello.o //转换成二进制

gcc hello.o -o hello.exe //链接

gcc hello.c -o hello //编译 //经常用到的

./hello //运行

//在Ubuntu系统下,编译的时候没有 -o+文件名时,会自动生成a.out执行文件

gcc *.c //运行当前目录下所以.c文件

!g //执行上一次编译的命令

// -I,头文件<>

四.追代码工具的使用

ctags :追代码的工具

☞使用方法:

1.创建索引

ctags -R =====>在当前目录下会生成以tags

2.追代码的命令

打开文件后的跳转

  • 跳进去ctrl + ]
  • 退回来ctrl + t

不打开文件

  • vi -t 函数名/变量