01.C(Linux命令)

简介: (创建于2017/8/13)system命令(命令行)1.calc 打开计算器2.control 打开控制面板3.system("start calc");//执行打开计算器的动作(这些命令都可以这样调用)4.

(创建于2017/8/13)

system命令(命令行)

1.calc 打开计算器
2.control 打开控制面板
3.system("start calc");//执行打开计算器的动作(这些命令都可以这样调用)
4.%x 代表用十六进制打印整数
5.gcc -o b a.c -o用于指定文件名,执行后生成的文件名为b
6.POSIC 编译规范,windows和linus同样代码编译结果可能不同,导致程序移植问题,所以
用linux系统,代码移植性良好

7.c语言编译过程
预编译 .c文件  
编译            
链接 可执行程序

gcc -E -o a.e a.c -E预编译a.c文件生成名字为a.e的文件 E表示预编译
预编译的功能
1把头文件内容原封不动包含进来,同时将代码中没用的部分删除

8.使用头文件
\#include<XX>表示让编译器去系统目录下找头文件,调用系统头文件
\#include“XX”表示让编译器去当前目录下找头文件,调用自己写的头文件

9.gcc -S -o a.e a.c -S表示汇编 将c语言转化为汇编语言 
c语言代码
int a;
int b;
int c;
a=1;
b=2;
c=a+b;
转换为汇编语言就是
__asm
{
    mov a,1;  //把1放入a
    mov b,2;  //把2放入b
    mov eax,a; //把a值放入cpu寄存器中
    mov eax,b;//把b值放入cpu寄存器中和a值相加后继续放入寄存器中
    mov c,eax; //把寄存器中值放入c
}

10. gcc -c -o a.e a.c  -c表示编译,将代码编译为二进制的机器指令
11. gcc没有任何参数,代表就是链接,将库和目标文件打包
12.RISC :精简指令集
  CISC :复杂指令集
  x86架构的cpu都是复杂指令的 Linux就是基于x86的操作系统
  20%的指令为常用指令,在一个程序执行的时候会调用比例达到80%
  但80%指令为不常用指令,在一个程序执行的时候调用比例为20%

文件管理

1)查看文件信息 ls

ls -a :a就是all的简写,这样会打印出所有文件包括隐藏文件.xx

ls -h :h是human的简写,意思就是以人类可读的方式打印,通常只文件大小的显示格式,比如加上-h会以KB的形式显示而不是可读性差的字节显示

ls -l :l是list的简写,指以列表的形式显示文件信息

ls和通配符结合使用可以指定查找条件
ls ?.c :显示当前文件夹下所有以.c为结尾,前边只有一个字符的文件,?表示一个字符

ls [1-9].c :表示查找.c结尾,前边只有一个数字并且这个数字是1到9之间任意数字的文件

2)输出重定向>,一般和其他文件操作命令结合使用

ls > a.txt:表示将当前目录文件信息输出到a.txt文件中,如果文件存在,覆盖原有文件中的内容,如果文件不存在,则创建文件

ls >> a.txt: 和单个>的区别在于,这个操作不会覆盖原有文件内容,而是追加在后边

3)more 分屏显示

查看文件内容时,在信息过长无法在一屏上显示时,会出现快速滚屏
,导致无法看清文件,使用more命令,每次只显示一页,按下空格键
可以显示下一页,按q键退出显示,按h键可以获取帮助

如查看index.html文件
more index.html
  1. 管道 |:一个命令的输出通过管道作为另一个命令的输入,通俗来说,可以理解为管子,在管子的一头放入东西,在另一头取出来使用
ls | grep  std :命令表示将当前目录的文件信息放入管道,另一端对这些
信息进行筛选,得到列出来以std开头的文件,std不是命令,只是筛选
关键字
 

5)清屏:clear

clear作用为清楚终端上的显示,类似dos的cls清屏功能,也可以使用快捷键:Ctrl+l(l是字母L不是1)

6)切换目录cd

cd /home :进入根目录home,前边加/表示根目录,绝对路径
cd home:进入当前目录中的home文件夹,相对路径
cd  直接输入cd什么都不加,会切换到当前用户主目录,用户登陆的时候默认的目录就是用户主目录
cd ~ 也是切换到用户的主目录
cd . 切换到当前目录
cd .. 切换到上级目录
cd - 进入上一个进入的目录

7)当前目录pwd

输入pwd会打印出当前路径

8)创建目录 mkdir

mkdir ren 在当前目录创建文件夹ren
mkdir ren/ren  注意这样写必须是当前目录下已经有了一个ren,然后才可以在这个ren里边创建一个ren,如果当前目录没有ren会创建失败,这时候可以使用-p递归创建目录
mkdir -p ren/ren

