sudo apt update
sudo apt install -y ssh
sudo apt install vim
sudo apt install net-tools
sudo apt install manpages manpages-dev
sudo snap install code --classic
Linux中一切皆文件Linux目录结构
/bin可执行命令程序的目录文件
/home用户的家目录,可能包含n个用户的文件夹,默认就只有我们创建的登录用户(后期可以创建)
/etc系统配置文件目录,例如:passwd(用户信息)
/usr用户的安装程序目录,相当于windows中的ProgramFiles
常用基本命令帮助命令
常用快捷键
Ctrl+C或Q:停止退出
Ctrl+L或clear:清屏
Tab键:补全
上下键:查找执行过的命令
文件目录类命令pwd
ls
cd
mkdir
touch
cp
rm
mv
cat
tail
echo
与>>输出重定向
ln
history
文件权限类命令
理解权限
文件权限是为了限制不同用户的操作级别,更安全
权限:读(r4)、写(w2)、执行(x1)
文件:
可读:查看文件内容r4
可写:更改文件内容w2
可执行:可运行x1
注意:文件是可重命令和删掉得看文件夹的权限
目录
可读:可以ls查看目录下的内容
可写:可以对目录内文件创建和删掉,重命令目录
可执行:可步入
内部使用3个二补码位来储存权限:rwx
也就是:4:r,2:w,1:x
可以相乘得到多个权限:3:wx5:rx6:rw7:rwx
用一个3位8补码位来代表一个文件整体权限
chmod
u:所有者g:所有组o:其他人a:所有人(u、g、o的总和)
chmod[{ugoa}{±=}{rwx}]文件或目录
chmod权限值[文件或目录]
chmod-R权限值目录
chown
改变所有者
sudochown最终用户文件或目录
sudochown-R最终用户:最终用户组文件或目录
chgrp
chgrp最终用户组文件或目录
搜索查找类命令
1)find
find目录-namexxx依照文件名称查找
find目录-userxxx依据用户名查找
find目录-szie200c依照文件大小查找
2)grep与“|”
进行输出过滤
ls|grepxxx
cata.txt|grepxxx
tar包的压缩和解压类命令
压缩/解压多个文件或文件夹
压缩:tar-zcvfxxx.tar.gza.txtb.txttest
解压:tar-zxvfxxx.tar.gz
tar-zxvfxxx.tar.gz-C./bb
进程线程类命令
ps-aux:查看系统中所有进程
ps-ef:主要查看母子进程的关系
kill-9进程号杀害某个进程
free查看显存使用情况
top查看系统健康状况
路径类
basename:得到路径中的除最左边一层的名称
dirname:得到路径中的除最左边一层外的目录
shell命令变量
显示当前Shell中所有变量:set
自定义变量
(1)定义变量:变量名=变量值linux tar 解压命令,注意,=号前后不能有空格。
(2)撤消变量:unset变量名。
(3)申明静态变量:readonly变量,注意:不能重新形参,不能unset。
可把变量提高为全局环境变量,可供其他Shell程序使用
特殊变量
$n(功能描述:n为数字,$0代表该脚本名称,$1-9代表第一到第九个参数,十以上的参数须要用大括弧包含,如9代表第一到第九个参数,十以上的参数须要用大括弧包含,如9代表第一到第九个参数,十以上的参数须要用大括弧包含,如{10}。)
(功能描述:获取所有输入参数个数,常用于循环,判定参数的个数是否正确以及强化脚本的强健性。)
$?(功能描述:最后一次执行的命令的返回状态。假如这个变量的值0,证明上一个命令正确执行;假如这个变量的值为非0(具体是那个数,由命令自己来决定),则证明上一个命令执行不正确了。)
算数运算条件判定
写法1:testcondition
写法2:[condition](注意condition前后要有空格)
常用判定条件
-eq等于(equal)-ne不等于(notequal)
-lt大于(lessthan)-le大于等于(lessequal)
-gt小于(greaterthan)-ge小于等于(greaterequal)
-r有读的权限(read)
-w有写的权限(write)
-x有执行的权限(execute)
-e文件存在(existence)
-f文件存在而且是一个常规的文件(file)
-d文件存在而且是一个目录(directory)
流程控制if
if [ 条件判断式 ];then
程序
fi
/*或者*/
if [ 条件判断式 ]
then
程序
fi
if [ 条件判断式 ]
then
程序
elif [ 条件判断式 ]
then
程序
else
程序
fi
注意事项:
①[条件判定式]linux软件工程师,中括弧和条件判定式之间必须有空格
②if后要有空格
case
case $变量名 in
"值1")
如果变量的值等于值1,则执行程序1
;;
值2)
如果变量的值等于值2,则执行程序2
;;
…省略其他分支…
*)
如果变量的值都不是以上的值,则执行此程序
;;
esac
注意事项:
(1)case行尾必须为词组“in”linux tar 解压命令,每一个模式匹配必须以右括弧“)”结束。
(2)双分号“;;”表示命令序列结束,相当于C中的break。
(3)最后的“*)”表示默认模式,相当于C中的default。
for
for ((初始值;循环控制条件;变量变化))
do
程序
done
/*或者*/
for 变量 in 值1 值2 值3…
do
程序
done
while
while [ 条件判断式 ]
do
程序
done
read命令
选项:
-p:指定读取值时的提示符。
-t:指定读取值时等待的时间(秒)假如-t不加表示仍然等待。
read-p“输出的提示文本”-t秒数变量名
旁边就可以通过$变量名得到输入的内容
函数
[ function ] funname[()] 注意只能省略其中一个
{
Action;
[return int;]
}
函数返回值,只能通过$?系统变量获得,可以显示加:return返回,倘若不加,将以最后一条命令运行结果,作为返回值。return后跟数值n(0-255)。
Shell工具cut
选项参数功能
-f列号,提取第几列
-d分隔符,根据指定分隔符分割列,默认是制表符“t”(只能是一个字符)
比如:从文本文件中剪出目标文本
cut-d””-f1cut.txt
它没有过滤行的功能,好多时侯须要利用grep进行过滤操作
awk
pattern:表示awk在数据中查找的内容,就是匹配模式。
action:在找到匹配内容时所执行的一系列命令。
选项参数功能
-F指定输入文件的分隔符
-v形参一个用户定义变量
变量说明
FILENAME文件名
NR行号
NF切割后列的个数
正则表达式
^匹配一行的开头
$匹配一行的结束
.匹配一个任意的字符
*不单独使用,他和上一个字符连用,表示匹配上一个字符0次或多次
[]表示匹配某个范围内的一个字符
表示通配符
版本控制Git安装
windows:运行git.exe,按图示进行安装
linux:sudoaptinstallgit
配置用户名和邮箱:
gitconfig--globaluser.name[name]
gitconfig--globaluser.email[email]
git的基本命令
git三个重要的区:工作区、暂存区、版本区(本地库房)
添加git忽视配置:.gitignore
gitinit初始化库房,生成工作区=>生成.git文件夹
gitadd.将工作区的更新添加到暂存区
gitcommit-m”xxx”将暂存区的更新递交到本地库房
gitstatus查看工作区和暂存区的状态(是否有更新)
gitreflog查看历史版本信息
gitreset--hard版本号得到指定版本的代码
远程库房
gitconfig--global[用户名]
gitconfig--globaluser.email[邮箱]
gitremoteaddorigin[库房地址]
gitpush-uoriginmain:master
会提示输入用户名和密码
gitclone[库房地址]
执行git推送(push)时,假若远程对应的分支已更新,会提示必须先拉取(pull)更新
执行git拉取时,假若远程和本地库房都改了同一个文件才会出冲突
默认不会进行带冲突的合并,须要添加配置指定手动合并:gitconfigpull.rebasefalse
再度执行git拉取linux操作系统简介,会手动进行带冲突合并
打开文件,修刚好冲突合并的文件
添加到暂存区=>递交到本地库房=>推送到远程
Linux应用GCC、glibc与GNUC的关系使用VSCodeC程序的编译过程
1)预处理
选项参数:-E
生成:xxx.i
作用:将省略和引入的内容展开添加进来,删掉代码注释
编译
选项参数:-S
生成:xxx.s
作用:生成汇编代码,还包括编译器和操作系统版本信息
汇编
选项参数:-c
生成:xxx.o
作用:对单个汇编源代码编译生成机器码文件
机器码文件内部组成