linux常用命令持续更新带案例

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 

img

解读上图:

  1. 权限,第一个字母为文件类型,后续9个字母,每3个一组,是三种身份的权限
  2. 文件链接数
  3. 文件拥有者-属主
  4. 文件拥有组-属组
  5. 文件大小
  6. 最后一次被修改的时间日期
  7. 文件名

先来分析一下文件的类型

-    一般文件
d    文件夹
l    软连接(快捷方式)
b    块设备,存储媒体文件为主
c    代表键盘,鼠标等设备

文件权限

r    read可读,可以用cat等命令查看
w    write写入,可以编辑或者删除这个文件
x    executable    可以执行

目录权限

权限这里测试不要用root实验!!!!root太牛逼了

请用普通用户执行!!!!!测试文件、文件夹权限操作,请用普通用户!

r    可以对此目录执行ls列出所有文件
w    可以在这个目录创建文件
x    可以cd进入这个目录,或者查看详细信息

权限与数字转化

img

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用户可以读取编写这个文件,其他人只能读此文件。

img

查看用户权限命令

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

img

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
posted @ 2020-03-11 20:30  一起奥利给  阅读(455)  评论(0编辑  收藏  举报