9)删除目录rmdir,只能删文件夹

rmdir ren 注意如果ren不是个空目录则会删除失败

10)rm删除,可以删文件或者文件夹

rm -i ren.txt 以进行交互的方式执行删除命令,会有提示
rm -f ren.txt  强制删除,忽略不存在的文件,无需提示
rm -r  ren 递归的删除目录下的内容,删除文件夹必须加-r标志
rm * -rf 这是一个非常危险的命令,会删除所有的东西并且没有提示,注意小心使用

11)建立链接文件:ln

Linux链接文件相当于Windows下的快捷方式
软链接:
1.类似Windows的快捷方式,软链接依赖于源文件存在
2.如果源文件删除,软链接没有意义
硬链接:
1.给某个文件拷贝一份,这两个文件独立占用内存,
2.改变其中一个文件,会影响到另一个文件
3.删除某一个硬链接文件,不会影响另一个

ln 源文件 链接文件(硬链接)
ln ren.txt a.txt

ln -s 源文件 链接文件(软链接)
ln -s ren.txt a.txt 

12)cat 文件名 查看一个文件内容

cat ren.txt 会显示ren.txt中的内容

13)grep 文本搜索(在一个文本中搜索关键字),查找过滤

grep a ren.txt 从ren.txt文件中查找含有a的东西,比如单词句子等,列出来,这样是大小写敏感的
grep a ren.txt -i 大小写不敏感,会将大小写都查出来
grep '1 2 3' ren.txt -ni   把1 2 3当作一个整体查找,显示行号,大小写敏感,如果不加引号,不会把它当作整体

14)find 查找文件,在一个目录中查找文件的名字

find ./ -name ren.txt :./表示当前目录 -name表示查找文件名

find ./ -name '*.txt' :查找当前目录下所有后缀为.txt的文件
(目前在mac上尝试的结果是搜索的关键词加上‘’或者“”和不加引号的效果是差别非常大的
  不加引号,会搜索当前同一目录下符合条件的文件,但是如果加上单引号或者双引号,会
  搜索党当前目录下和当前目录下的子目录下的所有符合条件的文件,会遍历所有的文件)


find ./ -name "[A-Z]*" :查找当前目录下所有大写字母开头的文件
find /tmp -size 2M :查找tmp目录下等于2M的文件
find /tmp -size +2M :查找tmp目录下大于2M的文件
find /tmp -size -2M :查找tmp目录下小于2M的文件
find /tmp -size +4k -size -5M :查找tmp目录下大于4k小于5M的文件(k是小写,M是大写)
find ./ -perm 0777 :查找当前目录下权限为777 的文件或目录(0777中0表示八进制)

15)拷贝文件cp
cp命令功能是将给出的文件或目录复制到另一个文件或目录中,相当于DOS下的copy命令

(在mac中测试发现 -a -r 等要放在cp后边 文件前边)
cp -a ren/ ren2/ :将目录ren拷贝到ren2中,复制目录时使用-a选项,可以保留链接,文件属性,并递归的复制目录,简而言之,保持文件原有属性
cp -f ren.txt ren2.txt  :删除已经存在的目标文件而不提示,当目标文件ren2.txt存在时,直接覆盖,不提示用户
cp ren.txt ren2.txt : 覆盖文件时提示用户确认
cp -r  ren ren2 :若给出的原文加是目录文件,则cp将递归复制该目录下的所有子目录和文件,目标文件必须为一个目录名
cp -v ren.mp4 ren2.mp4 :显示拷贝进度
命令组合使用
cp -ivr ren ren2  : 拷贝目录ren到ren2中(包括ren这个目录,会在ren2目录下重新创建一个ren文件夹),提示用户是否覆盖显示拷贝进度,递归的复制

16)移动文件mv
移动文件同样具有三个常用选项
-f 覆盖不提示
-v 显示进度
-i 覆盖要提示

mv ren.txt ren :移动文件ren.txt到目录ren下
mv ren.txt ming.txt :移动ren.txt到当前目录下并重命名为ming.txt
  1. file查看文件类型
    Linux系统文件类型不是根据文件扩展名分类的,通过file可以查看文件类型
格式:file 文件名
会告诉你这个文件是可执行文件还是普通文本文件

17)归档管理:tar(常用选项可以不加- 如 tar cvf xxx)
tar命令可以把一系列文件归档到一个大文件中,也可以把档案文件解开恢复数据,相当于备份和恢复,注意归档没有压缩的操作,也不存在解压缩

