Linux基础
Elora Rinta!

Linux系统目录结构

目录说明

  1. /bin 存放常用命令,命令就是一个可执行程序,cd、ls等都是命令
  2. /lib 存放库文件例如,printf是一个库函数,它的实现在c库中。c库就存放在lib下。
  3. /home 所有普通用户的家目录
  4. /root 管理员用户的家目录管理员的家目录并不在/home下面,而是在/root。
  5. /boot 系统内核及启动有关的文件
  6. /etc 存放系统的配置文件
  7. /proc 虚拟文件系统目录,以进程为单位存储内存的映射
  8. /usr 存放系统应用程序及文档
  9. /dev 存放设备文件
  10. /mnt 临时挂载点
  11. /tmp 存放各种临时文件,是所有用户均可访问的地点
  12. /var 存放系统运行中常改变的文件,如系统日志

家目录

在/home文件夹下创建stu1和stu2两个文件夹,把stu1创建的所有文件都存放到stu1文件夹下,这个文件夹中的内容只能stu1可以看到或操作,把stu2创建的文件都存放到stu2文件夹下,这个文件夹中的内容只能stu2可以看到或操作。每一个普通用户都会在/home下面创建属于自己的文件夹,这个文件夹以该用户的名字来命名。后续,用户也可以在各自的文件夹下再创建其他的文件夹来存放其他的文件。每个用户都不能访问别的用户的目录以及目录下的子文件。起到了一个保护作用。如果是用户stu1,那么它的家目录是/home/stu1;如果是用户stu2,那么它的家目录是/home/stu2。用户不同,家目录也不同。

cd命令

1
2
3
4
5
6
7
8
9
cd /home #切换至home目录,/为根目录
cd /home/rinta #第一个/为根目录
cd rinta #进入当前文件夹的下一级rinta文件夹
pwd 显示当前所在目录
# 路径以根目录开头为绝对路径
cd .. #回到上一级目录
cd #会直接切换到当前用户的家目录
cd ~ #回到用户的home目录
cd - #返回到上次执行cd命令的目录,即切换之前所在的目录

ls命令

1
2
3
4
5
6
7
8
ls #显示当前目录下有哪些目录
ls -a #显示当前目录下所有的目录,会显示隐形目录
ls -l #显示文件的详细信息
ls -lh #更人性化的方式显示
ls -lah #所有的文件人性化的显示出来
ll #相当于ls -l
ll -h #人性化的显示
ll -a#显示所有文件

ls命令权限介绍

*匹配任意字符,#匹配一个字符,[]匹配范围!

*匹配任意字符,#匹配一个字符,[]匹配范围!

*匹配任意字符,#匹配一个字符,[]匹配范围!

*匹配任意字符,#匹配一个字符,[]匹配范围!

1
2
3
4
5
6
7
8
9
10
11
12
13
drwxrwx-x #d代表文件夹,-代表文件
rwx rwx r-x #三组,r:可读,w:可写,x:可执行,-:表示非
# 文件拥有者的权限 文件拥有组的权限 其他用户对该文件的权限
ls dir2 #查看dir2目录下的内容
ls / #查看根目录下的内容
ls -la / #查看根目录下所有的内容
ls ../.. #查看上级目录的上级目录
ls a* # *匹配任意字符,查看以a开头的内容
ls a? # ?代表一个任意字符
ls [abc]d #d前面的字母匹配abc中其中一个
ls [a-x]d #d前面的字母匹配a-x中其中一个
ls \*x #查看*x,\为转义字符
ls *txt #查看当前目录下所有以txt结尾的文件

mkdir命令

