Linux02 Linux简介&常用命令

Posted by 川川的博客 on May 2, 2025

Linux

Linux体系结构

==》内核 -》系统调用-》应用层

  • 内核管理硬件资源(内存管理,进程调度,文件管理,网络通讯,设备驱动……)

  • 系统调用:内核给上层应用提供的接口

    • 库函数:通常把系统调用封装成库函数(malloc, printf,)
    • shell是一个命令解释器

命令:一些简单的可执行程序

脚本(script):命令的集合

三种方式访问内核

image-20250606224933409

常用命令

查看手册

man mkdir 手册的第一卷 shell命令

man 3 mkdir 手册第三卷

image-20250606225943315

sudo shutdown -r 重启

sudo shutdown

sudo shutdown now

用户子系统

root 超级用户

sudoers 管理用户 可以临时提权

其他用户

sudo cat /etc/passwd

添加用户

sudo useradd test1 不会创建home目录 默认bin/sh/登陆项

sudo useradd -m -s /bin/bash test2

设置密码 sudo passwd test1

切换用户 su test1 (switch user) test1新进程创建

exit 退出

删除用户 sudo userdel test1

sudo userdel -r test1 家目录一起删除

文件子系统

Linux文件是一个树结构 ‘ / ’ 根节点

目录相关命令

cd  改变工作目录

man pwd

pwd 查看当前工做目录

cd  切换到用户家目录
cd ~  回到家
cd - 切换到上一次目录   通过env环境变量中OLDPWD 记录上一次目录
创建目录
mkdir dir
mkdir dir1 dir2 dir3
//父目录不存在,创建父目录
mkdir -p a/b/c
删除空目录
rmdir dir
rmdir dir1 dir2 dir3
//递归删除空目录
rmdir -p a/b/c
通配符
rmdir dir?	//?匹配任意一个字符
rmdir dir* //*匹配任意多个字符
//匹配集合内任意一个字符  [0-9] [a-z]
rmdir [abc]
rmdir [!abc] //删除abc之外的字符

查看目录内容
ls  		//查看当前工作目录
ls dir
ls dir1 dir2 dir3
ls -a dir	//查看dir中所有目录 包括.开头文件
ls -i 		//inode 前面显示文件唯一编号
ls -l		//以长格式显示文件信息
ls -lh		//人类可读方式显示
ls -ilh dir	//显示详细信息

长格式文件信息

image-20250608153505067

树状结构显示

tree
tree dir
tree dir1 dir2 dir3
复制文件或目录
cp text1 text2 				//将text1 复制到text2中  
cp text1 text2 text3  dir 	//将text1 text2 text3 复制到dir目录中
cp -n text1 text2 			//文件存在,不覆盖
cp -i text1 text2			//文件存在,询问是否覆盖

cp -r dir1 dir2				//递归复制目录
移动文件和目录
mv text1 text2 	//将text1重命名为text2  如果文件存在覆盖text2
mv dir1 dir2	//将dir1重命名为dir2

mv -n text1 text2  //文件存在不覆盖
mv -i text1 text2	//文件存在询问是否覆盖

mv text2  dir/text1  //将text2移动到dir/text1 重命名为text1
删除文件和目录
rm text1
rm text*
rm -r dir1  //递归删除dir1目录
rm -i *.txt //删除当前目录下所有以.txt结尾的文件,并提示用户是否删除
-f  //永远不提示
rm -rf text1 //text1不存在,不提示

文件相关命令

创建文件

echo "Hello Linus Torvalds" > text //创建text,并且把内容重定向到文件中
touch a.text text2 text3//创建空文件
vim hello.c  //创建文件

查找文件

//查找可执行程序路径
which bash  //查看bash路径
which ls tree  //查看命令ls和tree的路径
which -a vim   //查看所有匹配的路径

env //查看环境

find命令

//在目录里边递归的查找
find  -name  "hello*"
//在路径里面找stdio.h
find  /usr/include  -name "stdio.h"

