Linux学习笔记
文章目录
一.初始Linux
1.与linux进行交互
whoami
whoami --help #帮助文档
whoami --version #版本信息
echo "hellow Linux!"#显示字符串
nano #打开nano界面
2.shell命令常用的两个功能
-
.使用方向键查看历史命令
-
输入命令的一部分时,按一次TAB键可以自动补全剩下的命令;按两次TAB键时,可以打印出所有相关命令,供用户选择。
man who #查看who命令的帮助文档
3.shutdown命令
#关机
shutdown -h 10 #10分钟后关机
shutdown -h 15:56
shutdown -h now #立即关机
shutdown -h 15:00 #系统将在15:00关机,请注意保存您的数据,以免丢失。
#重启
shutdown -r 10 #10分钟后重启
shutdown -c #取消关机
二、管好文件
1.切换创建和删除命令
-
文件的基本架构
标准文件系统架构规范:树形目录
tree /home #查看树形的层次结构
- 查看目录
pwd #查看当前目录
cd ./dir1 #切换到当前目录下的dir1
cd ../dir1 #切换到上层目录下的dir1
cd - #前一个工作目录
cd ~ #切换到用户的家目录
mkdir /tmp/*** #创建目录
mkdir -p /tmp/hskhk/kshfj #创建嵌套目录
rmdir sample #删除目录,只能删除空目录
- 路径的两种分类
- 相对路径
- 绝对路径
2.列出文件和文件属性
Linux把目录也看成一种文件。主要用来组织和管理文件和其他的目录,存放文件名和文件索引节点之间的关联关系。目录文件的命名和普通文件是相同的。
ls 文件名 #列出文件
ls 目录 #列出目录下的文件
ls #列出当前目录下的文件
ls -a #列出隐藏文件
ls -l #列出长格式的文件的详细信息
ls -al
ls -il #列出文件的inode-number
字符标识 | 文件类型 |
---|---|
r | 可读 |
w | 可写 |
x | 可执行 |
文件所有者、文件所属组和其他用户这3个权限组可以分别用u、g、o来表示。
在Linux中,使用+表示增加某一个权限,使用-表示删除某一个权限。
chmod 700 文件名 #修改文件的访问属性
chown nbcc:stu #将文件的拥有者和从属用户组修改为nbcc和stu
chown nbcc #修改文件的拥有者
chown :nbcc #只修改从属用户组
chown g+w filename #修改filename文件的访问权限为所在组可写。
chown g-w filename #删除刚才的权限
字符标识 | 文件类型 |
---|---|
d | 目录文件 |
- | 普通文件 |
c | 字符设备文件 |
l | 符号连接文件 |
b | 块设备文件 |
p | 命名管道文件 |
s | 套接字文建 |
mknod filename p #创建命名管道
mkfifo filename #创建命名管道
为了使用方便,很多Linux的发行版本都为ls-l命令定义了一个别名ll。用户可以直接输入ll代替ls-l。
3.拷贝、剪切、删除和创建文件
cp [要拷贝的文件|文件列表] [目的文件名|目的目录] #拷贝单个文件(拷贝多个文件时用空格隔开)
cp -r [要拷贝的目录] [目的目录] #拷贝整个目录
#注意:1.若目标目录中已经存在同名的文件,询问用户是否覆盖
#注意:2.拷贝过程中可能会出现文件属性的变化
\cp -f [要拷贝的文件|文件列表] [目的文件名|目的目录] #批量文件强制覆盖
cp -p [要拷贝的文件|文件列表] [目的文件名|目的目录] #拷贝过程中不改变文件的属性
mv[要拷贝的文件|文件列表] [目的文件名|目的目录] #移动单个文件(拷贝多个文件时用空格隔开)
mv [要拷贝的目录] [目的目录] #移动整个目录
#注意:1.若目标目录中已经存在同名的文件,询问用户是否覆盖
#注意:2.移动过程中也可以改变文件名
rm [要删除的文件]
rm [要删除的文件1 要删除的文件2 ...]
rm -R ./dir01 #删除目录
rm -fr [目录] #不询问用户直接进行删除操作
touch [文件名]#创建文件,若文件已经存在则改变文件的时间戳属性
4.创建文件链接
符号链接和硬链接存在以下不同的特性:
- 硬链接的几个文件之间存在相同的i节点和文件数据区,每一个符号链接都是一个相对独立的文件,拥有自己的文件属性和权限。
- 用户只能对已经存在的文件创建硬链接,但可以对不存在的文件创建符号链接。
- 不可以跨越文件系统创建硬链接,但可以创建符号链接。
- 不能对目录创建硬链接,但可以创建符号链接。
- 删除一个硬链接文件不能其他拥有I节点的文件,同样删除软链接也不影响其指定的文件,但若指向的文件被删除,符号链接也随之失效。
- 创建硬链接文件的链接数会增加,但是创建符号链接文件数不会增加。
ln -s [链接指向的文件] [链接名] #创建符号链接文件(类似于快捷方式),若符号链接文件指向的文件被删除,则符号链接断裂
ln [链接指向的文件] [链接名] #创建硬链接,indoe-number是相同的,源文件删除后,硬链接可以正常使用,硬链接数目可以改变
5.打包文件
tar -cf [打包文件名.tar] [要打包的文件列表/要打包的目录]#打包文件(不是压缩)
tar -tf [目录]#查看打包文件中的文件
tar -f [打包文件名] --delete [文件名]#删除打包文件中的文件名
tar -f [打包文件名] -r [文件名]#向打包文件中添加新文件
tar -xf [文件名]- C [指定解包目录] #解包
6.压缩文件
gzip [要压缩的文件]
gzip -d [要解压的文件]
gzip -[0-9之内的数字] [要压缩的文件]#数字代表压缩比,1表示压缩后文件最大,压缩速度最快;9表示压缩为后文件最小,压缩速度最慢,默认情况下采用6
tar -czf [打包文件名.tar.gz] [要打包的文件列表/要打包的目录]
#把一批文件打包压缩
tar -xzf [文件名]- C [指定解包目录] #解压缩解包
7.查找文件
locate [查找的路径] [文件名的关键字]
#linux把文件名记录在/var/lib/mlocate数据库中,数据库每天只更新一次,因此新建立的文件无法实时更新
updatedb #更新数据库
find [查找范围][查找条件][动作]
#1.根据文件名进行查找
find / -name password
#2.根据文件类型进行查找
find /bin -type l
#3.根据文件的时间属性来查找(+n表示n天之前,-n表示n天之内,n表示在第n天)
find /temp -mtime -3 -ls
find /temp -mtime +7 -ls
find /temp -mtime 4 -ls
#4.根据文件大小进行查找(C-字节)
find /temp -size -3k
find /temp -size +100c
find /temp -size 10M
#5.根据文件属性查找
find /temp -user root -ls#查找指定目录下拥有者是root的文件
find /temp -uid 500 -ls#查找指定目录下拥有者uid是500的文件
find /temp -group stu -ls#查找指定目录下从属于stu用户组的文件
find /temp -gid 0 -ls#查找指定目录下用户组gid=0的文件
#6.根据文件权限进行查找
find /temp -perm 754#查找指定目录下权限为754文件
#使用与(-a)、或(-o)、非(!)连接查找条件
find /temp \(-size +1k -a -size -10M -a -mmin -
30 -a -type f \)-ls#要使用\来转义圆括号
find \temp \(-size +1k -a -size -10M -a -mmin -
30 -a -type f \) -exec rm -rf {} \;删除查找的文件
时间参数 | 时间参数 | |
---|---|---|
-atime | -amin | 文件被读取、执行的时间 |
-cmin | -ctime | 文件属性修改时间 |
-mmin | -mtime | 文件修改时间 |
8.使用通配符
# *代表任意长度的字符串
# ?代表任意的单个字符
# [c1-c2]表示匹配c1-c2字符序列中的任意字符
# [c1,c2,cn]表示匹配c1,c2,cn字符序列中的任意字符
# {str1,str2,strn}表示匹配str1,str2,strn字符序列中的任意字符串
# !表示对内容取反
rm -f /tmp/*.txt
cp /tmp/file[0-9].txt
9.查看文本文件的内容
cat [文件名] #查看文本文件
less [文件名]
#/关键字可以查找关键字,并使用n/N进行跳转,q退出
head -n 20 [文件名] #查看文本前20行,默认查看前10行
tail -n 20 [文件名] #常用来查看日志文件
三、重定向和管道
0.Unix程序设计的三大原则
- 一次只做一件事,并做到最好
- 能够与其他程序协同工作
- 能够处理文本流
1.重定向和管道
#输出重定向
ls -l 1> ../stdout.txt
ls -l 1>> ../stdout.txt #添加到源文件的后面
ls -l 2> ../stderr.txt
ls -l &>std.txt #命令的标准输出和错误输出定向到同一个文件
echo -e *1 apple \n 2 pear \n 3 banana*>ftuit.txt
ls -l 2>>/dev/null#错误信息重定向到/dev/null目录中,系统的黑洞
#输出重定向
tr [准备要替换的字符][要替换的字符]
tr ' ' '\t' <fruit.txt
2.管道
将一个命令的标准输出定向为另一个命令的标准输入,但不会传递错误输出。
ls -al /etc |less
grep [关键字][目标文件]
ls -al /etc |grep "ssh"
cat fruit.txt|cut -c 2,5
cat fruit.txt|cut -f1 -d' '
wc fruit.txt #统计行数、单词数和字节数
wc -l#只统计文本行数
四、用户组
1.用户和用户组
用户分为三种:
- 管理员用户
- 虚拟用户(bin、ftp、mail)
- 普通用户
用户组:通过GID进行识别,与用户之间是多对多的关系,但主用户组著有一个。
2.查看用户
id xuanyuanyixiang
id root
id #查看当前用户的信息
finger xuanyuanyixiang #查看用户名、用户的家目录,默认shell类型,邮件数目和工作计划
finger #显示登录用户名、用户备注登录终端类型等
3.切换用户身份
4.创建、修改和删除用户
sudo su
useradd [用户名]
passwd [用户名]
finger [创建的用户]
id [创建的用户]
useradd -u [UID] -c [用户备注] -g [用户组] -d [指定家目录]
-g [指定主用户组] -G [指定除主用户组外从属的用户组]
#创建用户同时指定uid、家目录、用户备注、主用户组、从属用户组、shell类型
#指定UID是应该确保唯一性
#指定主用户组和从属用户组时应该确保用户组存在
#修改用户
usemod -u [UID] -c [用户备注] -g [用户组] -d [指定家目录]
-g [指定主用户组] -G [指定除主用户组外从属的用户组]
#如何删除用户
userdel [用户名]
userdel -r [用户名] #删除用户并删除用户的家目录
5.创建、修改和删除用户组
sudo su
groupadd [用户组名]
usermod -G [用户组名] [用户名]#将用户加入用户组
groupadd -g [GID] [用户组名]#指定gid创建用户组,应该确保gid的唯一性
groupmod -g [gid] -n [用户组名]
groupdel [用户组名]