1
2
3
4
5
6
7
8
9
10
mkdir pic #在当前目录下创建文件夹pic
mkdir /home/admin/video #绝对路径创建,要保证路径存在
mkdir -p #创建的目录父目录不存在,直接创建(递归创建)
mkdir dir1 dir2 #在当前目录创建dir1、dir2两个文件夹
mkdir 当前目录的文件夹/dir3 #在目标路径下创建dir3
mkdir admin/demo1/dir4 dir5 #dir4在demo1下,dir5在当前目录下
mkdir demo2/dir6 demo2/dir7 #在demo2下创建dir6、dir7
mkdir demo3/{dir8,dir9} #在demo3下创建dir8、dir9
mkdir .dir10 #创建隐藏文件夹dir10
# .代表当前目录,..代表上一级目录

touch命令

1
2
3
4
5
6
7
touch file1.txt #创建单个文件
touch file2 file3 file 4 #创建多个文件
touch dir1/file1.txt 在规定路径下创建文件
#touch要求在存在的目录下创建文件
touch .abc #创建隐藏文件abc
gedit file1.txt #记事本修改文件
gedit file5.txt #不存在则新建file5并编辑

gedit打开记事本

rm命令

1
2
3
4
5
rm file1 #删除file1
rm dir1 -r #删除目录dir1
rm * -r #将目录里的所有目录、文件删掉(隐藏文件除外),如果目录里面有文件夹但是没有-r会报错
rm .abc #删除隐藏文件abc
rmdir #删除文件夹

命令格式

1
2
3
4
ctrl+c #结束命令(命令敲错了常用)
command [-options] [parameter] #命令格式
command --help #不知道命令怎么使用,窗口自带的命令不能使用,如pwd
man pwd #查看命令说明文档

cp命令

1
2
3
4
5
6
cp 1.txt dir2 #将1.txt复制到dir2目录下
cp 1.txt 2.txt #将1.txt复制到当前目录下并命名为2.txt
cp -a 1.txt 3.txt #复制文件并保持原有属性,原有属性是指文件或目录的元数据,包括文件权限、所有者、所属组、创建时间、修改时间等信息。使用`cp -a`命令可以保持原有文件的所有这些属性。
cp dir1 dir2 -r #复制目录和目录下的所有子目录与文件
cp 1.txt 2.txt -i #交互式复制,覆盖会让用户确认
cp ~/dir1 ~/dir2 -r #拷贝指定目录至指定目录下

mv命令

1
2
3
4
5
6
mv 1.txt abc.txt #移动到当前目录下并重命名(类似于重命名文件)
mv abc.txt dir1 #将abc文件移动至dir1
mv abc.txt dir1/abcrename.txt #将abc文件移动至dir1并改名为abcrename
mv dir1 dir2 #移动到当前目录下并重命名(类似于重命名文件夹)
mv dir2 dir3 #将dir2移动到dir3目录下

重定向

1
2
3
#重定向
ls >1.txt #1.txt不存在则创建,存在则在内部内容编辑覆盖。ls返回的结果放入1.txt文件中
ls >>1.txt #1.txt不存在则创建,存在则在内部内容编辑。ls返回的结果追加在1.txt文件中

cat命令

1
2
3
cat 1.txt #查看1.txt的内容
cat 1.txt 2.txt #按顺序显示12的文件内容
cat 1.txt 2.txt > 3.txt #将1.tx和2.txt的内容合并到3.txt

more命令

1
2
more 1.txt #查看文件1.txt,从文件开始显示,space向下翻一页,b往回翻一页,enter向下翻一行,按q键退出

head

用于显示文件的开头内容。默认情况下,它显示文件的开头 10 行内容

  • head -15查看前15行内容

tail

用于显示文件的末尾内容。默认情况下,它显示文件的最后 10 行内容

  • -n <num>:显示文件末尾的 <num> 行内容,例如 -n 20 表示显示最后 20 行。
  • -f:实时跟踪文件的增长,在文件末尾显示新添加的内容,非常适用于查看日志文件。可以和数字组合,获取动态信息的某几行内容
  • -c <num>:显示文件末尾的 <num> 字节内容,例如 -c 1000 表示显示最后 1000 字节。
  • -q:禁止显示文件名。

案例:动态查看

模拟日志内容不断更新的场景

管道:|