打包:tar -cvf xxx.tar yyy(需要打包的文件,可以是多个 空格隔开,-c表示打包,-v表示显示进度,-f表示后边的是文件)
解包:tar -xvf xxx.tar(要被解包的文件)    不指定路径,默认解包到当前路径
解包并指定解包路径:tar -xvf xxx.tar -C ../dir    指定路径必须在前边加-C(大写)

18)压缩:gzip

gzip aaa.tar :压缩aaa.tar 在当前路径得到aaa.tar.gz (这个后缀是不是很熟悉)

19)查看目录大小:du

du -h ./jni    查看jni目录大小,以可读方式显示

20)解压:gzip -d

gzip -d xxx.tar.gz :解压缩在当前目录得到xxx.tar

21)压缩打包

tar -czvf xxx.tar.gz xxx(所需文件)(f一定是放在最后边,加了个z就可以压缩了)

22)解压解包

tar -xzvf xxx.tar.gz        到当前目录

23)文件压缩打包bzip2(和gzip一样都是压缩)

tar 与 bzip2命令结合使用实现文件打包压缩(用法和gzip一样)
tar只负责打包文件,不压缩,用bzip2压缩tar打包后的文件,其扩展名一般用xxx.tar.bz2
用tar命令增加一个选项(-j)可以调用bzip2实现一个压缩功能,实现一个先打包后压缩的功能

压缩:tar -jcvf 压缩包包名 文件 (tar -jcvf bk.tar.bz2 *.c)
解压:tar -jcvf 压缩包包名 (tar jxvf bk.tar.bz2)

24)文件压缩解压:zip unzip

通过zip压缩文件的目标文件不需要指定扩展名,默认扩展名zip
压缩文件:zip -r (必须加此参数) 目标文件(没有扩展名) 源文件
解压文件: unzip -d 解压后目录文件 压缩文件

25)which 查看命令位置

which ls : 输出命令ls的命令位置 /bin/ls

用户管理

01)查看当前系统账户用户名 whoami
02)查看登录过的用户who / w 显示登录过的用户的时间等信息
03)退出登录 exit

如果是图形界面,退出当前终端
如果是使用ssh远程登录,退出登录账户
如果是切换后的登录用户,退出则返回上一个登录账号

04)切换用户su

可以通过su命令切换用户,su后面可以加“-”,su和su - 命令不同之处
在于,su - 切换到对应的用户时会将当前的工作目录自动转换到切
换后的用户主目录

su : 切换到root用户
su root : 切换到root用户
su - :切换到root用户,同时切换到目录/root
su 普通用户 切换到普通用户
su -普通用户 切换到普通用户,同时切换到 普通用户所在目录
img_a8d1e56b5c6814527d515e6129e4ae1f.png
切换差别.png

05)添加删除组账号:groupadd groupdel

groupadd 新建组账号
groupdel 删除组账号
cat /etc/group 查看用户组

06)修改用户所在组

使用方法:usermod -g 用户组 用户名
sudo usermod -g admin ren :sudo以管理员权限执行

07)添加用户useradd或者adduser

adduser命令是指向useradd命令的一个链接,因此使用完全一样
useradd [参数] 新建用户账号

-d <指定的用户主目录>  如果不使用这个参数系统自动在/home目录下建立与用户名相同的目录为主目录
-m 自动建立目录 
-g 指定组名称

useradd -d /home/user adc -m :添加用户adc 并且设置abc的主目录为/home/user,-m表示的意思就是如果user不存在,自动创建

08)删除用户userdel

sudo userdel hello
userdel adc 删除abc但不会删除用户的主目录
userdel -r abc 删除用户的同时删除用户主目录

09)last查看用户最后登录时间
10)修改文件权限:chmod

有两种使用格式:字母法与数字法
字母法:chmod u/g/o/a +/-/= rwx 文件
u:user表示该文件的所有者
g:group 表示与该文件的所有者同属于一组者,即用户组
o:表示其他以外的任
a: all表示这三者都是
+:增加权限
-:撤销权限
=:设定权限

chmod u+x 1.c :表示给u(user)增加执行的权限
chmod g-x 1.c:表示撤销组内成员执行的权限
chmod o=rwx 1.c : 给其他设置可读可写可行执行的权限

数字法:
---  
000  0 表示没有任何权限

r--
100 4 表示有读的权限

-w- 
010 2 表示有写的权限

--x 
001 1 表示有执行权限

rw-
110 6 表示有读写权限

rwx 
111 7 表示有读写执行权限

文件夹权限说明:
x:文件夹如果没有此权限,不允许用户进入
r: 文件夹如果没有此权限,无法查看文件夹内容,无法ls
w:没有这个权限,无法新建或删除文件

11)修改文件所有者:chown

使用方法:chown 用户名 文件或目录名
chown edu 1.txt 修改1.txt文件的所有者为edu ,如果不被允许,可以加上sudo 执行

