1.Shell命令
更多具体操作直接用到了再搜索。
或者用命令+”–help“ 或 man+命令查看帮助。
ls:目录信息查看。跟-a可以查看所有文件及文件夹包括隐藏的。
cd:目录切换。cd后直接跟想要进入的路径。
pwd:显示当前路径。
uname:查看系统信息,加-a显示全部信息。
clear:清屏。
cat:后面带上文件名或者路径,查看文件内容。
sudo:切换用户权限。
su:变更ubuntu用户。sudo su切换root用户。
cp:cp 源文件 复制文件。
touch:创建文件。
rm:删除文件。
mkdir:新建文件夹。
rmdir:删除文件夹。
mv:
1.文件或文件夹重命名—mv a.c b.c。
2.移动文件,如将a移动到test文件夹下------mv a.c test/。
ifconfig:显示/修改网络信息如ip地址等。
reboot:重启系统。
power off:关机。
man:系统帮助命令。按q退出。
sync:将数据同步写入磁盘。
find:查找文件。例如find -name a.txt
grep:查找文件内容。grep -rn “string” 查找的路径范围。-rn表示子文件夹也找,n表示找到了会返回对应所在行。-i忽略大小写。
du:查询目录或文件占用空间大小,一般搭配-sh,以人类可读方式显示,不显示子目录和文件大小。
df:磁盘空间检查。
gedit:记事本打开文件。
ps:查看系统当前进程–类似任务管理器。
top:类似任务管理器。
file:查看文件类型。
sudo dpkg -i deb文件名:安装deb文件。
mount:磁盘挂载命令。
umount:取消挂载。
2.文件权限
输入ls 文件名 -l可以查看文件权限信息,所属用户和用户组。
文件权限信息由三部分组成:—|—|—,分别为所属用户,所属用户所在组的其他用户,组外用户,三个”-”分别对应rwx,r是读,w是写,x是可执行,也可以用二进制数表示,r=1对应八进制4,w2,x1,rwx=7。
例如rw-rw----代表所属用户和组内用户可以读写。
修改文件权限:
chmod 新权限 文件名
修改文件所属用户:
chown
下面的分别是修改用户和用户组:
同时修改用户和用户组:
3.连接文件
注:ubuntu中ls查看文件,浅蓝色的是符号连接文件,绿色的是可执行文件。
符号连接:类似win下的快捷方式。指向的源文件要使用绝对路径,因为进行一些操作比如拷贝软连接文件,其实拷贝的是源文件。
硬连接:通过文件系统的inode连接来产生新文件名,inode类似于文件的id,查找文件时要先找到inode才能读出文件的内容。
ln:创建连接的命令,加-s是符号连接,不加是硬连接。
ll:查看inode,可以看到硬连接创建的文件inode和源文件一样,软连接不一样。也因为如此,对硬连接的文件任何一个进行修改都会导致另一个改变。
硬连接可以作为文件的拷贝,防止删除。由于不能连接到目录也不能跨文件系统比如接到u盘,所以硬连接其实不常用。
4.VIM编辑器
启动:vi 文件名
编辑模式:a
退出编辑模式:ESC
退出vim:
①:x保存并退出。②:q仅退出。③:w保存
其它指令用到了再查。
5.Makefile
1.规则格式:
Makefile仅编译上次编译后修改过的文件。
2.作用演示:
当文件规模大的时候不可能一个一个手动去编译,所以需要借助Makefile。比如现在有一个五个文件的小工程需要编译:
编写Makefile:
make编译,执行演示,清零演示:
3.语法规则:
Makefile变量:全是字符串,作用类似宏。
要是依赖文件多,打起来很麻烦,可以把上面的依赖文件弄成一个变量,通过$(变量名)进行调用,将刚才的Makefile结合变量修改:
3.1 赋值操作:
①“=”:输出为FINCHES。变量的真实值等于所引用的变量的最后一次修改的值。
②“:=”:输出为finches。只会使用:=前面定义好的,之后的值不作效。
③“?=”:输出为FINCHES。如果变量前面没有赋值过就用现在的赋值,如果赋值过就用之前的值。
④“+=”:给变量追加内容,其实是字符串追加。比如:
3.2 模式规则:
前面的Makefile文件中每一个.o文件都用一条规则去编译,如果文件很多的话还是很麻烦,所以可以用模式规则对所有.o文件进行编译。
模式规则需要进行目标定义,用“%”表示对文件名的匹配,表示任意长度的非空字符串,比如“%.c“就是所有以.c结尾的文件,a.%.c表示所有以a.开头,.c结束的文件。
自动化变量:
最常用的是$+@/</^三种。作用分别为:①规则中的目标集合;②依赖文件集合中的第一个文件,如果依赖文件是用“%”进行模式定义的,就代表符合模式的一系列文件的集合,如下面的修改;③所有依赖文件的集合,会自动去除重复的依赖。
结合自动化变量,将上面每一个.o文件的编译替换为如下两行:
3.3 伪目标:
一般目标都是要生成的文件名,伪目标不代表真的文件名,其作用是通过指定该伪目标去执行其所在规则定义的命令,又不生成真的文件。
比如前面的make clean。就是一个只执行命令用的目标,但是一旦创建一个名为clean的文件之后,这个命令就无法执行了,因此可以定义为伪目标的形式:.PHONY:伪目标名
3.4 条件判断:
语法:
<条件关键字>
<条件为真执行>
else
<条件为假执行>
endif
条件关键字包括:ifeq,ifneq,ifdef,ifndef。
①ifeq判断两个参数是否都相等,ifneq判断是否不相等。如ifeq(<参数1>, <参数2>)
②ifndef用于判断变量名对应的是否非空,是为真,否则假。使用方式如ifndef<变量名>
3.5 Makefile函数:
Makefile提供了很多函数,但是不支持自定义函数。
6.Shell脚本
命令行中一条一条敲命令非常麻烦,可以用Shell脚本取代很多重复的命令。Shell脚本是纯文本文件,后缀为.sh,命令执行顺序为从上到下。
1.基本使用方式:
编写了一个如下的脚本(第一行必须这样写):
提升权限使得脚本变为可执行文件:
2.交互式Shell脚本:
name是根据用户输入赋值的变量,注意这里调用变量的方式不需要加小括号。
3.数值计算:
需要用$(())括起来。read -p是打印提示信息的作用。
4.test命令:
用于查看文件是否存在,权限等。
cmd1 && cmd2:如果cmd1执行完毕且正确,执行cmd2,否则不执行。
cmd1 || cmd2:如果cmd1执行完毕且正确,那么不执行cmd2,否则执行。
例如下面查询当前目录下文件是否存在,文件存在执行&&后的,否则执行||后的。
5.中括号判断符:
注意:[]中只能输入==或!=。
比如这个字符串相似判断:
视频课程说要给[]里的变量什么的加“”,但是我没加也没出错,不知道捏。
6.条件判断:
①.if then:
else可以没有,fi代表命令结束。
②case语句:
*代表其他任意输入。
7.函数:
通过case语句调用函数:
传参:function可以省略
8.循环:
①while/until循环:
while是条件成立进行循环,until是不成立进行循环。
②for循环:
for循环实现遍历输出和累加。