find /dev -type b  //查找块设备类型文件 c字符设备文件

find . -size 5M  //当前目录下查找大小为5M的文件  向上取整4.2M
find . -size -4M //查找小于4M的
find . -size 0  //只能找到空的文件  空的目录默认是4k

find . -empty 	//查找空文件或目录
find . -user root  //查找哪些用户属于root
find . -gid 0      //查找组id是0的用户 group

// 664 --> rw-rw-r--   如果奇数的话有执行权限771
find . -perm 644 		//查找用户权限是644的文件 permission


//根据内容改变的时间查找
find . -mtime 2    	//前[2,3)天
find . -mtime +1    //前[2,+∞]
find . -mmin 10     //10分钟之前修改的文件

//与或非 -a -o !
find /dev -type c  -a  -name "tty*"	//在/dev目录下查找以tty开头的字符设备文件
find /dev -type c  -a  ! -name "tty*"	//在/dev目录下查找不是以tty开头的字符设备文件

查看文件内容

cat /etc/passwd
cat -n /etc/passwd  //显示行号

man head
//head命令查看文件前几行
head text1 text2      //显示文件前10行
head -n 5 text1   //显示文件前5行


//tail命令查看文件后几行
man tail
tail text1  		//默认显示文件后10行
tail -n 5 text1  	//显示文件后5行
tail -F	server.log	//显示 

//less(more)浏览
less text1 text2 	//浏览text1  n浏览下一个文件  p查看上一个文件

文件重定向

image-20250608182848264

image-20250608175027773

who > users

cat users file1 > test      //清空覆盖
echo "liu yi fei" >> users  //重定向到users 追加写入

cat users file1 2> text     // file1不存在
cat users file1 >& text     // file1不存在,out和err两个&都写入text

搜索文件内容
man grep
//按正则表达式去搜索文件
grep -nE "firmament" text1	//在文件text1中查找“正则表达式”  ,-n并显示行号     E正则扩展
-i 忽略大小写
-v 显示不匹配正则表达式的行
-c 统计匹配行的个数

grep -cvinE "GOD" text 

正则表达式
grep -nE "\<f [^ \t]*t\>" text1

image-20250608182140439

命令组合

//命令组合
mkdir dir1; cd dir1

//cmd1 | cmd2 (管道)
history | tail -n 5    //history 输出的结果通过管道传输到tail中

//cmd1 | xargs cmd2  将cmd1输出结果的每一行作为参数传给cmd2,依次打开每一行文件查找
find . -name "*.c" | xargs grep -nE "\<main\("  //查找根目录下以.c结尾的文件含有main(的文件

改变文件权限

chmod [ugoa][+=-][rwx] file/dir  	//文字设定
chmod 664 text1						//数字设定
目录读写依赖于执行权限x
r w x
4 2 1

文件掩码 
umask		//查看
umask 0023	//设置为0023
So, 目录:777&(~umask)
	文件:666&(~umask)

链接

//创建硬链接
ln text1 h_link  //硬链接数变为2
ls -li
rm text1  //硬链接数变为1

//创建符号链接
ln -s text s_link  //它们指向不同的文件 
ls -li
rm text   //s_link符号链接 悬空指针

其他命令

远程复制

//本地复制
scp
//远程复制
scp liyf@192.168.0.124:~/text.txt .    //下载
scp -r text.txt liyf@192.168.0.124:~   //上传

打包压缩

//主选项 c r x
//辅选项 f v z

tar cvf package.tar text*     	  //c创建  f包名package.tar
tar rvf package.tar text1.txt	  //r追加

tar xvf package.tar               //x释放
tar czvf package.tar.gz *         //z通过gzip压缩
tar xzvf package.tar.gz			  //解压缩

别名

alias 	//查看所有别名
alias ll='ls -alF'	//设置命令别名
alias ls='ls --color=auto'

vim /bash.sc