1
2
3
4
5
command1 | command2:command1的返回结果由command2处理
ls -al / | more #以more查看文件的方式查看/目录下的内容,b按钮没用,只能往下翻
ps aux | grep "firefox" # 用ps命令查看系统中运行的进程并通过管道命令传递给grep来筛选
sort file2 |uniq # sort对文件内容排序并通过uniq除去同步行
tail -f log | grp "error" # 追踪日志,通过grep过滤关键字

进程

查看进程ps

1
2
3
4
ps -e #显示系统中的所有进程
ps -f #显示完整的进程信息
-u #显示指定用户的进程
-aux #显示所有进程的详细信息

杀死进程kill

kill pid杀死该进程

kill -9 pid强制结束

命令行版任务管理器top

动态的

端口号

HTTP:80

HTTPS:443

SSH:22

MySQL:3306

netstat查看端口

root能看到更详细的端口信息

netstat -anptu

pid一栏没有信息

切换至root

配合grep:

lsof

lsof -i列出符合条件的进程

lsof -i:3306列出使用端口3306的进程信息

链接

  • 软链接:不占用磁盘空间,源文件删除则软链接直接失效
  • 硬链接:只能链接普通文本,不能链接目录
1
2
3
4
5
6
7
8
9
10
11
12
13
## 软链接
ln -s 1.txt 1_soft_link #创建1.txt的软链接,名称叫1_soft_link
#源文件改变,快捷方式也变。修改软连接相当于修改源文件,为源文件的别名
#软链接不储存内容,只记录指向文件的名称
rm 1.txt #源文件删除后,软链接会报红,无法查看(但是软链接还存在)
touch 1.txt #新建与源文件重名的文件,软链接会重新指向新的同名文件
ln -s /home/admin/demo1/1.txt ~/1_soft_link #在家目录里创建该目录下1.txt的软链接(软链接与源文件不在同一目录时,需指明源文件所在的路径)
ln -s demo1 demo1_soft_link #在当前目录下创建demo1的软链接

##硬链接 链接的内容改变,文件同步变化
ln 1.txt 1_hard_link #当前目录下为1.txt创建硬链接
#源文件删除,不影响硬链接
#使用ll查看时,有一个数字代表有几个文字能同步发生变化

grep命令

1
2
3
4
5
6
7
8
9
10
11
#一般格式为:
grep [-options] 'content' filename
grep hello 1.txt #在1.txt里搜索hello(按行搜索,匹配到文字返回该行)
grep -n hello 1.txt #匹配内容及所在行
grep -i hello 1.txt #不区分大小写进行匹配
grep -v hello 1.txt #反向查找,过滤出不包含指定模式的行
grep -n hello . -r #会在当前目录(包括子目录)中递归地搜索包含字符串 "hello" 的文件,并显示匹配的行,并显示匹配的行的行号。
grep -n ^h 1.txt #匹配行以h开头的内容
grep -n o$ 1.txt #匹配行以o结尾的内容
# [] 匹配[]中任一字符
grep h. 1.txt #h后跟任何一个字符的行,整行显示

find命令

查找文件名

1
2
3
4
5
6
#一般格式为:
find directory -name filename
find . -name 2.txt #查找当前目录下2.txt所在的位置,会遍历所有的文件夹
find ~ -name '*txt' #查找家目录下所有以txt结尾的文件
find . -type d -name "hello" #在当前目录及其子目录中查找名字为 "hello" 的文件夹,并将它们列出来。

tar命令

用于将多个文件打包成一个单独的文件(归档文件),通常以 .tar 为扩展名。它本身不具备压缩功能,但可以与 gzipbzip2 等压缩工具结合使用,将打包的文件进行压缩,生成 .tar.gz.tar.bz2 等格式的压缩文件。