11)修改文件所属组:chgrp

sudo chgrp root 1.c :修改1.c所属组为root

系统管理

01)查看当前日历:cal

cal 命令用于查看当前日历,-y显示整年日历 

02)显示或设置时间:date

  1. 查看进程信息:ps
-a 显示终端上所有进程
-u 显示进程的详细状态
-x 显示没有控制终端的进程
-w 显示加宽,以便显示更多的信息
-r 只显示正在运行的进程

ps -aux | grep gedit : 显示gedit进程信息

04)动态显示进程: top
05)终止进程:kill

kill -9 4173 :强制关闭id为4173的进程

06)后台程序 & jobs fg

用户可以将一个前台程序调入后台执行,方法为:命令 &,比如hello 是一个可执行程序,我将它调用后台 hello &
如果程序已经在执行,ctrl+z可以将它调入后台
jobs查看后台运行程序
fg编号(编号为通过jobs查看的编号)将后台程序调出到前台

07)关机重启:reboot shutdown init

reboot :重启操作系统
shutdown -r now 重启操作系统,shutdown会给别的用户提示
shutdown -h now 立刻关机,其中now相当于时间为0的状态
shutdown -h 20:23 系统将在20:25关机
shutdown -h +10 系统十分钟后关机
init 0 关机
init 6 重启

08)检测磁盘空间:df

-a 显示所有文件系统的磁盘使用情况
-m 以1024字节为单位显示
-h 以K M G为单位,提高信息可读性

09)检测目录所占磁盘空间:du

du [选项] 目录或文件名
-a 递归显示指定目录中个文件和子目录中文件占用的数据块
-s 显示指定文件或目录占用的数据块
-b 以字节为单位显示占用情况
-h 以K M G为单位,提高信息可读性

10)查看或配置网卡信息:ifconfig(和Windows中ipconfig类似)
11)测试远程主机连通性:ping ip地址

编辑器vi

vi是Linux中最常用的编辑器,vim是vi的升级版,公认的vi中最好的一个
01)打开文件 vi filename

打开或新建文件,并将光标置于第一行行首,如果文件不存在会创建

02)保存文件:shift + zz(其实就是按两次大写Z)(编辑模式下按esc退出到命令模式,然后按这个)

新建一个文件如果什么都不写,是无法保存的
03)编辑文件,命令模式下,按i进入编辑模式
04)强制退出不保存:

:q!

05)退出保存

:wq

06)vi的一些常用快捷键

F9:显示侧栏
\p< :头文件
\im :生成一个main函数
\ip :生成一个printf
ctrl+n:显示历史写的代码

07)vi的set指令

:set ic 搜索时忽略大小写
:set noic 搜索时不忽略大小写
:set nu 显示行号
:set nonu 不显示行号

远程操作

。。。。

t

相关文章
|
16天前
|
运维 安全 Linux
Linux中传输文件文件夹的10个scp命令
【10月更文挑战第18天】本文详细介绍了10种利用scp命令在Linux系统中进行文件传输的方法,涵盖基础文件传输、使用密钥认证、复制整个目录、从远程主机复制文件、同时传输多个文件和目录、保持文件权限、跨多台远程主机传输、指定端口及显示传输进度等场景,旨在帮助用户在不同情况下高效安全地完成文件传输任务。
112 5
|
15天前
|
Linux
Linux系统之expr命令的基本使用
【10月更文挑战第18天】Linux系统之expr命令的基本使用
51 4
|
2天前
|
缓存 监控 Linux
|
6天前
|
Linux Shell 数据安全/隐私保护
|
6天前
|
域名解析 网络协议 安全
|
14天前
|
监控 Linux Shell
|
13天前
|
运维 监控 网络协议
|
16天前
|
Unix Linux
Linux | Rsync 命令:16 个实际示例(下)
Linux | Rsync 命令:16 个实际示例(下)
28 3
Linux | Rsync 命令:16 个实际示例(下)
|
19天前
|
安全 Linux
Linux系统之lsof命令的基本使用
【10月更文挑战第14天】Linux系统之lsof命令的基本使用
75 2
Linux系统之lsof命令的基本使用
|
3天前
|
缓存 Linux 开发者
深入理解Linux命令 `autom4te`
`autom4te` 是 GNU Autotools 中不可或缺的组件,通过高效处理 M4 宏,生成配置脚本并提供强大的调试功能。了解 `autom4te` 的工作机制和常用选项,可以帮助开发者更好地编写和维护配置文件,从而提高软件项目的配置和编译效率。在实际应用中,结合 `autoconf` 等工具,`autom4te` 能够为项目的构建过程提供坚实的基础。
11 2