linux的基本使用介绍
在终端界面下按ctrl + shift + = 可以放大字体, 按ctrl + - 减小字体
linux目录
- linux系统只有一个根目录/
- 没有盘符的概念
- 常用目录
- /根目录
- /bin /usr/bin 存放linux系统命令
- /etc 存放linux的配置文件
- /home 存放用户的主目录
- /root root的主目录
linux命令快速演示
- 上下光标
- 可以把历史命令快速的调出来,以便再次执行
- tab自动补齐
- 当文件名或者目录名特别长,可以使用tab自动把名字补齐
- linux的命令和文件名目录名区分大小写
- D和小写的d是不同的名字
查看linux系统命令帮助信息
- 命令 --help
touch --help
mkdir --help
- man 命令
man touch
man mkdir
- 在man命令的界面下
- 按空格,下翻一页
- 按b上翻一页
- 按q退出man的界面
pwd
- 查看当前目录
pwd
ls
- 常用参数
在ls命令的时候要先回到用户的主目录下/home/python
ls # 显示用户主目录的内容
ls -a # 显示所有文件, 文件名或者目录名前面有个点,代表隐藏文件. 就一个点代表当前目录,两个点代表上级目录
ls -l # 用列表方式显示
ls -hl # 显示文件大小按照人性化方式显示
ls -ahl # 显示所有文件和目录,同时按列表显示,文件大小按人性化方式显示
-l参数结果说明
文件读写权限解释
rwx rwx rwx
分为三组
第一组为文件所属的用户对文件的权限
第二组为文件所属的组对文件的权限
第三组为其他用户对文件的权限
r读, w写, x执行
rwx rwx r-x 文件所属的用户可以读,写,执行, 文件所属的组可以读,写,执行,其他用户可以读,不能写,可以执行
rw- rw- r-- 文件所属的用户可以读,写,不可以执行, 文件所属的组可以读,写,不可以执行,其他用户只读
通配符
*
- 代表任意多个字符
ls n* # 显示n开头后面任意多个字符的文件或者目录内容
?
- 代表任意一个字符
ls n? # 显示n开头,后面任意一个字符的文件或者目录内容
ls ?? # 显示任意两个字符组成的文件名或者目录内容
[字母1字母2字母n]
- 括号内指定的字符
ls [abc]* # 以a或者b或者c开头,后面任意多个字符的文件或者目录内容
[开始-结束]
- 代表一个连续的范围
ls [a-f]* # 以a开头f结尾范围内的字符开头,后面任意字符结尾的文件或者目录内容
chmod修改权限
- u user用户
- g group 组
- o other 其他
- a all所有
+
增加权限-
删除权限=
权限直接赋值
touch a.txt
chmod u-rw a.txt # 去除用户的r和w
chmod u+rw a.txt # 增加用户的r和w
chmod g-w a.txt # 去除组的w
chmod o+rw a.txt # 增加其他的r和w
chmod a-rwx a.txt # 去除所有用于的r和w和x
chmod a+r a.txt # 增加所有用户的r
chmod u=r a.txt # 不管以前有什么,只保留r
chmod a=r a.txt # 对于所有用户,不管以前有什么,只保留r
数字法
- r 4
- w 2
- x 1
- 举例
- 5 r和x
- 7 r, w, x
- 0, 什么都没有
- 1 x
- 3 w x
chmod 777 a.txt rwx rwx rwx
chmod 567 a.txt r-x rw- rwx
chnod 000 a.txt --- --- ---
cd
- 切换当前目录
cd # 回到用户的主目录
cd ~ # 回到用户主目录
cd 目录名 # 进入指定的目录
cd / # 回到根目录
cd .. # 回到上级目录
cd # 回到主目录
cd / # 回到根目录
cd ~ # 回到主目录
cd dbs # 进入dbs目录
cd .. # 回到dbs的上级目录
路径
- 相对路径
- 从当前目录开始计算路径
- 绝对路径
- 从根目录/开始计算路径
cd # 回到主目录
cd dbs # 相对路径写法
cd
cd /home/python/dbs # 绝对路径的写法
cd .. # 相对路径写法
cd /home/python # 绝对路径写法
cd
# 在用户主目录下,进入根目录的bin目录
cd ../../bin # 相对路径
cd /bin # 绝对路径
touch
- 如果文件不存在,创建一个空文件
- 如果文件存在,修改文件的最后修改时间
touch a.txt
mkdir
- 创建空目录
- 注意:如果有同名的目录或者文件名,创建会失败报错
- -p 创建一个有层级关系的目录
mkdir abc # 创建一个空目录abc
mkdir -p a/b/c # 创建有层级关系的目录a/b/c
rm
- 删除文件或者目录
- -r 删除目录
- -f 强制删除,即使不存在,也不报错
rm a.txt # 删除文件a.txt
rm -r abc # 删除目录abc
rm -f a.txt # 强制删除文件a.txt,即使a.txt不存在,也不报错
rm -rf abc # 强制删除目录abc,即使不存在,也不报错
cp
- 拷贝文件
- cp 源文件 目标文件
- -i 目标文件如果存在,提示是否覆盖
- -r 拷贝目录必须加这个参数
touch a.txt
mkdir abc
cp a.txt abc/a.txt # 把a.txt拷贝到abc目录,名字还叫a.txt
cp a.txt abc/b.txt # 把a.txt拷贝到abc目录,名字叫b.txt
cp -i a.txt abc/a.txt # 把a.txt拷贝到abc目录,名字还叫a.txt,如果abc目录下已经存在了a.txt,给出是否覆盖的提示
cp -r abc aaa # 把目录abc拷贝为aaa
mv
- 移动文件
- mv 源文件 目标文件
- mv命令和cp命令的使用方式基本一致
- cp之后 源文件和目标文件都存在,mv之后只有目标文件,源文件不存在了
mv a.txt abc/a.txt # 把文件a.txt移动到abc目录下,名字还叫a.txt
cd abc
mv a.txt ../a.txt # 把文件a.txt移动到上级目录, 名字还叫a.txt
cd ..
mv a.txt b.txt # 把文件a.txt改名为b.txt
- 课堂练习
数据准备
mkdir a
mkdir b
cd a
touch a.txt
如果当前目录在a目录下
mv a.txt ../b/a.txt
如果当前目录在b目录下
mv ../a/a.txt a.txt
如果当前目录在a目录的上级目录
mv a/a.txt b/a.txt
cat
- 查看文件内容
- cat 文件名
- -n显示行号
- -b只为非空行编号
cd /proc
cat cpuinfo # 查看文件cpuinfo的内容
cat -n cpuinfo
cat -b cpuinfo
more
- 查看文件内容
- more 文件名
- 当文件内容特别多的时候,more会分屏显示, 按空格显示下一页,按b显示上一页
more 文件名
more meminfo
grep
- 在指定的文件中,显示指定的内容
- grep 要显示内容 文件名
- -n显示行号
- -v显示不匹配的内容
- -i忽略大小写
grep "cpu" cpuinfo # 显示cpuinfo中有字符cpu的行
grep -v "cpu" cpuinfo # 显示cpuinfo中不包含cpu的行
grep -n "cpu" cpuinfo # 显示cpuinfo中有字符cpu的行,同时显示行号
grep -i "cpu" cpuinfo # 显示cpuinfo中有字符cpu的行,并且忽略大小写
当linux命令输入错误,用ctrl+c可以退出错误界面
模式查找
^字符
- 查找以指定字符开头的行
字符$
- 查找以指定字符结尾的行
^字符.*字符$
- 查找以指定字符开头,以指定字符结尾的行
grep "^a" cpuinfo # 查找以a开头的行
grep "z$" cpuinfo # 查找以z结尾的行
grep "^a.*z$" cpuinfo # 查找以a开头并且以z结尾的行
echo
- 回显
echo hello
clear
- 清屏
clear
重定向
- 把一个命令执行的结果不是显示在屏幕上,而是放入一个指定的文件中
>
- 把命令执行结果放入指定文件,如果文件存在,覆盖文件,如果文件不存在,创建文件
ls -l > a.txt # 把ls -l执行的结果放入文件a.txt
echo hello > a.txt # 把echo hello执行的结果放入文件a.txt
>>
追加重定向- 如果指定文件不存在,就创建文件,如果指定文件存在,就在已有内容后面追加
echo aaaaa >> a.txt # 如果a.txt已经存在,就在已有内容后面追加aaaaa
管道
- 把一个命令执行的结果,做为另一个命令的输入
|
竖杠
命令1 | 命令2
ls -al > a.txt
more a.txt
# 上面的语法,是实现把ls-al的结果能分屏显示
ls -al | more
ls -al > a.txt
grep "^d" a.txt
# 显示ls -al结果中以d开头的行
ls -al | grep "^d"
管道中的命令1,一定要有输出结果, 命令2一般都能处理文件
课堂练习
小练习
回到主目录下
用ls,结合管道,显示主目录下所有以s结尾的目录,包括隐藏目录
思路:
用ls -al显示, 可以显示包括隐藏文件和目录
d开头的行是目录
只保留d开头并且s结尾的行,就是练习的答案
cd
ls -al | grep "^d.*s$"
find
- 从指定目录开始查找所有子目录中是否有指定的文件
find 起始目录 -name 文件名
# 文件名可以用通配符
find . -name "a.txt" # 从当前目录开始查找所有子目录,a.txt
find . -name "*.txt" # 从当前目录开始查找所有子目录,扩展名为.txt,文件名任意
find . -name "?.txt" # 从当前目录开始查找所有子目录,扩展名为.txt,文件名任意一个字符
ln
- 软链接
- 类似windows下的快捷方式
ln -s 源文件 目标软链接文件
ln -s a.txt a1 # 给文件a.txt创建一个软链接a1
- 硬链接
ln 源文件 目标硬链接文件
ln a.txt a2
ln a.txt a3
- 硬链接和软链接的区别
- 硬链接文件总是和源文件一样大小
- 软链接很小,大小和源文件无关
- 硬链接会影响ls -l查看文件时,文件的硬链接数
- 软链接不影响ls -l查看文件时,文件的硬链接数
- 当源文件被删除,软链接文件同时失效
- 当源文件被删除,硬链接可以继续使用
- 不管软链接还是硬链接,文件内容总是和源文件同步