此整理得益于我的老师——冒小平老师
目录
一、Linux目录结构
二、Linux常用命令
Linux命令的分类
- 内部命令:属于Shell解析器的一部分
cd 切换目录(change directory)
pwd 显示当前工作目录(print working directory)
help 帮助
- 外部命令:独立于Shell解析器之外的文件程序
ls 显示文件和目录列表(list)
mkdir 创建目录(make directory)
cp 复制文件或目录(copy)
- 查看帮助文档
内部命令:help + 命令(help cd)
外部命令:man + 命令(man ls)
操作文件或目录常用命令
pwd 显示当前工作目录(print working directory)
touch 创建空文件
mkdir 创建目录(make directory) -p 父目录不存在情况下先生成父目录 (parents)
cp 复制文件或目录(copy) -r 递归处理,将指定目录下的文件与子目录一并拷贝(recursive)
mv 移动文件或目录、文件或目录改名(move)
rm 删除文件(remove) -r 同时删除该目录下的所有文件(recursive)
-f 强制删除文件或目录(force)
rmdir 删除空目录(remove directoriy)
cat显示文本文件内容 (catenate)
more、less 分页显示文本文件内容
head、tail查看文本中开头或结尾部分的内容
head -n 5 a.log 查看a.log文件的前5行
tail -F b.log 循环读取(follow)
(cat ,more,less,head,tail 令篇详说)
常用命令
wc 统计文本的行数(-l)、字数(-w)、字符数(-m)
find 在文件系统中查找指定的文件 find /etc/ -name "aaa"
grep 在指定的文本文件中查找指定的字符串
ln 建立链接文件(link)-s 对源文件建立符号连接,而非硬连接(symbolic) (创建链接的时候源文件要有访问权限)
top 显示当前系统中耗费资源最多的进程
ps 显示瞬间的进程状态
-e /-A 显示所有进程,环境变量
-f 全格式
-a 显示所有用户的所有进程(包括其它用户)
-u 按用户名和启动时间的顺序来显示进程
-x 显示无控制终端的进程
kill 杀死一个进程 kill -9 pid
df 显示文件系统磁盘空间的使用情况
du 显示指定的文件(目录)已使用的磁盘空间的总
-h文件大小以K,M,G为单位显示(human-readable)
-s只显示各档案大小的总合(summarize)
free 显示当前内存和交换空间的使用情况
netstat 显示网络状态信息
-a 显示所有连接和监听端口
-t (tcp)仅显示tcp相关选项
-u (udp)仅显示udp相关选项
-n 拒绝显示别名,能显示数字的全部转化成数字。
-p 显示建立相关链接的程序名
ifconfig 网卡网络配置详解
ping 测试网络的连通性
备份压缩命令
- gzip 压缩(解压)文件或目录,压缩文件后缀为gz
- bzip2 压缩(解压)文件或目录,压缩文件后缀为bz2 (不喜欢用,不说了)
- tar 文件、目录打(解)包 常用: tar -zxvf .....
gzip命令
- 命令格式:gzip [选项] 压缩(解压缩)的文件名
-d将压缩文件解压(decompress)
-l显示压缩文件的大小,未压缩文件的大小,压缩比(list)
-v显示文件名和压缩比(verbose)
-num用指定的数字num调整压缩的速度,-1或--fast表示最快压缩方法(低压缩比),-9或--best表示最慢压缩方法(高压缩比)。系统缺省值为6
tar命令
-c 建立一个压缩文件的参数指令(create)
-x 解开一个压缩文件的参数指令(extract)
-z 是否需要用 gzip 压缩
-j 是否需要用 bzip2 压缩
-v 压缩的过程中显示文件(verbose)
-f 使用档名,在 f 之后要立即接档名(file)
关机/重启命令
- shutdown系统关机 -r 关机后立即重启 / -h 关机后不重新启动
- halt 关机后关闭电源 ==> shutdown -h
- reboot 重新启动 ==> shutdown -r
附
- 善于查看man page(manual)等帮助文档
- 利用好Tab键
- 掌握好一些快捷键
ctrl + c(停止当前进程)
ctrl + r(查看命令历史)
ctrl + l(清屏,与clear命令作用相同)
三、VIM文本编辑器
VIM工作模式
插入命令
定位命令
替换和取消命令
删除命令
常用快捷键
四、用户和组账户管理
配置文件
- 保存用户信息的文件:/etc/passwd
- 保存密码的文件:/etc/shadow
- 保存用户组的文件:/etc/group
- 保存用户组密码的文件:/etc/gshadow
- 用户配置文件:/etc/default/useradd
Linux用户分类
超级用户:(root,UID=0)
普通用户:(UID在500到60000)
伪用户:(UID在1到499)
用户组
略
操作用户命令
添加用户命令:useradd
-u 指定组ID(uid)
-g 指定所属的组名(gid)
-G 指定多个组,用逗号“,”分开(Groups)
-c 用户描述(comment)
-e 失效时间(expire date)
例子:
useradd -u 888 -g users -G sys,root -c "hr zhang" zhangsan
passwd zhangsan
修改用户命令:usermod(user modify)
-l 修改用户名 (login)usermod -l a b(b改为a)
-g 添加组 usermod -g sys tom
-G添加多个组 usermod -G sys,root tom
–L 锁定用户账号密码(Lock)
–U 解锁用户账号(Unlock)
删除用户命令:userdel(user delete)
-r 删除账号时同时删除目录(remove)
添加组:groupadd
-g 指定gid
修改组:groupmod
-n 更改组名(new group)
删除组:groupdel
- groups 显示用户所属组
五、权限管理
三种基本权限 r 读权限(read) w 写权限(write) x 执行权限 (execute)
第1位:文件类型(d 目录,- 普通文件,l 链接文件)
第2-4位:所属用户权限,用u(user)表示
第5-7位:所属组权限,用g(group)表示
第8-10位:其他用户权限,用o(other)表示
第2-10位:表示所有的权限,用a(all)表示
完整信息:一个文件,所属用户具有读写执行权限;所属组的用户
有读写权限,没有执行权限;其他用户只有读权限
更改操作权限
- chmod修改文件权限命令(change mode)
参数:-R 下面的文件和子目录做相同权限操作(Recursive递归的)
例如:chmod u+x a.txt
- 用数字来表示权限(r=4,w=2,x=1,-=0)
例如:chmod 750 b.txt
rwx用二进制表示是111,十进制4+2+1=7
r-x用二进制表示是101,十进制4+0+1=5
六、RPM软件包管理
- RPM是RedHat Package Manager(RedHat软件包管理工具)的缩写,这一文件格式名称虽然打上了RedHat的标志,但是其原始设计理念是开放式的,现在包括RedHat、CentOS、SUSE等Linux的分发版本都有采用,可以算是公认的行业标准了。RPM文件在Linux系统中的安装最为简便
RPM命令使用
- rpm的常用参数
i:安装应用程序(install)
e:卸载应用程序(erase)
vh:显示安装进度;(verbose hash)
U:升级软件包;(update)
qa: 显示所有已安装软件包(query all)
结合grep命令使用
- 例子:rmp -ivh gcc-c++-4.4.7-3.el6.x86_64.rpm
YUM命令
- Yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUSE、CentOS中的Shell前端软件包管理器。基於RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。
- 例子(需要上网,没有网络可以建本地源):
yum install gcc-c++
yum remove gcc-c++
yum update gcc-c++
yum whatprovides 反查命令
此外我看到一个感觉很不错的链接https://www.cnblogs.com/yjd_hycf_space/p/7730690.html,里面命令更全,我比较常用的自己截图放这
文本处理
cat file1 | command( sed, grep, awk, grep, etc...) > result.txt 合并一个文件的详细说明文本,并将简介写入一个新文件中
cat file1 | command( sed, grep, awk, grep, etc...) >> result.txt 合并一个文件的详细说明文本,并将简介写入一个已有的文件中
grep Aug /var/log/messages 在文件 '/var/log/messages'中查找关键词"Aug"
grep ^Aug /var/log/messages 在文件 '/var/log/messages'中查找以"Aug"开始的词汇
grep [0-9] /var/log/messages 选择 '/var/log/messages' 文件中所有包含数字的行
grep Aug -R /var/log/* 在目录 '/var/log' 及随后的目录中搜索字符串"Aug"
sed 's/stringa1/stringa2/g' example.txt 将example.txt文件中的 "string1" 替换成 "string2"
sed '/^$/d' example.txt 从example.txt文件中删除所有空白行
sed '/ *#/d; /^$/d' example.txt 从example.txt文件中删除所有注释和空白行
echo 'esempio' | tr '[:lower:]' '[:upper:]' 合并上下单元格内容
sed -e '1d' result.txt 从文件example.txt 中排除第一行
sed -n '/stringa1/p' 查看只包含词汇 "string1"的行
sed -e 's/ *$//' example.txt 删除每一行最后的空白字符
sed -e 's/stringa1//g' example.txt 从文档中只删除词汇 "string1" 并保留剩余全部
sed -n '1,5p;5q' example.txt 查看从第一行到第5行内容
sed -n '5p;5q' example.txt 查看第5行
sed -e 's/00*/0/g' example.txt 用单个零替换多个零
cat -n file1 标示文件的行数
cat example.txt | awk 'NR%2==1' 删除example.txt文件中的所有偶数行
echo a b c | awk '{print $1}' 查看一行第一栏
echo a b c | awk '{print $1,$3}' 查看一行的第一和第三栏
paste file1 file2 合并两个文件或两栏的内容
paste -d '+' file1 file2 合并两个文件或两栏的内容,中间用"+"区分
sort file1 file2 排序两个文件的内容
sort file1 file2 | uniq 取出两个文件的并集(重复的行只保留一份)
sort file1 file2 | uniq -u 删除交集,留下其他的行
sort file1 file2 | uniq -d 取出两个文件的交集(只留下同时存在于两个文件中的文件)
comm -1 file1 file2 比较两个文件的内容只删除 'file1' 所包含的内容
comm -2 file1 file2 比较两个文件的内容只删除 'file2' 所包含的内容
comm -3 file1 file2 比较两个文件的内容只删除两个文件共有的部分