本文一万多字,脑子不好的小菜鸟花了整整两天的空闲时间写完的,大家如果觉得还可以的话,点点赞或者关注吧,谢谢啦,祝你题题AC
列出目录内容
列出当前目录中的文件和子目录,但不包括以.
(当前目录)和..
(上级目录)开头的隐藏文件或目录。
在Linux下,若文件名以 " . "开头就是隐藏文件(windows下也有类似的隐藏文件,若大家将代码会上传到gitee上,则在你上传代码的文件夹下做以下操作会发现有一个以" . "开头的git隐藏文件,若你不显示隐藏文件,则这个文件你查看不到)
1. 保护重要文件
2.通常用来隐藏配置文件
以长格式列出当前目录中的文件和子目录的详细信息,这个命令所列出来的信息较 ls 的更详细,包括文件类型和权限、链接数、所有者、所属组、文件大小、最后修改时间等。
我在从Linux角度具体理解程序翻译过程-----预处理、编译、汇编、链接_翻译、预处理、编译-CSDN博客中也列了这样一张表格,展示了用ls -l列出的各列的含义
文件类型 | 文件权限 | 硬链接数 | 文件拥有者 | 文件所属组 | 文件大小(以字节为单位) | 文件创建时间或者最近更新时间 | 文件名 |
---|---|---|---|---|---|---|---|
- | rw-rw-r– | 1 | xkjtx | xkjtx | 627 | Apr 18 21:32 | codetest |
d | rwxr-xr-x | 2 | xkjtx | xkjtx | 6 | Apr 13 19:42 | Desktop |
Linux下文件信息:
在Linux中,输入ll命令会显示文件和目录的详细信息。这些信息通常分为若干列,每列的含义如下:
接下来的九个字符分为三组,每组三个字符,代表文件权限:
这个组存在的意义是:有时为了保护文件所属者的信息,文件只有自己可见,但这样子会有弊端:当文件所有者的同事或者上级想查看文件时,无法查看,只能打开other查看的权限,但是这样子所有人都可以看,而不只是上级和同事,因此设置了group(文件所属组)权限,设置了**其他人可见,并保证了隐私**
列出当前目录中的所有文件和子目录,包括以.
(当前目录)和..
(上级目录)开头的隐藏文件或目录。
结合了**-a
**和**-l
**的功能,以长格式列出当前目录中的所有文件和子目录的详细信息,包括隐藏文件或目录。
进入“目录名”这个目录
Ψ( ̄∀ ̄)Ψ:敲黑板了嗷~
进入文件:给你脑门敲稀碎😤😤😠╰(‵□′)╯
这个命令只可以进入目录,不能进入文件!!!
返回上级(Linux中.
通常表示当前级, 而..
表示上一级)
进入用户家目录,也就是路径为:/home/"用户名"
返回最近访问的目录
显示当前工作目录的 绝对路径
(
关于路径的扩展:
分类:
使用场景
区分
.
,表示的是当前路径
/
也就是Linux下的一个目录/ /
里的一定是目录或者文件夹,但在/
或的可能是文件或者文件夹,也就是说路径有以下两种形式/目录名/目录名/目录名
/目录名/目录名/文件名
tree /
,哎哟我,刷刷刷一个屏幕,全是文件一闪而过,我又又想ctrl + c
终止掉的冲动,还想看它到底有多少,就一直看它唰唰唰几个页面,如果又tree命令的阅读者,可以试试哦😜,没有的也不着急,后面会教大家怎么下载tree,tree命令有时候让你的文件的分区非常清晰哦,如下就是我的tree的一部分,是不是真的把层次展现的非常清晰呢Ψ( ̄∀ ̄)Ψ~~~)
mv的缩写
源文件名:被复制的内容所在文件
目标文件名:要增加复制的内容的文件
移动文件:
mv 源文件名 目标文件名
移动目录:
mv 源目录名 目标目录名
重命名文件:
mv 老文件名 新文件名
remove的缩写
rm 选项 文件/目录
删除文件:
rm 文件名
删除目录(需要加上“ -r ”选项,仍然是递归的意思):
- 可以询问(这里的询问意思是:有时候Linux防止你误删,会向你确认是否要删除这个目录,你需要输入y/n来决定是否删除)
- 强制删除,不询问
删除前访问
rm -i
执行程序,通常用在编译代码后运行代码
./
和"可执行程序名"
之间没有空格用于创建目录。例如:mkdir 目录名
。
rmdir 目录名
。用于创建空文件或更新文件时间戳。例如:touch 文件名
。
用于显示命令的使用手册。例如:man ls
:显示ls的使用方法,如同c中MSDN的作用
用于在文件中搜索指定模式。例如:grep pattern file.txt
。
用于在文件系统中查找文件。例如:find 路径 -name "文件名"
。
find ~ -name "文件名"
在用户的家目录和其子目录下寻找该文件tar -cvf 归档文件名 被打包的文件1 被打包的文件2 被打包的文件3....
- 作用
- 注意 只是打包了文件,并
tar -czvf 归档文件名 被打包的文件1 被打包的文件2 被打包的文件3....
- 作用 打包
- c : 创建一个压缩包
- z:压缩
- v:显示压缩进程
- f : 后面接**形成的文件名称**,注意:**f一定要放最后**,cvz顺序随意
- 作用
- x : 解压
head
tail
思考
讲到这里,请思考一下如果我们想要test.c文件中的第999行到1009行应该怎么做呢?
方法:
方法1
输出重定向
)tail -100 temp.c > dest.c
rm temp.c
方法2
这里就要引入一个概念了:管道
什么是管道呢?
管道的理解
所以我们的写法是:head -1009 test.c | tail -100 > temp.c
(是不是脑子有点懵懵哒?那本小菜鸟就用画图让俺的读者理解一下什么是管道吧~)
也就是说:
>
输出重定向到了目标文件temp.c
这里就省去了我们建立临时文件的功夫了,而管道帮我们做了
用管道的好处:
文件是存在磁盘的,而管道是将文件存在内存的,而访问速度从快到慢为:
CPU > 内存 > 磁盘 > 光盘和磁带
登出当前用户(就是退登的意思)
增加用户
删除用户
- 扩展知识: 这里的
- 扩展知识 这里的
<
是输入重定向如果执行以下操作会输出什么?🧐🧐🧐
test1.txt
,test2.txt
脑子不好的小菜鸟跑路
眼尖的同学可能发现了,tac是cat的逆序写法,而他们的作用也确实相反:
逆序输出文件
注意:
这里的逆序不是把所有字都逆向输出,而是以行为单位,倒着输出,如以下代码
int main()
{
int i;
for (i = 0; i < 100; i++)
printf("如果能上清华就好了\n");
return 0;
}
逆向输出就是:
}
return 0;
printf("如果能上清华就好了\n");
//cout << "如果能上清华就好了" << endl;
for (i = 0; i < 100; i++)
int i;
{
int main()
#include <stdio.h>
看似无用,其实用处还是挺大的,比如有一个文档,有上万行,但是用cat打印出来在屏幕上时,最后只能看见文件的最后几行,你要看第一行或者其他较为靠前的行数,你需要翻阅很久才能找到,但是当逆序打印时,前面的几行能立马看见
打印内容到显示器
echo
**命令**:
echo
命令用于在终端上打印指定的文本或变量的值。
它通常用于简单的文本输出
如输入以下指令时:
echo "a = 10"
它会显示:
a = 10
echo
命令不会读取文件内容,而是直接将指定的文本输出到标准输出(通常是终端)。
也就是说,如果输入以下命令:
echo test.c
test.c
,根本不会输出test.c
中的代码test.c
中的内容cat
**命令**:
cat
命令用于连接文件并打印它们的内容到标准输出。cat
命令可以接受多个文件名作为参数,并按顺序输出它们的内容。总的来说,echo
主要用于文本输出,而cat
主要用于文件内容的查看和连接。
- 向下查看内容:**摁enter键**,注意哦~~~:**摁上下键没有用**
- 退出:按`q`
- more 5 “文件名”:只打印5行
- `/`:向下搜索"字符串"的功能
- `?`:向上搜索"字符串"的功能
- `n`:重复上一个搜索(next的缩写)
- `g`:回到一开始
显示当前你所处的账户名
在系统路径中查找特定的指令所在位置
找包含该指令的路径
alias 别名='指令名'
给命令起别名,如:alias zhangsan='touch'
,那么你就可以zhangsan test.c
来创建test.c文件了
注意
该别名只在这次登录有效,下次登录无效,所以这里大家可以作为娱乐玩
打印日历
平时没有什么用处,但是当在数据库这种安保要求较高的地方,手机并不能带,这个时候可以用这个命令来确定当前时间
计算器
ctrl + c
echo "1+2+3" | bc
:显示1+2+3的答案到屏幕这个命令记住有时候真的很爽哦😎
whi
,它会给你输出which while whiptail
,当你有时候想不起那个命令具体怎么写的时候可以用哦)这不是很简单吗,不就是P图吗
前置知识
进程
任务资源管理器
,什么就会显示目前在运行的程序(也可以叫做进程)- PID
- 执行状态
- 优先级
- …
进程状态
R
运行状态
,也就是Running的首字母
S
含义
休眠状态,等待事件完成(如:等待某个文件加载到缓冲区)。Sleeping的缩写
终止该状态
输入kill -9 "该进程的PID"
扩展:
1.kill命令
用法:
(1)kill -19 "要被结束进程的PID"
这个命令:用来结束一个进程
【注】查看PID:
1)输入 ps axj | head -1 && ps axj | grep '你的可执行程序名'
2)查看“PID”对应的那一列-----该进程的PID
[解释]:*ps axj:显示进程的详细信息
*head -1:显示头部(显示每一列代表的 含义){注意不是kill -l(字母l),而是数字1}
*grep '你的程序名':在所有进程中找你的程序
*-19:只是一种信号,信号不同,kill所做的指令不同,若想看各种信号是什么用途,请在命令行输入:man kill
注意
该状态可随时被唤醒
D(disk sleep)
T
暂停或调试状态(STOP)
当要继续执行时:
kill -18 该进程的PID
X
终止状态(该状态瞬时性非常强,所以一般见不到这种状态)
Z
僵尸状态
说到这里,我就不得不提两个比较特殊的进程了:孤儿进程
和僵尸进程
- 形成原因: 子进程还没进行完,父进程比子进程先退出(注意:在进程中,父子进程的退出先后没有特定的顺序,谁先运行完是调度器决定的),子进程后退出
- 处理方法 当孤儿进程出现后,系统会给孤儿进程安排一个1号父亲(这个时候可以看见该进程的PPID变为1),这个1号进程也叫init进程,这个init进程会将该子进程回收
- 后果 这属于正常现象,并不会造成上面太大的危害
- 形成原因: 子进程已经进行完了,但是
- 处理方法 请各位移步该文章哦:
- 后果 会导致
- 为什么是内存泄漏呢? 因为该状态一直不执行,就会一直在内存中等待被操作----->不被释放---->占用内存资源----->内存泄漏==
ps
查看当前进程的状态
ps axj
查看当前所有进程的状态
ps axj | head -1 && ps axj | grep test
显示包含”test“的进程
【注】:head -1:显示头部
PPID PID PGID SID TTY TPGID STAT UID TIME COMMAND
显示进程的状态信息
一个文本编辑器,用户可以编辑文本
用法
nano 文件名
一个功能强大的文本编辑器,它支持多种模式,包括普通模式、插入模式和命令模式,这三个模式的转化方法如下:
调试工具,Linux并不像IDE一样,会把编译等多种功能集合在一起,而是分开的
格式
gdb 可执行文件名
注意:说可执行文件名,不是源文件,谁写源文件名,我给他一棒槌( ̄ε(# ̄)☆╰╮o( ̄皿 ̄///)
chown
命令用于改变文件或目录的所有者(owner)。其基本语法为:chown 新所有者 文件或目录
chmod 操作 文件名
- 作用: 改变文件的属性(这里的属性指的是:当输入ll时第一大列的属性,如:
rwxrwxrwx
这个怎么看呢?分三列三列的看
- r:读权限
- w:写权限
- x:粘滞位
)
- 这里所说的操作可以有以下几种操作,大家可以根据喜好进行操作
- `chmod u+x test.txt` 这里的意思是:给user(文件所有者)加上
- `chmod 456 test.txt` 这里的意思是:
给user添加:-r-权限(对应的是010)
给group添加:-rx权限(对应的是011)
给other添加:rw-权限(对应的是110)
- `chmod u=rwx test.txt` 这里的意思是:
给user设置rwx权限
- 若要给所有人设置rwx,则:`chmod a=rwx test.txt`(a:all的缩写)
chgrep 新所属组 文件名
作用
使用正则表达式搜索文本,并将匹配的行打印出来
使用
若想在test.c找含有hello
的行,则:
grep hello test.c
有软件包的安装、卸载、更新、查询等功能。
以下是yum
的一些基本命令和用法:
安装软件包:
yum install 软件包名称
卸载软件包:
yum remove 软件包名称
更新软件包:
yum update 软件包
列出可用的软件包:
yum list 软件包
查找软件包:
yum search 软件包
列出已安装的软件包:
yum list installed
注意
在使用yum
时,请确保你有足够的权限来安装或卸载软件包。通常,需要使用 sudo
命令来获取必要的权限
下载
sudo yum install 软件包名称
卸载
sudo yum remove 软件包名称
更改进程的nice值
- 为什么有? CPU资源是有限的,但是又有非常多的进程要调用CPU,这就会出现资源
- 什么是优先级 确认使用CPU资源谁先谁后的参考标准
- Linux的优先级计算标准 优先级 = 老的优先级 + nice值
- 查看老优先级和nice值 输入
优先级越小越早被执行
设置环境变量
使用方法
export 环境变量名="你要设置的环境变量"
环境变量
概念
环境变量是系统用来传递信息的变量,它们在程序启动时被设置,并且可以在程序之间传递(如:父进程和子进程,子进程会继承父进程的所有属性)。环境变量可以被程序读取,并用于决定程序的行为,例如指定程序的路径、配置选项或连接到特定的数据库。
作用
其实我们在命令行中输入ls
这个命令时,同时可以输入ls这个命令的地址 来执行ls这个命令(地址通过which ls
这个命令来获取)
但是我们不可直接用名字执行自定义的命令,而是要用地址的方式
若想和ls
这样子直接用名字执行命令的方式执行自定义命令,则就要用到`环境变量
export PATH=$PATH:'你自定义的命令命令的所在路径'
不切换到root用户但可以执行某些特定指令
前提
你得是被信任用户
被信任用户添加方法
切换到root身份
编辑 sudoers 文件
使用 visudo
命令编辑 /etc/sudoers
文件。这个文件描述了哪些用户可以使用 sudo
命令以及可以执行哪些操作。
sudo visudo
添加用户到 sudo 组:
usermod -aG sudo 要被授权的用户名
/etc/sudoers
文件中,您可以使用以下语法添加用户或用户组的权限:要被授权的用户名 ALL=(ALL:ALL) ALL
这将允许 要被授权的用户 以任何用户(ALL)和任何组(ALL)的身份执行任何命令。
visudo
中保存并退出文件。确保您的更改没有错误,以免导致系统权限问题。sudo
命令以验证权限是否已生效。注意:修改系统文件时应格外小心,确保不会产生潜在的安全风险。
执行"makefile"文件中的内容(或者"makeFile"),所以通常它们同时使用
makefile的介绍
存在意义
自动化地构建项目/自动化地把源文件变成可执行程序
写法
通常是以下写法
mytest:test.c
gcc test.c -o test -g
.PHONY:clean
rm -f test
- mytest : test.c mytest:依赖关系
test.c:依赖方法
我们并不需要理解什么叫依赖关系,什么叫依赖方法,我们只需要知道:
1.
- gcc test.c -o test -g 编译
- -o :相当于起别名
- -g:可调试,若无这个部分,则默认生成的可执行文件时release版本(不可调试)
这是一个很有意思的插件啦,需要下载哦,输入**sl
**时会有小火车开过哦
大家可以尝试执行以下代码来下载sl
命令,当然可能会下载失败,比如:你是Ubuntu,不是Centos
yum -y install sl
列出历史所有命令记录,在这里你可以看到你之前运行过的所有命令
上传git
安装Git(以下是Centos的操作)
sudo yum install git
创建Gitee账号
如果你还没有Gitee账号,需要先注册一个账号。访问Gitee的官方网站(https://gitee.com/)进行注册并登录。
克隆仓库
git clone 地址
这里的地址在图示部分(注意是HTTPS这个地址)
git三板斧
git add 源文件名
或者git add .
(第一个:提交该文件的更改 第二个:提交当前这个目录的被更改的文件)
git commit -m "提交的更改"
:提交修改到仓库
git push
把代码提交到远程仓库
注意
只有上面三步都做完才能在gitee上看见小绿点哦~~
有时候会出现提交失败的情况,这种情况下我们只需要:
git pull
,产生失败的原因是:在同一个公司的同一组内,每天要提交日志,可能会出现你和你的同事同时提交文件到gitee的情况,这个时候就可能你的git不同步,而git pull
这个命令用来获取最新提交,这样你们的gitee就同步啦
测试与网络设备的连接