目录
修改目录和文件权限 ——chmod (change mode)
目录操作
cd
cd是跳转到目录操作 change directory切换目录
cd 用户名 进入某一目录
cd .. 打开上一级目录
cd ~ 进入主目录
cd / 根目录 绝对路径
cd ../.. 根目录 相对路径
cd – 上一次访问的目录
cd /tmp 进入/tmp目录
cd a/b 打开a文件夹中的b文件夹
cd +文件的首字母+tab就可以自动补全文件
查看当前目录
pwd:print working directory 密码
pwd
列出目录和文件信息ls list
-rw-r--r-- 1root root 21 10月 10 20:30 file3
说明 | |
文件类型 | d:目录,-:文件,l:链接文件 |
文件存取控制 | 参见“文件存取说明” |
硬链接数 | 文件被硬链接的次数 |
文件属主 | 文件所属的用户 |
文件大小 | 文件大小,默认单位为:字节 |
文件修改时间 | 文件修改时间 |
文件或者目录名 | ./:当前目录。../:上一级目录。.文件名:隐藏文件 |
ls 列出当前路径下的文件
–l 列出目录和文件的详细信息,里面的total是文件的总数 按照字节显示
显示出来的d开头的是目录,-开头的是文件,l开头的是链接文件
–a 列出当前目录下所有的文件,包括以.开头的隐藏文件
–d 列出当前目录下所有的文件,包括以.开头的隐藏文件
-k 以k字节的形式表示文件的大小。ls –alk指定文件
-r 对目录反向排序。
-t 以时间排序
-s 在l文件名后输出改文件的大小
-R 列出所有子目录下的文件(递归)
-1 一行值输出一个文件
ls –l –a 列出当前所有文件包括详细信息
ls –l –h 按照kb显示 或者ls –lh ls –hl ls -lha
*代表任意多个字符
ls *a 查看以a结尾的文件或者目录的内容
ls a* 查看以a开头的文件或者目录的内容
ls *a* 只要名字里面有a就显示
ls a? 以a开头,后面任意一个字符
ls ?a 以a结尾,前面任意字符
ls ?? 只有任意两个字符
[]代表范围
ls [a,b,c]* 以a或者b或者c开头,后面任意的文件
ls [a-f]* 以a到f范围内的任意一个字符
创建目录
mkdir:make directory 建立目录
mkdir a 在当前目录下创建a目录,相对路径
mkdir b 在当前目录下创建b目录,相对路径
mkdir a/b -p 在当前工作目录下创建a目录,并在a目录下创建b目录
mkdir -p a/b/c 有嵌套关系的多级目录,在主目录下创建一个a目录里面有b目录,b目录里面有c目录
删除目录命令
remdir :remove directory 删除目录
-p 当子目录被删除后如果父目录也变成空目录的话,就连带父目录一起删除。
remdir -p 目录名或者文件 删除空目录或者空文件
remdir -f 即使问价属性为只读(写保护)也可以直接删除
remdir -i 删除前逐一询问确认
remdir -r 删除目录及其下所有文件
递归创建目录(创建里面没有的目录文件夹)
mkdir -p temp/nginx
搜索命令
find / -name 'b' 查询根目录下(包括子目录),名以b的目录和文件;
find / -name 'b*' 查询根目录下(包括子目录),名以b开头的目录和文件;
搜索字符串文字
在文件中搜索字符串,将找到的打印出来
grep "a" temp 在当前目录下的temp文件中找到含有a的文件
grep -i 忽略大小写的不同,所以大小视为相同
grep -n 顺便输出行号
grep -n "a" temp 在当前目录下的temp文件中找到含有a的文件,并且输出对应的行号
grep -v 反向选择,显示出没有“搜寻字符串”内容的那一行
重命名
mv 原先目录或文件名 新目录或新文件名 mv case demo
移动文件,剪切命令 move file移动文件
mv 源文件或目录 目标文件或目录
mv /aaa /bbb 将根目录下的aaa目录,移动到bbb目录下
mv bbb usr/bbb 将当前目录下的bbb目录,移动到usr目录下,并且修改名称为bbb;
mv aaa/b.txt b.txt 把aaa目录下的b.txt移动到当前目录下,命名为b.txt
mv b.txt c.txt 将b.txt文件改名为c.txt,同一目录下不移动只改名
复制命令
cp:copy file 复制文件
cp 源文件或目录 目标文件或目录
cp -f 强行复制文件或目录,不论目的文件或目录是否存在
cp -i 覆盖文件之前先询问用户
cp -r 递归处理,将指定目录下的文件与子目录一并处理,若源文件或目录的形态,不属于目录或符号链接,则视为普通文件处理
cp -r /aaa /bbb 将/目录下的aaa复制到/bbb目录下
cp -r /aaa /bbb/a 将/目录下的aaa复制到/bbb目录下,并修改名为a
删除指定目录 remove force
rm -rf /bbb 强制删除/目录下的bbb目录,且不会提示是否删除,直接bbb下的所有东西全部删除
rm -r /bbb 正常删除,会询问是否删除每个文件
修改目录和文件权限 ——chmod (change mode 改变模式)
chmod [选项] 权限 文件目录
chmod 设置文件的访问权限
+:向权限范围增加权限代号所表示的权限
-:向权限范围取消权限代号所表示的权限
=:向权限范围赋予权限代号所表示的权限,没有的去掉权限
用户符号:
u=user文件所属用户
g=group文件所属的组
o=other其它用户
a=all所有用户
# chmod u+w /home/abc.txt 给home的abc.txt文件给予可写权
# chmod o-x /home/abc.txt 给home的abc.txt文件去掉可执行权
# chmod a+rwx abc.txt 给abc.txt文件的所有用户添加所有权限
# chmod o=r abc.txt 只保留r,wx去掉
数字法修改权限:r4,w2,x1
# chmod 755 abc.txt 给abc.txt文件的用户读写可执行,给组可读可执行,其他用户可读可执行
—— u+rwx,g+rx-w,o+rx-w
三位8进制数字
# chmod 664 /home/abc.txt
# chmod 640 /home/abc.txt
chown 修改文件的拥有者
# chown user1 f1
chgrp 修改文件或者目录的所属组
文件操作
创建文件
touch 文件名
如果文件 不存在,可以创建一个空文件;
如果文件 存在,可修改文件的末次修改日期
删除文件或者目录
rm 文件
rm -r 目录
rm -r aaa 删除aaa这个目录
rm -r a.java 删除当前目录下的a.java文件(每次询问是否删除)
rm -rf a.java 强制删除当前目录下的a.java文件,不询问,有就删,没有就不报错
rm -rf ./a* 强制删除当前目录下以a开头的所有文件
rm -rf ./* 强制删除当前目录下的所有文件(删完就全没了,最好想想在删除)
find查找指定文件
find . -name '*.pyc' -exec rm -rf {} \; 递归删除.pyc格式的文件
find . -name "*" -size 14500c -exec rm -rf {} \; 递归删除指定大小的文件
find . -name "*" -size 14500c -print -exec rm -rf {} \;递归删除指定大小的文件,并打印
find 开始目录 -name 文件名
find ./ 从当前目录开始查找所有子目录,是否存在a.txt文件
find / 从根目录开始查找所有子目录,是否存在a.txt文件
find . -name "*" -size 14500c -print; 打印当前文件夹下指定的文件
"." 表示从当前目录开始递归查找
"-name '*.exe' "根据名称来查找,要查找所有以.exe结尾的文件夹或者文件
" -type f "查找的类型为文件
"-print" 输出查找的文件目录名
-size 145800c 指定文件的大小
-exec rm -rf {} \; 递归删除(前面查询出来的结果)
查看目标文件的内容
cat:concatenate 串联
cat 文件
cat version 查看linux版本
cat cpuinfo 查看cpu信息
cat -b 对非空输出行编号
cat -n 对输出的所有行编号
cat -s 不输出多行空行
more——分屏查看文件信息
more 文件名 分页显示文件的内容,按空格键显示下一页,按b显示上一页,按q退出
more -n 对输出的所有行进行编号
less和more相似,但是more只能向前移动,不能向后移动,less可以随意浏览文件,且在查看之前不会加载整个文件
less 参数 文件
-i 忽略搜索时的大小写
-N 显示每行的行号
/ 字符串:向下搜索“字符串”的功能
? 字符串:向上搜索“字符串”的功能
n 重复前一个搜索(与 / 或 ? 有关)
N 反向重复前一个搜索(与 / 或 ? 有关)
q quit
head -n 文件 显示的行数
head 用来显示档案的开头至标准输出中,默认head命令打印其相应文件的开头10行
tail -f 文件名 显示文本文件的最后几行,如果文件的内容有增加,就实时的刷新
tail -n <行数> 显示行数
tail -f可以动态的显示后台服务程序的日志,用于调制和跟踪程序的运行
其他命令
echo命令——回显
也就是回声的功能,输入什么显示什么 echo aaa 输出aaa
clear命令——清屏
重定向符号——输出重定向
命令 参数 > 文件名
把一个命令指定的结果不输出到屏幕,而是重定向到一个指定的文件中
如果文件不存在,就创建文件,如果文件存在就覆盖文件
命令 参数 >> 文件名
把一个命令指定的结果不输出到屏幕,而是重定向到一个指定的文件中
如果文件不存在,就创建文件,如果文件存在文件后面追加新内容
#把ls -l命令执行结果放到a.txt中
ls -l > a.txt
#把echo命令执行的结果放到a.txt中
echo aaa > a.txt
管道符号——命令结果传递给下一个命令
正常搜索一个文件名存在ab的文件是
ls -al > a.txt 把所有文件给a.txt
grep "ab" a.txt 在在a.txt里面搜索以ab开头的文件
这样优点太过于繁琐,所以使用管道命令,可以把一个命令的输出直接作为另外一个命令的输入
ls -al | grep "ab" 就不需要把文件导入,在导出了,把ls -al的结果作为more的输入
ls -al | grep "^d" 查找目录中以d开头的行,也就是目录
ls -al | grep "^-" 查找目录以-开头的文件
ls -al |grep "^d.*s$" 显示名字以s结尾的目录
搜索一个文件,并且分屏
ls -al > a.txt结合more a.txt
可以使用管道 ls -al | more
cat结合重定向可以快速的合并文件
cat 文件1 文件2 文件3 > 文件4 把文件1,文件2和文件3内容合并到文件4里面
cat a.txt b.txt > c.txt 把a.txt和b.txt合并放到c.txt
ln命令——创建链接文件
link file 链接文件
创建软链接——ln -s 原文件链接文件
ln -s a.txt a 给a.txt创建 链接文件
创建硬链接 ——ln 原文件 硬链接文件
ln a.txt b 给a.txt创建一个硬链接b
软链接文件,用ls -l 显示文件的时候,第一行表示为l
硬链接文件,用ls -l 显示文件硬链接数会增加
软链接与 硬链接的区别
软链接不占用磁盘空间,硬链接会占用磁盘空间
当原文件不存在,软链接也没有意义了,但是硬链接还可以使用
和时间相关的指令
date +%Y:%m:%d 显示年月日
date +%F 显示年月日
date +%s 从1970年1月1日开始经过的秒数
cal -3 2021 显示当前年(2021年)代的前一个月,当前月,下一个月的月历
cal -j 2021 显示当前年(2021)的第几天
cal -y 2021 显示当前年份(2021)的日历
压缩文件
zip 压缩文件.zip 目录或文件 将目录或文件压缩为zip格式
zip case01.zip case01/* 将case01目录进行压缩
unzip case01.zip -d /tmp 将case01的压缩文件进行解压,解压到tmp目录下
LInux 权限
Linux有两种用户:超级用户root和普通用户
切换两种用户的方式su ,超级用户切换到普通用户su user ,普通用户切换到超级用户 su root
文件访问权限的相关设置
r 对于文件,没有r,文件就不可读了
对于目录,没有r,就不能用ls看目录的内容了
w 对于文件,没有w文件内容只读不可写
对于目录,没有w就不可以在这个目录下创建新的文件
x 对于文件,如果这个文件是个可执行程序,没有x,就不能执行了
对于目录,没有x,不能用cd进入之歌目录
file指令
辨识文件类型 -
-c详细显示指令执行过程,便于排错或者分析程序执行的情形
-z尝试去解读压缩文件的内容
使用sudo分配权限
终端命令格式
Command [-options] [parameter]
[]代表可选
command :命令名,相应功能的英文单词或者单词的缩写
[-options]:选项,可用来对命令进行控制,也可以省略
[parameter]:传给命令的参数,可以是零个、一个或者多个