1
2
3
4
5
6
7
8
9
#创建打包文件,注意f要写在最后,指定档案文件名称
tar -cf a.tar 2.txt 3.txt #将2.txt和3.txt打包到a.tar中,f-file。文件扩展名以tar结尾显示为红色
tar cf a 2.txt 3.txt #将2.txt和3.txt打包到a.tar中
#列出文件
tar tf a.tar #列包
tar xf a.tar #解包,文件会在当前目录下
#####################
tar cvf a.tar *txt #打包当前目录下所有txt文件,并展示过程
tar xvf a.tar -C tar #将解压的文件放入当前目录下的tar目录中,但是没有tar目录不会自动生成

给已打包好的tar文件重新打包会覆盖里面的文件

gzip命令

用于压缩文件,通常将文件压缩成 .gz 格式。它可以通过 gzip 命令进行压缩,通过 gunzip 或者 gzip -d 命令进行解压缩。

1
2
3
4
5
#一般格式为:
gzip [options] file
gzip -r a.tar #-r压缩所有子目录,文件被压缩成新的文件a.tar.gz
gzip -d a.tar.gz #解压文件

一步压缩解压

1
2
3
4
5
6
7
8
9
10
11
tar czf b.tar.gz *txt #打包压缩所有txt文件,并命令为b.tar.gz
tar xzf b.tar.gz -C btar #解压解包文件b.tar.gz并存放在btar文件夹中
#bzip2用法
tar jcf j.tar.bz2 *txt #打包压缩所有txt文件,并命令为j.tar.bz2
tar xjf j.tar.bz2 -C jtar #解压解包文件b.tar.bz2并存放在jtar文件夹中
#zip、unzip
zip -r zz *txt #将txt文件打包压缩成zz文件,会显示打包过程,生成文件扩展名为zip
unzip -d zz zz.zip #解压zz.zip里的文件至zz文件夹中,若文件夹不存在先创建文件夹
## 压缩率:zip<gzip<bzip2
## 通用性:zip>gzip>bzip2
###一般以gizp为主

其他命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#which命令
which zip #查看zip命令在的位置,命令是可执行的文件
which mysql # 查看安装的文件位置
# who命令 查看当前系统中登录的所有用户信息
whoami #当前用户
who
# cd ls bash cp mv为shell命令
#su命令 切换到root用户
su #在命令行中切换至root用户
su admin #su + username 切换成对应的用户
#passwd命令
passwd #更改当前用户的密码
passwd admin #更改admin用户的密码
#exit命令
exit #安装用户的顺序退出命令行窗口
#who命令
who #查看当前登录的用户,tty表示用户登录操作系统,pts表示用户登录终端
#reboot、shutdown命令,reboot不需要root权限,shutdown需要root权限
reboot #重启
shutdown h +10#系统再过十分钟后自动关机

chmod命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#按字母修改
chmod u/g/o/a +/-/= rwx file
# u:user表示该文件的所有者
# g:group表示与该文件所有者属于同一组者,即用户组
# o:other表示其他以外的人
# a:all表示这三者皆是
# +:增加权限
# -:减少权限
# =:赋值新的权限
chmod u+x test.txt #给拥有者对于test.txt增加可执行权限
chmod u-r test.txt #减去可读权限
chmod u=r test.txt #给拥有者赋予test.txt可读权限
chmod u=rwx test.txt
chmod u-w test.txt
chmod u=- test.txt #不赋予任何权限
chmod u+r,g-w,o=wx test.txt #分别赋予权限
chmod a+w test.txt# 共同改变权限
##数字修改
# r->4
# w->2
# x->1
# - ->0
chmod 666 test.txt #所有用户都有rw权限
chmod 777 test.txt #所有用户都有rwx权限
chmod 135 text.txt # x、wx、rx

yum命令

软件包管理工具

1
2
3
4
5
yum list # 列出所有可安装的软件清单
yum search # 查找软件包
yum install # 安装
yum update # 更新
yum remove # 删除
 Comments
Comment plugin failed to load
Loading comment plugin
Powered by Hexo & Theme Keep
This site is deployed on
Total words 75.1k Unique Visitor Page View