shell快捷键
trl+r 然后输入若干字符,开始向上搜索包含该字符的命令,继续按Ctrl+r,搜索上一条匹配的命令
Ctrl+s 与Ctrl+r类似,只是正向检索
Alt+< 历史列表第一项
Alt+> 历史列表最后一项
Ctrl+f 光标向前移动一个字符,相当与->
Ctrl+b 光标向后移动一个字符,相当与<-
Alt+f 光标向前移动一个单词
Alt+b 光标向后移动一个单词
Ctrl+a 移动到当前行的开头
Ctrl+e 移动到当前行的结尾
Esc+b 移动到当前单词的开头
Esc+f 移动到当前单词的结尾
Ctrl+l 清屏
Ctrl+u 剪切命令行中光标所在处之前的所有字符(不包括自身)
Ctrl+k 剪切命令行中光标所在处之后的所有字符(包括自身)
Ctrl+d 删除光标所在处字符
Ctrl+h 删除光标所在处前一个字符
Ctrl+y 粘贴刚才所删除的字符
Ctrl+w 剪切光标所在处之前的一个词(以空格、标点等为分隔符)
Alt+d 剪切光标之后的词
Esc+w 删除光标所在处之前的字符至其单词尾(以空格、标点等为分隔符)
Ctrl+t 颠倒光标所在处及其之前的字符位置,并将光标移动到下一个字符
Alt+t 交换当前与以前单词的位置
Alt+u 把当前词转化为大写
Alt+l 把当前词转化为小写
Alt+c 把当前词汇变成首字符大写
Ctrl+v 插入特殊字符,如Ctrl+v+Tab加入Tab字符键
Esc+t 颠倒光标所在处及其相邻单词的位置
Ctrl+c 删除整行
Ctrl+(x u) 按住Ctrl的同时再先后按x和u,撤销刚才的操作
Ctrl+s 挂起当前shell
Ctrl+q 重新启用挂起的shell
[Ctrl] + [Alt] + [Backspace] = 杀死你当前的 X 会话。杀死图形化桌面会话,把你返回到登录屏幕。如果正常退出步骤不起作用,你可以使用这种方法。
[Ctrl] + [Alt] + [Delete] = 关机和重新引导 Red Hat Linux。关闭你当前的会话然后重新引导 OS。只有在正常关机步骤不起作用时才使用这种方法。
[Ctrl] + [Alt] + [Fn] = 切换屏幕。 [Ctrl] + [Alt] + 功能键之一会显示一个新屏幕。根据默认设置,从 [F1] 到 [F6] 是 shell 提示屏幕, [F7] 是图形化屏幕。
[Alt] + [Tab] = 在图形化桌面环境中切换任务。如果你同时打开了不止一个应用程序,你可以使用 [Alt] + [Tab] 来在打开的任务和应用程序间切换。
[Ctrl] + [a] = 把光标移到行首。它在多数文本编辑器和 Mozilla 的 URL 字段内可以使用。
[Ctrl] + [d] = 从 shell 提示中注销(并关闭)。使用该快捷键,你就不必键入 exit 或 logout 。
[Ctrl] + [e] = 把光标移到行尾。它在多数文本编辑器和 Mozilla 的 URL 字段内都可使用。
[Ctrl] + [l] = 清除终端。该快捷操作与在命令行键入 clear 作用相同。
[Ctrl] + = 清除当前行。如果你在终端下工作,使用这一快捷操作可以清除从光标处到行首的字符。
[鼠标中间键] = 粘贴突出显示的文本。使用鼠标左键来突出显示文本。把光标指向你想粘贴文本的地方。点击鼠标中间键来粘贴它。在两键鼠标系统中,如果你把鼠标配置成模拟第三键,你可以同时点击鼠标的左右两键来执行粘贴。
[Tab] =命令行自动补全。使用 shell 提示时可使用这一命令。键入命令或文件名的前几个字符,然后按 [Tab] 键,它会自动补全命令或显示匹配你键入字符的所有命令。
[向上] 和 [向下] 箭头 = 显示命令历史。当你使用 shell 提示时,按 [向上] 或 [向下] 箭头来前后查看你在当前目录下键入的命令历史。当你看到你想使用的命令时,按 [Enter] 键。
clear = 清除 shell 提示屏幕。在命令行下键入它会清除所有这个 shell 提示屏幕中显示的数据。
exit = 注销。在 shell 提示中键入它会注销当前的用户或根用户帐号。
history = 显示命令历史。在 shell 提示中键入它来显示你所键入的被编号的前 1000 个命令。要显示较短的命令历史,键入 history f之后,空一格,在键入一个数字。例如: history 20 。
reset = 刷新 shell 提示屏幕。如果字符不清晰或乱码的话,在 shell 提示下键入这个命令会刷新屏幕。
Ctrl-U: 擦除一行光标前面的部分。
Ctrl-H: 擦除光标前面的一个字符。
Ctrl-D: 终止输入。(退出 shell,如果您正在使用 shell 的话)。
Ctrl-C: 终止当前正在运行的程序。
Ctrl-Z: 暂停程序。
&’’)
Ctrl-S: 停止向屏幕输出。
Ctrl-Q: 重新激活向屏幕输出。
默认的 shell,`bash’, 有历史编辑和 tab 补齐功能。
up-arrow: 开始历史命令搜索。
Ctrl-R: 开始增量历史命令搜索,可以按照关键字查查自己用过哪些命令。
Ctrl-V TAB: 输入 TAB 而不是扩展命令行。
Ctrl + P - 上一条命令
Ctrl + N - 下一条命令
Ctrl-U: 擦除一行光标前面的部分。
Ctrl + Y - 粘贴前一Ctrl+U类命令删除的字符 ,是粘贴不是撤销啊!
下面的应用可能稍稍高级一点点
!! - 上一条命令
!-n - 倒数第N条历史命令
!-n:p - 打印上一条命令(不执行)
!?string?- 最新一条含有“string”的命令
其他一些有用的Linux命令行按键组合。
Ctrl-Alt-Del:挂起或者重新启动系统,这三个Linux命令行按键在Linux下可以轻松地修改成关机的操作,这对于单用户的朋友还是很方便的
Ctrl + l - 清屏
Ctrl + A - 光标移到行首
Ctrl + E - 光标移到行尾
Ctrl + W - 清除光标之前一个单词
Ctrl + K - 清除光标到行尾的字符
Ctrl + T - 交换光标前两个字符
Ctrl + V - 输入控制字符 如Ctrl+v ,会输入^M
Ctrl + F - 光标后移一个字符
Ctrl + B - 光标前移一个字符
Ctrl + H - 删除光标前一个字符
N++F - 光标后移N个单词,N为1时可省略
N++B - 光标前移N个单词,N为1时可省略
ip 网卡相关的命令
ifup,ifdown命令
启动/关闭一块网卡
ifup eth0
ifdown eth0
---如果关闭网卡,xshell会怎样?
ifconfig查询、设置网卡和ip等参数
ifconfig 查看网卡的ip地址
实列
[root@peng ~]# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.17.252.195 netmask 255.255.240.0 broadcast 172.17.255.255
ether 00:16:3e:0c:64:12 txqueuelen 1000 (Ethernet)
RX packets 3594542 bytes 609672518 (581.4 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 2831543 bytes 359762107 (343.0 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
loop txqueuelen 1000 (Local Loopback)
RX packets 120380 bytes 16382904 (15.6 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 120380 bytes 16382904 (15.6 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
ip命令
ip是一个命令,不是TCP/IP那个ip,这个ip命令是结合了ifconfig和route两个命令的功能。
ip addr show #查看ip信息
systemctl restart network 重启网络服务
实列
基础命令
cd(切换命令)
描述:
目录切换命令
语法:
cd 文件路径
参数
无
实列切换
[root@pen ~]# cd .. #切换上级目录
[root@pen /]# cd ~ #切换家目录
[root@pen ~]# cd - #切换 上一次工作目录
[root@pen /]# cd /tmp #切换根目录下tmp目录
pwd(打印当前所在目录路径)
(翻译全称print work directory) ,打印当前工作目录
实列
[root@peng ~]# pwd
/root
tree以树状图列出目录的内容
描述:
Linux tree命令用于以树状图列出目录的内容。执行tree指令,它会列出指定目录下的所有文件,包括子目录里的文件。
语法:
tree 路径
参数
-s 列出文件或目录大小。
tree -L 2 #-L n 只显示 n 层目录 (n 为数字)
注意
要先下载才可以使用tree命令
yum install tree -y
实列
显示当前文件夹
[root@peng ~]# ls
a cs cs2 cs2.txt cs.bak cs.txt
[root@peng ~]# tree
.
├── a
│ └── aa
├── cs
├── cs2
├── cs2.txt
├── cs.bak
└── cs.txt
显示指定文件夹
[root@peng ~]# tree ./a
./a
└── aa
显示指定文件夹结构并大小
[root@peng ~]# tree -s ./a
./a
└── [ 4096] aa
yum安装更新命令
- 1.列出所有可更新的软件清单命令:yum check-update
- 2.更新所有软件命令:yum update
- 3.仅安装指定的软件命令:yum install <package_name>
- 4.仅更新指定的软件命令:yum update <package_name>
- 5.列出所有可安裝的软件清单命令:yum list
- 6.删除软件包命令:yum remove <package_name>
- 7.查找软件包 命令:yum search
- 8.清除缓存命令:
- yum clean packages: 清除缓存目录下的软件包
- yum clean headers: 清除缓存目录下的 headers
- yum clean oldheaders: 清除缓存目录下旧的 headers
- yum clean, yum clean all (= yum clean packages; yum clean oldheaders) :清除缓存目录下的软件包及旧的headers
yum install tree -y # 如同 pip3 install django (这个命令随便在哪敲,安装在默认路径)
hostname 查看主机名
查看主机名
hostname
修改主机名
hostnamectl set-hostname 新的主机名
实列hostname
打印当前登录主机名字
[root@peng ~]# hostname
peng
实列修改主机名 重新连接才会生效
[root@peng ~]# hostnamectl set-hostname pengzhiqiang
[root@peng ~]#
whoami打印与当前生效的用户
打印当前在用的用户
[root@pengzhiqiang ~]# whoami
root
echo 显示一行文本
描述:
显示一行文本
语法:
echo 变量名
参数
实列
[root@pengzhiqiang ~]# a=6666 #设置变量a=6666
[root@pengzhiqiang ~]# echo $a
6666
[root@pengzhiqiang ~]# echo a
a
特殊符号
>重定向覆盖输出符
>>重定向追加输出符
< 重定向覆盖写入符
<< 重定向追加写入符
1> 标准输出重定向 先把文件的内容清空 把内容放在文件的最后一行
1>> 追加重定向 把内容放在文件的最后一行
2> 标准错误重定向
2>> 错误追加重定向
实列
将输出覆盖文件里面
[root@pengzhiqiang ~]# echo 666 > cs3.txt
[root@pengzhiqiang ~]# ls
cs3.txt cs.txt
文件夹操作的命令
mkdir(创建目录)
描述:若指定目录不存在则创建目录。
语法:mkdir 文件夹名
参数
-p递归创建文件夹
实列
递归创建
[root@pengzhiqiang ~]# ls
cs3.txt cs.txt
[root@pengzhiqiang ~]# mkdir -p a/aa/aaa/aaaa
[root@pengzhiqiang ~]# ls
a cs3.txt cs.txt
[root@pengzhiqiang ~]# tree a
a
└── aa
└── aaa
└── aaaa
普通创建 在没有aa文件夹 且没-p参数 报错
[root@pengzhiqiang ~]# mkdir aa/cc
mkdir: cannot create directory ‘aa/cc’: No such file or directory
普通创建 有aa文件夹情况下
[root@pengzhiqiang ~]# mkdir a/aa2
[root@pengzhiqiang ~]# tree a
a
├── aa
│ └── aaa
│ └── aaaa
└── aa2
rm(删除文件 文件夹)
实列
[root@pen ~]# rm -rf hhheee/ #/删除当前文件夹hhheee
[root@pen ~]# rm -rf ./* #/删除当前目录所有文件与文件夹
rm oldboy.py
#默认有提示删除,需要输入y
rm -f oldboy.py #不需要提示,强制删除
#rm默认无法删除目录,需要跟上参数-r
rm -rf /tmp/oldboy/
--------
友情提醒:初学者使用rm命令,随时快照虚拟机
mv修改文件夹名字
实列
修改当前文件夹a名字为aa6
[root@pengzhiqiang ~]# ls
a cs3.txt cs.txt
[root@pengzhiqiang ~]# mv a aa6
[root@pengzhiqiang ~]# ls
aa6 cs3.txt cs.txt
注意把当前目录下的file1文件名改成file2,如果该目录下有file2,则覆盖以前的file2文件。
mv 移动文件夹
mv /源目录/文件夹名 /目的目录/文件夹名
实列
移动hh文件夹到aa6文件夹下
[root@pengzhiqiang ~]# ls
aa6 cs.txt hh
[root@pengzhiqiang ~]# tree
.
├── aa6
│ ├── aa
│ │ └── aaa
│ │ └── aaaa
│ ├── aa2
│ ├── cs3.txt
│ └── hh
├── cs.txt
└── hh
└── hhh
8 directories, 2 files
[root@pengzhiqiang ~]# mv hh aa6
mv: overwrite ‘aa6/hh’? y
[root@pengzhiqiang ~]# ls
aa6 cs.txt
[root@pengzhiqiang ~]# tree
.
├── aa6
│ ├── aa
│ │ └── aaa
│ │ └── aaaa
│ ├── aa2
│ ├── cs3.txt
│ └── hh
│ └── hhh
└── cs.txt
7 directories, 2 files
find 查找文件或文件夹路径
描述
查找命令
语法
find 从哪找 -type 文件类型 -name 你要找什么名字的文件
注意
文件类型
l 快捷方式类型
d 文件夹类型
f 文本类型
实列全局搜索,所有以.txt结尾的文件
find / -type f -name "*.txt"
实列2 在tmp目录下搜索小黑.txt
find /opt -name '小黑.txt'
在/opt下搜索和python有关的文件夹
find /opt -type d -name "python*"
cp复制文件夹或文件
使用cp -a 相当于将原数据原封不动的拷贝过来,不改变里面的任何信息 相当于-pdr 的意思(参数pdr分别bai为:保留权限du,复制软链接本身,递归复制
);
使用cp -r 拷贝数据,拷贝的结果是生成新的时间戳等信息
cp -p 复制文件,同时保持文件属性不变 可以用stat
实列
复制文件夹
[root@pengzhiqiang ~]# ls
aa6 cs.txt
[root@pengzhiqiang ~]# cp -r aa6 aa6.bak
[root@pengzhiqiang ~]# ls
aa6 aa6.bak cs.txt
[root@pengzhiqiang ~]# tree
.
├── aa6
│ ├── aa
│ │ └── aaa
│ │ └── aaaa
│ ├── aa2
│ ├── cs3.txt
│ └── hh
│ └── hhh
├── aa6.bak
│ ├── aa
│ │ └── aaa
│ │ └── aaaa
│ ├── aa2
│ ├── cs3.txt
│ └── hh
│ └── hhh
└── cs.txt
移到或者复制
复制 > copy > cp
#移动xxx.py到/tmp目录下
cp xxx.py /tmp/
#移动xxx.py顺便改名为chaoge.py
cp xxx.py /tmp/chaoge.py
cp是个好命令,操作文件前,先备份
cp main.py main.py.bak
强制复制不提示
cp命令加了-f参数仍然提示是否覆盖
linux系统中,cp命令用于拷贝文件,常用的参数:
-r 是递归,拷贝目录下的所有子目录及文件
-f 是强制覆盖,如果存在相同参数时
-i 是覆盖同名文件时进行提示
但有时候,即使加上了-rf参数,系统还是会对重名文件的覆盖一个个作出确认提示,必须依次确认非常麻烦。
产生此问题的原因是,此时的cp实际上是 cp -i 的别名。
可以在系统中用alias指令,查询当前cp指令默认值, 如下:
查询当前cp指令默认值
alias cp
1
修改cp指令为cp
alias cp = ‘cp’
1
再输入cp -rf参数进行拷贝,系统就不会发出提示了
cp -rf xxx/ ../example/
文件操作的命令
touch(创建文件)
描述:
Linux touch命令用于修改文件或者目录的时间属性,包括存取时间和更改时间。若文件不存在,系统会建立一个新的文件。
语法:
touch 文件名
参数
a 改变档案的读取时间记录。
m 改变档案的修改时间记录。
实列普通用法
[root@pen ~]# touch 66.txt #在当前文件夹创建66.txt
[root@pen ~]# touch ./666/77.txt #在666文件夹下创建77.txt
[root@pen ~]# tree ./666
创建了文件在创建不会覆盖
[root@pengzhiqiang NETPRO5.02.8]# touch 1.txt
[root@pengzhiqiang NETPRO5.02.8]# echo 123 > 1.txt
[root@pengzhiqiang NETPRO5.02.8]# cat 1.txt
123
[root@pengzhiqiang NETPRO5.02.8]# touch 1.txt
[root@pengzhiqiang NETPRO5.02.8]# cat 1.txt
123
rm (删除文件)
描述:
删除文件。
语法:
rm 文件路径
参数
i 删除文件且交互式提示,是否删除
r 文件夹 #递归删除文件夹
f 强制删除文件,且不提示
实列删除文件
[root@pen ~]# rm -rf hhheee/ #/删除当前文件夹hhheee
[root@pen ~]# rm -rf ./* #/删除当前目录所有文件与文件夹
mv(移动和重命名的作用)
描述:
移动和重命名的作用
语法:
mv 旧的文件名 新的文件名
mv 文件 文件夹 #更改目录
参数
无
实列移动文件
[root@pen tmp]# mv 66.txt aaa/bbb #将66.txt移动到aaa的bbb的文件夹下
实列改名
[root@pen tmp]# mv aaa aa #将文件夹改名 如果改的名字原来就有,就好变为移动
[root@pen tmp]# mv 666.txtt 6.txt #将文件改名
find 查找文件或文件夹路径
描述
查找命令
语法
find 从哪找 -type 文件类型 -name 你要找什么名字的文件
注意
文件类型
l 快捷方式类型
d 文件夹类型
f 文本类型
实列全局搜索,所有以.txt结尾的文件
find / -type f -name "*.txt"
实列2 在tmp目录下搜索小黑.txt
find /opt -name '小黑.txt'
在/opt下搜索和python有关的文件夹
find /opt -type d -name "python*"
文件内容操作的命令
cut指定显示内容
使用说明:
cut 命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段写至标准输出。
如果不指定 File 参数,cut 命令将读取标准输入。必须指定 -b、-c 或 -f 标志之一。
参数:
-b :以字节为单位进行分割。这些字节位置将忽略多字节字符边界,除非也指定了 -n 标志。
-c :以字符为单位进行分割。
-d :自定义分隔符,默认为制表符。
-f :与-d一起使用,指定显示哪个区域。
-n :取消分割多字节字符。仅和 -b 标志一起使用。如果字符的最后一个字节落在由 -b 标志的 List 参数指示的
范围之内,该字符将被写出;否则,该字符将被排除
提取每一行的第3个字节,
[root@pengzhiqiang test]# ls
12345 linux
[root@pengzhiqiang test]# ls ./ | cut -b 3
3
n
提取每一行的前2个字节
[root@pengzhiqiang test]# ls ./
12345 linux
[root@pengzhiqiang test]# ls ./ | cut -c 1,2
12
li
指定路径切割:找出指定内容
PATH 变量如下
[root@www ~]# echo $PATH
/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin:/usr/X11R6/bin:/usr/games
# 1 | 2 | 3 | 4 | 5 | 6 | 7
将 PATH 变量取出,我要找出第五个路径。
#echo $PATH | cut -d ':' -f 5
/usr/local/bin
将 PATH 变量取出,我要找出第三和第五个路径
将 PATH 变量取出,我要找出第三和第五个路径。
#echo $PATH | cut -d ':' -f 3,5
/sbin:/usr/local/bin
将 PATH 变量取出,我要找出第三到最后一个路径。
echo $PATH | cut -d ':' -f 3-
/sbin:/usr/sbin:/usr/local/bin:/usr/X11R6/bin:/usr/games
将 PATH 变量取出,我要找出第一到第三个路径。
#echo $PATH | cut -d ':' -f 1-3
/bin:/usr/bin:/sbin:
将 PATH 变量取出,我要找出第一到第三,还有第五个路径。
echo $PATH | cut -d ':' -f 1-3,5
/bin:/usr/bin:/sbin:/usr/local/bin
cat输出文件内容
描述:
输出文件内容
将[文件]或标准输入组合输出到标准输出
语法:
cat 文件名
参数
注意
实列
显示文件内容
[root@pengzhiqiang ~]# cat c
cscscs
#显示文件内容并输出行号
[root@pengzhiqiang ~]# cat -n c.txt
1 cscscs
head 看文件的前n行
语法
head -n 数字 filename #看文件的前n行
实列
[root@pengzhiqiang ~]# head -1 c.txt
111
tail输出文件的末尾部分
描述:
输出文件的末尾部分
在标准输出上显示每个FILE的最后10行. 如果多于一个FILE,会一个接一个地显示, 并在每个文件显示的首部给出文件名. 如果没有FILE,或者FILE是-,那么就从标准输入上读取.
语法:
tail 参数 文件夹名
参数
实列
查看后两行
[root@pengzhiqiang ~]# tail -2 c.txt
555
666
默认全部显示
[root@pengzhiqiang ~]# tail c.txt
111
222
333
444
555
666
实列2 -f 实时监控
窗口实时监控 文件内容变化会实时改变
[root@peng ~]# tail -f 7.txt #一个窗口实时监控
利用head tail输出文件的10-20行
head 20 english.txt | tail -10
more less分屏显示文本内容
命令用于分屏显示文本内容
more /etc/passwd
按下空格space是翻页
按下b键是上一页
回车键向下读取内容
vim编辑文件
所有的 Unix Like 系统都会内建 vi 文书编辑器,其他的文书编辑器则不一定会存在。
但是目前我们使用比较多的是 vim 编辑器。
vim 具有程序编辑的能力,可以主动的以字体颜色辨别语法的正确性,方便程序设计。
#方法,命令
vi
vim
使用vi打开oldboy.py,默认是命令模式,需要输入a/i进入编辑模式,然后输入文本"Life is short,i use python"
按下esc键,回到命令模式
输入 :wq! 强制保存退出
w write 写入
q quit 退出
! 强制
或者 :x 保存退出
------
:q 不保存退出
:q! 不保存强制退出
grep 过滤查找文件中想要的字符串
语法
grep 你想要的字符串 文件名
参数
-i 不区分大小写
-v取反
-n 显示行号
实列 在6.txt文件中找到5
[root@pengzhiqiang ~]# cat c.txt
111
222
333
444
555
[root@pengzhiqiang ~]# grep 5 c.txt
555
找到包含5并显示行号
[root@pengzhiqiang ~]# grep -n 5 c.txt
5:555
权限相关命令
ls (列出目录的内容)查看权限
描述:
Linux ls命令用于显示指定工作目录下之内容(列出目前工作目录所含之文件及子目录)。
语法:
ls 路径
参数
-a 显示隐藏文件
-h, --human-readable 与-l 一起,以易于阅读的格式输出文件大小
(例如 1K 234M 2G)
-l 显示详细信息 使用较长格式列出信息
实列普通操作
[root@pen /]# ls / #显示/目录下所有文件
[root@pen /]# ls #显示当前所在目录下所有文件
[root@pen /]# ls /tmp #显示指定目录文件
实列 -a参数
[root@pen /]# ls -a #显示所有文件包括隐藏文件
实列 -l /参数
[root@pengzhiqiang NETPRO5.02.8]# ls -l
total 32
drwxr-xr-x 2 root root 4096 Aug 18 19:00 bin
drwxr-xr-x 2 root root 4096 Aug 18 19:00 conf
drwxrwxrwx 2 root root 4096 Aug 18 19:00 data
drwxr-xr-x 2 root root 4096 Aug 18 19:00 lib
drwxr-xr-x 2 root root 4096 Aug 18 19:00 logs
drwxr-xr-x 2 root root 4096 Aug 18 19:00 plugins
drwxr-xr-x 2 root root 4096 Aug 18 19:00 scripts
drwxr-xr-x 2 root root 4096 Aug 18 19:00 working
[root@pengzhiqiang NETPRO5.02.8]# ls -l -h
total 32K
drwxr-xr-x 2 root root 4.0K Aug 18 19:00 bin
drwxr-xr-x 2 root root 4.0K Aug 18 19:00 conf
drwxrwxrwx 2 root root 4.0K Aug 18 19:00 data
drwxr-xr-x 2 root root 4.0K Aug 18 19:00 lib
drwxr-xr-x 2 root root 4.0K Aug 18 19:00 logs
drwxr-xr-x 2 root root 4.0K Aug 18 19:00 plugins
drwxr-xr-x 2 root root 4.0K Aug 18 19:00 scripts
drwxr-xr-x 2 root root 4.0K Aug 18 19:00 working
ls -i查看文件的inode号(inode存储文件的详细信息)
Linux权限的观察
使用一条命令查看权限
ls -l /var/log/mysqld.log
解读上图:
- 权限,第一个字母为文件类型,后续9个字母,每3个一组,是三种身份的权限
- 文件链接数
- 文件拥有者-属主
- 文件拥有组-属组
- 文件大小
- 最后一次被修改的时间日期
- 文件名
先来分析一下文件的类型
- 一般文件
d 文件夹
l 软连接(快捷方式)
b 块设备,存储媒体文件为主
c 代表键盘,鼠标等设备
文件权限
r read可读,可以用cat等命令查看
w write写入,可以编辑或者删除这个文件
x executable 可以执行
目录权限
权限这里测试不要用root实验!!!!root太牛逼了
请用普通用户执行!!!!!测试文件、文件夹权限操作,请用普通用户!
r 可以对此目录执行ls列出所有文件
w 可以在这个目录创建文件
x 可以cd进入这个目录,或者查看详细信息
权限与数字转化
ls -l /var/log/mysqld.log
-rw-r--r-- 1 mysql mysql 6735642 8月 11 14:19 /var/log/mysqld.log
这个就代表mysqld.log文件属主是mysql,属组是mysql,只有mysql用户可以读取编写这个文件,其他人只能读此文件。
查看用户权限命令
id指令查看用户所属群主
[root@oldboy_python ~ 16:34:52]#id root
uid=0(root) gid=0(root) 组=0(root)
修改文件权限属性
普通用户只能修改自己的文件名,时间与权限(注意)
因此修改其他用户权限,只能用最nb的root用户
#切换root用户
[pyyu@oldboy_python root]$ su -
当前/tmp/pyyu.txt文件以存在,且信息是
-rw-rw-r-- 1 pyyu pyyu 0 8月 11 16:41 pyyu.txt
修改属主为root
chown
[root@oldboy_python /tmp 16:43:12]#chown root pyyu.txt
查看信息
[root@oldboy_python /tmp 16:43:42]#ll pyyu.txt
-rw-rw-r-- 1 root pyyu 0 8月 11 16:41 pyyu.txt
修改属组
chgrp
[root@oldboy_python /tmp 16:43:42]#ll pyyu.txt
-rw-rw-r-- 1 root pyyu 0 8月 11 16:41 pyyu.txt
[root@oldboy_python /tmp 16:44:59]#chgrp root pyyu.txt
[root@oldboy_python /tmp 16:45:51]#ll pyyu.txt
-rw-rw-r-- 1 root root 0 8月 11 16:41 pyyu.txt
文件权限
我们已知三种身份权限(属主,属组,其他人),每种身份都有rwx的三种权限,系统还提供了数字计算权限。
r read 4
w write 2
x execute 1
每种身份最低是0分,最高是r+w+x 7分
因此三种身份,最高权限是777,最低是000
-rw-rw-r-- 1 root root 0 8月 11 16:41 pyyu.txt
因此可知pyyu.txt的权限是
属主是6 r+w(4+2)
属组是6 r+w(4+2)
其他人是4 r(4)
chmod修改权限的命令
chmod [身份] [参数] [文件]
u(user) +(添加)
g(group) -(减去)
o(other) =(赋值)
a(all)
实列将文件 file1.txt 设为所有人皆可读取 :
chmod ugo+r file1.txt
将文件 file1.txt 设为所有人皆可读取 :
chmod a+r file1.txt
将文件 file1.txt 与 file2.txt 设为该文件拥有者,与其所属同一个群体者可写入,但其他以外的人则不可写入 :
chmod ug+w,o-w file1.txt file2.txt
将 ex1.py 设定为只有该文件拥有者可以执行 :
chmod u+x ex1.py
将目前目录下的所有文件与子目录皆设为任何人可读取 :
chmod -R a+r *
此外chmod也可以用数字来表示权限如 :
chmod 777 file
语法为:
chmod abc file
其中a,b,c各为一个数字,分别表示User、Group、及Other的权限。
r=4,w=2,x=1
- 若要rwx属性则4+2+1=7;
- 若要rw-属性则4+2=6;
- 若要r-x属性则4+1=5。
chmod a=rwx file
和
chmod 777 file
效果相同
chmod ug=rwx,o=x file
和
chmod 771 file
lsattr查看文件特殊权限的命令
描述
显示文件在Linux第二扩展文件系统上的特有属性
查看文件特殊权限的命令
chattr概述:凌驾于r、w、x、suid、sgid之上的权限。
命令功能:设置特殊权限,chattr命令用来改变文件属性。
-i #锁定文件,不能编辑,不能修改,不能删除,不能移动,可以执行
-a #仅可以追加文件,不能编辑,不能删除,不能移动,可以执行
示例:
(1)用chattr命令防止系统中某个关键文件被修改。
chattr +i /etc/fstab
(2)让某个文件只能往里面追加内容,不能删除,一些日志文件适用于这种操作
chattr +a /data1/user_act.log
实列
[root@pengzhiqiang ~]# ls
b cs24 cs.txt cs.txt.bak c.txt
[root@pengzhiqiang ~]# lsattr
-------------e-- ./b
-------------e-- ./c.txt
-------------e-- ./cs.txt.bak
-------------e-- ./cs.txt
-------------e-- ./cs24
chattr设置文件特殊权限的命令
描述
设置文件特殊权限的命令
参数
i设置该文件不能进行任何形势的修改
a #仅可以追加文件,不能编辑,不能删除,不能移动,可以执行
实列 设置文件不可以修改
chattr +i 6.txt #设置该文件不能进行任何形势的修改
注意
有了此权限 文件不可以修改 不可以删除
取消 i权限
chattr -i 6.txt #取消-i的权限设置
路径相关的命令
rpm查询命令的所有安装路径
[root@pen tmp]# rpm -ql tree ???????
查询命令的所有安装路径
进程 端口 磁盘 内存相关命令
ps 查看进程信息
ps aux 或者 ps -ef #查看机器所有进程信息
ps aux | grep "vim" #过滤出和vim有关的进程
ps aux | grep "python" #找到机器所有和python有关的进程
[root@pengzhiqiang ~]# ps -ef | grep python
root 564 1 0 Apr24 ? 00:00:09 /usr/bin/python2 -Es /usr/sbin/firewalld --nofork --nopid
root 934 1 0 Apr24 ? 00:11:48 /usr/bin/python2 -Es /usr/sbin/tuned -l -P
root 990 1 0 Apr24 ? 00:11:09 python main.pyc 8888
root 1124 1 0 Apr24 ? 00:15:53 python task.pyc
root 26732 22153 0 17:18 pts/1 00:00:00 grep --color=auto python
top显示当前系统正在执行的进程
描述
可以显示当前系统正在执行的进程的相关信息,包括进程ID、内存占用率、CPU占用率等
du报告磁盘空间使用情况
描述
报告磁盘空间使用情况
参数
-h 显示mb gb单位
-s 显示统计
实列
查看文件夹大小
[root@pengzhiqiang ~]# du -sh b
76K b
查看文件大小
[root@pengzhiqiang ~]# du -sh cs.txt
4.0K cs.txt
注意 可能有隐藏文件
df磁盘使用率
df 命令,用于显示 Linux 系统中各文件系统的硬盘使用情况,包括文件系统所在硬盘分区的总容量、已使用的容量、剩余容量等。
【例 1】
[root@localhost ~]# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/hdc2 9920624 3823112 5585444 41% /
/dev/hdc3 4956316 141376 4559108 4% /home
/dev/hdc1 101086 11126 84741 12% /boot
tmpfs 371332 0 371332 0% /dev/shm
[root@pengzhiqiang ~]# df /
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/vda1 41147472 4429452 34814528 12% /
不使用任何选项的 df 命令,默认会将系统内所有的文件系统信息,以 KB 为单位显示出来。
本例中,由 df 命令显示出的各列信息的含义分别是:
- Filesystem:表示该文件系统位于哪个分区,因此该列显示的是设备名称;
- 1K-blocks:此列表示文件系统的总大小,默认以 KB 为单位;
- Used:表示用掉的硬盘空间大小;
- Available:表示剩余的硬盘空间大小;
- Use%:硬盘空间使用率。如果使用率高达 90% 以上,就需要额外注意,因为容量不足,会严重影响系统的正常运行;
- Mounted on:文件系统的挂载点,也就是硬盘挂载的目录位置。
free查看内存
https://www.cnblogs.com/ultranms/p/9254160.html参考
free 命令显示系统内存的使用情况,包括物理内存、交换内存(swap)和内核缓冲区内存。
[root@pengzhiqiang ~]# free
total used free shared buff/cache available
Mem: 1882160 501284 124228 17348 1256648 1159408
Swap: 1049596 0 1049596
下面先解释一下输出的内容:
Mem 行(第二行)是内存的使用情况。
Swap 行(第三行)是交换空间的使用情况。
total 列显示系统总的可用物理内存和交换空间大小。
used 列显示已经被使用的物理内存和交换空间。
free 列显示还有多少物理内存和交换空间可用使用。
shared 列显示被共享使用的物理内存大小。
buff/cache 列显示被 buffer 和 cache 使用的物理内存大小。
available 列显示还可以被应用程序使用的物理内存大小。
我想只有在理解了一些基本概念之后,上面的输出才能帮助我们了解系统的内存状况。
其他命令相关
uname显示系统信息
uname
显示系统信息
-r 显示系统内核版本
-m 显示系统32位64位
管道符”|”
Linux提供的管道符“|”讲两条命令隔开,管道符左边命令的输出会作为管道符右边命令的输入。
常见用法:
#检查python程序是否启动
ps -ef|grep "python"
#找到/tmp目录下所有txt文件
ls /tmp|grep '.txt'
#检查nginx的端口是否存活
netstat -tunlp |grep nginx
命令格式: 命令A | 命令B
scp传输命令
描述
传输命令
语法
scp 你想要的内容 传输到哪里
本地传其他机器
实列1 把我本地机器1的/tmp/666.txt发到远程机器的/opt目录下
scp /tmp/666.txt root@机器的ip:/opt/
实列2 把本地的first.py 发送给root@192.168.16.105这个机器
scp ./first.py root@192.168.16.105:/data
注意
1.如果data文件夹存在,则放入data文件夹中
2.如果没有data这个文件夹,则把first.py改名为data
其他机器传本地
语法
scp root@ip地址:文件路径 要存的路径
scp root@192.168.16.105:/data/666.txt /opt
wget在线下载资源的命令
描述
在线下载资源的命令
实列递归下载
wget -r -p www.luffycity.com # -r -p 递归爬取网站资源
alias 别名
描述:
设置命令的别名
语法:
alias[别名]=[指令名称]
参数
若不加任何参数,则列出目前所有的别名设置。
注意
别名就是便利贴
实列
查看别名
[root@pen tmp]# alias rm #查看rm 别名
设置别名使用别名
[root@pengzhiqiang ~]# alias dy='echo 66'
[root@pengzhiqiang ~]# dy
66
date查看系统时间
描述
查看系统时间
[root@pengzhiqiang ~]# date
Fri Jul 17 17:35:56 CST 2020
更新系统时间
yum install ntpdate -y
ntpdate ntp.aliyun.com
#和阿里提供的时间服务器,进行时间同步
EOF
特殊作用注释shell脚本
特殊用法:
: << EOF
shell脚本代码段
用来注释整段脚本代码。 :
是shell中的空语句。
EOF
这段脚本执行时,中间部分不会被执行:
下面通过具体实例来感受下EOF用法的妙处:
1)向文件test.sh里输入内容。
[root@slave-server opt]# cat << EOF >test.sh
> 123123123
> 3452354345
> asdfasdfs
> EOF
[root@slave-server opt]# cat test.sh
123123123
3452354345
asdfasdfs
追加内容
[root@slave-server opt]# cat << EOF >>test.sh
> 7777
> 8888
> EOF
[root@slave-server opt]# cat test.sh
123123123
3452354345
asdfasdfs
7777
8888
覆盖
[root@slave-server opt]# cat << EOF >test.sh
> 55555
> EOF
[root@slave-server opt]# cat test.sh
55555