文件目录的增删改查ARUL
A
# 创建一个普通文本文件
R
U
L
# 查询当前目录下的内容 ls命令
# ls命令就是list的缩写
[root@localhost tylor]# ls .
cv_debug.log 公共 模板 视频 图片 文档 下载 音乐 桌面
[root@localhost /]# ls .
bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
[root@localhost /]# ls /
bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
几个特殊的目录
. # 当前的目录
[root@localhost tylor]# ls .
cv_debug.log 公共 模板 视频 图片 文档 下载 音乐 桌面
.. # 上一级的目录
[root@localhost tylor]# ls ..
tylor
- # 代表当前登录用户的home目录 root用户就是/root 普通用户就是 /home/tylor
[root@localhost /]# cd /home/tylor
[root@localhost tylor]# ls
cv_debug.log 公共 模板 视频 图片 文档 下载 音乐 桌面
[root@localhost tylor]# ls --
cv_debug.log 公共 模板 视频 图片 文档 下载 音乐 桌面
- # 代表上一次的工作目录
相对路径和绝对路径
[root@localhost home]# ls /home 绝对路径
tylor
[root@localhost home]# ls . 相对路径
tylor
查找命令对应的包
yum search killall
yum -install psmisc
Linux常用命令
mkidr
[caesar@vvkt7whznuckhiz2-0723575 ~]$ ls
first.py
[caesar@vvkt7whznuckhiz2-0723575 ~]$ mkdir haha.md ms.min
[caesar@vvkt7whznuckhiz2-0723575 ~]$ ls
first.py haha.md ms.min
tree
# 以树状显示目录的层级结构;yum 相当于python的 pip
yum -y install tree # y 意味着默认同意安装
[caesar@vvkt7whznuckhiz2-0723575 ~]$ mkdir -p a/b c/d
[caesar@vvkt7whznuckhiz2-0723575 ~]$ tree
.
├── a
│ └── b
├── c
│ └── d
└── first.py
man
查看帮助信息,或者其他命令
man mkdir
MKDIR(1) User Commands MKDIR(1)
NAME
mkdir - make directories
SYNOPSIS
mkdir [OPTION]... DIRECTORY...
DESCRIPTION
Create the DIRECTORY(ies), if they do not already exist.
Mandatory arguments to long options are mandatory for short options too.
-m, --mode=MODE
set file mode (as in chmod), not a=rwx - umask
-p, --parents
no error if existing, make parent directories as needed
-v, --verbose
print a message for each created directory
-Z set SELinux security context of each created directory to the default type
--context[=CTX]
like -Z, or if CTX is specified then set the SELinux or SMACK security context to CTX
--help display this help and exit
--version
output version information and exit
GNU coreutils online help: <http://www.gnu.org/software/coreutils/> Report mkdir translation bugs to
<http://translationproject.org/team/>
AUTHOR
Written by David MacKenzie.
COPYRIGHT
Copyright © 2013 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later
<http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent per‐
mitted by law.
SEE ALSO
mkdir(2)
The full documentation for mkdir is maintained as a Texinfo manual. If the info and mkdir programs are prop‐
erly installed at your site, the command
info coreutils 'mkdir invocation'
should give you access to the complete manual.
GNU coreutils 8.22 November 2020 MKDIR(1)
简短帮助信息
[caesar@vvkt7whznuckhiz2-0723575 ~]$ mkdir --help
Usage: mkdir [OPTION]... DIRECTORY...
Create the DIRECTORY(ies), if they do not already exist.
Mandatory arguments to long options are mandatory for short options too.
-m, --mode=MODE set file mode (as in chmod), not a=rwx - umask
-p, --parents no error if existing, make parent directories as needed
-v, --verbose print a message for each created directory
-Z set SELinux security context of each created directory
to the default type
--context[=CTX] like -Z, or if CTX is specified then set the SELinux
or SMACK security context to CTX
--help display this help and exit
--version output version information and exit
GNU coreutils online help: <http://www.gnu.org/software/coreutils/>
For complete documentation, run: info coreutils 'mkdir invocation'
systemctl
命令
systemctl status redis # 查看redis服务的状态
systemctl start redis # 开启服务
systemctl stop redis # 停止服务
systemctl restart redis # 重启服务
systemctl enable redis # 设置开机自启
systemctl disable redis # 关闭开机自启
history
命令
可以查看当前用户的历史命令
!608 # 重新执行608行的命令
echo命令
相当于python中的print函数,可以输出字符串给用户看
[root@tylor ~]# echo "You love I"
You love I
[root@tylor ~]#
第二种方法,记得为变量赋值时不能在变量和符号之间有空格
# $符号用于取值,类似于Ajax中的$
# Linux在命令行对变量的赋值是临时的
# 变量名区分大小写
name="How are you"
echo $name
How are you
cat
查看文件内容
[caesar@vvkt7whznuckhiz2-0723575 ~]$ cat first.py
#!coding:utf-8
print("Hello World!")
[caesar@vvkt7whznuckhiz2-0723575 ~]$ cat -n first.py
1 #!coding:utf-8
2 print("Hello World!")
Linux中的重定向符号
> # 重定向输出覆盖符, 如同python 中的with open中的 w 模式
>> # 重定向输出追加符, 如同 a 模式
< # 重定向谢图覆盖符,用的很少, 主要在数据库导入中,MySQL数据导入
<< # 用在cat命令中,很少见
案例
[root@vvkt7whznuckhiz2-0723575 caesar]# cat >>木兰诗.text << EOF
> 唧唧复唧唧
> 木兰当户织
> 不闻机杼声
> 慰问女叹息
> EOF
[root@vvkt7whznuckhiz2-0723575 caesar]# cat -n 木兰诗.text
1 唧唧复唧唧
2 木兰当户织
3 不闻机杼声
4 慰问女叹息
cp
命令
拷贝
# 用在对配置文件的备份,代码文件的备份 防止突然写错
# 复制文件
[root@vvkt7whznuckhiz2-0723575 caesar]# cat -n 新_木兰诗句.text
1 唧唧复唧唧
2 木兰当户织
3 不闻机杼声
4 慰问女叹息
# 复制文件夹需要添加 -r 递归
caesar@vvkt7whznuckhiz2-0723575 ~]$ cp -r a new_a
[caesar@vvkt7whznuckhiz2-0723575 ~]$ tree
.
├── a
│ └── b
├── c
│ └── d
├── first.py
├── new_a
│ └── b
├── \346\226\260_\346\234\250\345\205\260\350\257\227\345\217\245.text
└── \346\234\250\345\205\260\350\257\227.text
mv
命令
移动文件夹或者重命名
# 重命名 mv original_name new_name
[caesar@vvkt7whznuckhiz2-0723575 ~]$ mv 木兰诗.text new_木兰诗句.text
[caesar@vvkt7whznuckhiz2-0723575 ~]$ ls
a c first.py new_a new_木兰诗句.text 新_木兰诗句.text
# 移动位置
# 1 如果文件存在,只需要输入目标文件夹[移动是,工作路径需要与被移动的文件保持一致]
[caesar@vvkt7whznuckhiz2-0723575 ~]$ mv first.py a
[caesar@vvkt7whznuckhiz2-0723575 ~]$ tree
.
├── a
│ ├── b
│ └── first.py
├── c
│ └── d
├── new_a
│ └── b
├── new_\346\234\250\345\205\260\350\257\227\345\217\245.text
└── \346\226\260_\346\234\250\345\205\260\350\257\227\345\217\245.text
# 第二种移动方法,如果文件不存在则新建并且移入,需要移动时当前工作路径与被移动文件保持一致
[caesar@vvkt7whznuckhiz2-0723575 ~]$ cd a
[caesar@vvkt7whznuckhiz2-0723575 a]$ mv first.py e
[caesar@vvkt7whznuckhiz2-0723575 a]$ tree
.
├── b
└── e
alias
命令
[caesar@vvkt7whznuckhiz2-0723575 ~]$ alias
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias vi='vim'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
案例
快捷启动Django项目
alias start="python3 /home/mysite/manage.py runserver 0.0.0.0:8000"
find
命令
可以用于搜索机器上的所有资料,按照文件名字搜索,Linux一切皆文件
# 基本语法
# find 你要从那找 type 文件类型是什么 -size 你要的文件多大 -name 你要的文件名字是什么
# 在系统上全局搜索.txt文件
find / .txt
# 指定在 ```etc```目录下进行局部搜索一个网卡配置文件,网卡名字是以ifcfg开头的文本类型的文件
# 访问 etc需要先转入root权限
find /etc -type f -name "ifcfg"
[root@vvkt7whznuckhiz2-0723575 caesar]# find /etc -type f -name "ifcfg*"
/etc/sysconfig/network-scripts/ifcfg-lo
/etc/sysconfig/network-scripts/ifcfg-eth0
全局搜索和python相关的文件以及文件夹
[root@vvkt7whznuckhiz2-0723575 caesar]# find / -name "python"
/etc/python
/usr/bin/python
/usr/share/gdb/python
/usr/share/gcc-4.8.2/python
/usr/share/swig/2.0.10/python
/usr/libexec/systemtap/python
全局查找类型为文件夹,名字以python开头的所有对象[大量删减输出结果]
[root@vvkt7whznuckhiz2-0723575 caesar]# find / -type d -name "python*"
/etc/python
/usr/lib/python2.7
/usr/lib/python3.6
/usr/libexec/systemtap/python
123
# 准备数据
# mkdir /tmp/python{1..5} 在/tmp文件夹下创建出 python1 python2 ... python5
# mkdir /tmp/python_{a..d} 在/tmp文件夹下创建出 python_a python_b ... python_d
找到所有文件及文件夹的名字包含python的对象
[root@vvkt7whznuckhiz2-0723575 tmp]# find . -name "python*"
./python4
./python5
./python1
./python_a
./python_c
./python3
./python_d
./python2
./python_b
找到类型为文件,名字含有python的对象
[root@vvkt7whznuckhiz2-0723575 tmp]# find . -type f -name "python*"
./python_a
./python_c
./python_d
./python_b
反之,找出所有的文件夹
[root@vvkt7whznuckhiz2-0723575 tmp]# find . -type d -name "python*"
./python4
./python5
./python1
./python3
./python2
查找所有文件或者文件名以python开头,并且文件大小超过15M的
[root@vvkt7whznuckhiz2-0723575 tmp]# find . -size +15M -name "python*"
./python3.txt
./python2.txt
查看文件,文件夹大小
# ls -lh # -h参数是显示文件单位,以kb,mb, gb大小为单位,-l是列表形式列出文件
[root@vvkt7whznuckhiz2-0723575 tmp]# ls -lh
total 44M
drwxr-xr-x 2 root root 4.0K Sep 29 09:27 hsperfdata_root
drwxr-xr-x 2 root root 4.0K Sep 29 16:03 python1
drwxr-xr-x 2 root root 4.0K Sep 29 16:03 python2
-rw-r--r-- 1 root root 16M Sep 29 16:15 python2.txt
drwxr-xr-x 2 root root 4.0K Sep 29 16:03 python3
-rw-r--r-- 1 root root 18M Sep 29 16:15 python3.txt
drwxr-xr-x 2 root root 4.0K Sep 29 16:03 python4
drwxr-xr-x 2 root root 4.0K Sep 29 16:03 python5
-rw-r--r-- 1 root root 0 Sep 29 16:05 python_a
-rw-r--r-- 1 root root 0 Sep 29 16:05 python_b
-rw-r--r-- 1 root root 0 Sep 29 16:05 python_c
-rw-r--r-- 1 root root 0 Sep 29 16:05 python_d
-rw-r--r-- 1 root root 10M Sep 29 16:14 python.txt
prw-r--r-- 1 root root 0 Sep 29 16:18 wrapper-616-1-in
prw-r--r-- 1 root root 0 Sep 29 16:18 wrapper-616-1-out
Linux的管道符命令
1. 过滤服务器上的进程信息
2. 过滤服务器的端口信息
grep
命令
是Linux强大的三剑客之一,从文本中过滤有用信息的命令
1. 语法
grep "你想要过滤的字符串" 需要过滤的文件 # 用法1
cat 文件 | grep "你想要的内容" # 用法2
2. 准备一个文件
第一种用法
[root@vvkt7whznuckhiz2-0723575 ~]# vim admir.text
[root@vvkt7whznuckhiz2-0723575 ~]# cat admir.text
跟着我左手右手一个慢动作
# 左右右手慢动作成果
[root@vvkt7whznuckhiz2-0723575 ~]# grep "个" admir.text
跟着我左手右手一个慢动作
第二组—过滤结果显示行号,查看文件时显示行号
[root@vvkt7whznuckhiz2-0723575 ~]# vim admir.text
[root@vvkt7whznuckhiz2-0723575 ~]# grep -n "大" admir.text
15:一个大西瓜,送给你也不送给他
[root@vvkt7whznuckhiz2-0723575 ~]# cat -n admir.text
1
2
3
4
5
6
7
8
9 跟着我左手右手一个慢动作
10
11 # 左右右手慢动作成果
12
13
14
15 一个大西瓜,送给你也不送给他
第二组—忽略大小写,查看ALLOW_HOST是否被修改
# 查找包含空格的内容
[root@vvkt7whznuckhiz2-0723575 ~]# grep " " admir.text
ALLOW_HOST = []
# 以空开头,空结尾的空白行
[root@vvkt7whznuckhiz2-0723575 ~]# grep "^$" admir.text
# 反向查找 grep -v " " admin.text
[root@vvkt7whznuckhiz2-0723575 ~]# grep -v "^$" admir.text
"不要总是想着画龙"
ALLOW_HOST = []
# 过滤#开头的哪一行数据,相当于cat命令 + find 命令
[root@vvkt7whznuckhiz2-0723575 ~]# grep "^#" admir.text
#"不要总是想着画龙"
# 过滤非空行,非#开头
[root@vvkt7whznuckhiz2-0723575 ~]# grep -v "^$" admir.text | grep -v "^#"
ALLOW_HOST = []
第二种—关于内容
[root@vvkt7whznuckhiz2-0723575 ~]# cat /etc/passwd | grep "ssh"
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
head
tail
命令
1 head查看前十行信息
[root@vvkt7whznuckhiz2-0723575 ~]# head /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
2 查看前三行
[root@vvkt7whznuckhiz2-0723575 ~]# head -3 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
3 显示后十行[tail /etc/passwd]
[root@vvkt7whznuckhiz2-0723575 ~]# tail /etc/passwd
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
caesar:x:1000:1000::/home/caesar:/bin/bash
4 显示最后两行[tail -2 /etc/passwd]
[root@vvkt7whznuckhiz2-0723575 ~]# tail -2 /etc/passwd
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
caesar:x:1000:1000::/home/caesar:/bin/bash
5 实时监控,可以用于监控线上的日志文件,检测用户的请求信息
tail -f 文件名 #实时刷新文件内容
scp
命令
在两台Linux设备[Mac OS]之间,通过网络安全地传输文件,文件夹;
如果发送的是整个文件夹,就需要加上 -r 参数表示递归
使用通配符发送多个文件 scp -r ./*
案例1
准备两台Linux机器
# 需求1 将机器1的 /mp/admin.text 发送到机器2的 /tmp目录下
[root@vvkt7whznuckhiz2-0723575 tmp]# scp /tmp/admin.text root@192.168.178.235:/tmp/
# 需求2 把机器2的/tmp目录下的资料给拿到本地的/opt目录下
scp 你想要的内容 内容发送到哪里
[root@vvkt7whznuckhiz2-0723575 tmp]# scp root@192.168.178.235:/tmp/python1.txt /opt
lrzsz
工具
用于window和Linux之间互相传递文件
# 安装此工具
yum -y install lrzsz
# 安装好之后存在两个命令,分别是 rz和 sz
rz 表示接受 sz表示发送
du
命令
# 用法
du [参数] [文件或者目录]
-S 显示总计
-h 以 K, M, G为单位显示,可读性高
案例
# 统计 var/log/文件夹的大小 du -sh /var/log
[root@vvkt7whznuckhiz2-0723575 ~]# du -sh /var/log
1.6M /var/log
# du -sh 显示当前文件夹下所有文件的大小
[root@vvkt7whznuckhiz2-0723575 ~]# cd /tmp
[root@vvkt7whznuckhiz2-0723575 tmp]# du -sh
44M .
# du -h显示当前文件夹下单个文件或者文件夹的大小
[root@vvkt7whznuckhiz2-0723575 tmp]# du -h
4.0K ./python4
4.0K ./.X11-unix
4.0K ./python5
4.0K ./.XIM-unix
4.0K ./python1
4.0K ./.font-unix
4.0K ./.ICE-unix
4.0K ./.Test-unix
4.0K ./python3
36K ./hsperfdata_root
4.0K ./python2
44M .
top
命令
类似于Windows的任务栏,能够动态的显示进程信息 比如 CPU, 内存,网络,磁盘IO等
top - 16:14:18 up 1:07, 3 users, load average: 0.00, 0.01, 0.05
Tasks: 71 total, 1 running, 70 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 0.3 sy, 0.0 ni, 99.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 1881620 total, 1491064 free, 153456 used, 237100 buff/cache
KiB Swap: 4194300 total, 4194300 free, 0 used. 1577672 avail Mem
ps
命令
用于查看Linux进程信息的命令
语法格式
ps -e f # -ef,是一个组合参数 -e -f的缩写,-默认显示Linux所有进程信息以及pid,时间,进程名等信息
# 过滤进程
[root@vvkt7whznuckhiz2-0723575 tmp]# ps -ef | grep "python3"
root 1553 1534 0 16:11 pts/2 00:00:02 python3
root 1556 1462 0 16:20 pts/1 00:00:00 grep --color=auto python3
产生需求
1. Django运行后,如何验证是否运行,它会产生什么内容?
能够查看日志,检测到用的请求
产生一个python相关的进程信息
kill
命令
杀死进程的命令
kill 进程的ID号,也就是PID
如果遇见卡死的进程,杀不掉,就发送 -9 强制关闭
kill -9 pid
netstat
[端口]命令
查看Linux的网络端口情况
语法如下:
常用的命令组合 -t -n -u -l -p
# netstat -tunlp 显示机器所有的tcp udp的端口连接情况
[root@vvkt7whznuckhiz2-0723575 tmp]# netstat -tunlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1024/sshd
tcp6 0 0 :::22 :::* LISTEN 1024/sshd
udp 0 0 0.0.0.0:68 0.0.0.0:* 743/dhclient
# 有些公司为了保护服务器安全,更改了默认的远程连接端口
# 用如下命令去登录服务器
ssh -p 26675 xiaohu@123.168.13.157
案例1
# 过滤指定服务
[root@vvkt7whznuckhiz2-0723575 tmp]# netstat -tunlp | grep ssh
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1024/sshd
tcp6 0 0 :::22 :::* LISTEN 1024/sshd
案例2—查看端口占用
[root@vvkt7whznuckhiz2-0723575 ~]# netstat -tunlp | grep "22"
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1035/sshd
tcp6 0 0 :::22 :::* LISTEN 1035/sshd
PATH变量
定义一些常用软件可执行命令的目录,放入系统中可以快捷查询,无需每次使用时都输入绝对路径,相当于Windows下的环境变量
1. 为什么Linux能够快速输出python可执行文件的位置
[root@tylor ~]# which python3
/usr/bin/python3
2.
查看所有环境变量
# 冒号分隔多个环境变量
echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
修改Linux的全局配置文件
准备信息 etc/profile末尾添加
### set Chinese support
export LC_ALL=zh_CN.UTF-8
### 这是自定义变量,每次开机都能读取,第一条是系统中文的变量
### 我自定义的第一条环境变量
export name="一叶知秋"
1. 全局配置文件的名字是 /etc/profile
2. 编辑这个文件,写入你希望永久生效的变量和值。系统每次开启都会读取这个文件,让其生效
3. 操作步骤,添加先行添加支持中文的环境变量,然后添加自定义变量,最后退出登录再重新登录,相当于reload
[root@tylor ~]# vim /etc/profile
[root@tylor ~]# echo $name
一叶知秋
临时修改环境变量
# 第一步查看python的环境变量
[root@tylor ~]# which python
/usr/bin/python
# 第二步查看系统环境变量
[root@tylor ~]# echo $PATH
usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin
# 第三步临时修改环境变量
[root@tylor ~]# PATH="usr/local/sbin:/usr/local/bin"
# 第四步再次查看python环境变量
[root@tylor ~]# which python
/usr/bin/which: no python in (usr/local/sbin:/usr/local/bin)
# 第五步再次查看系统环境变量
[root@tylor ~]# echo $PATH
usr/local/sbin:/usr/local/bin
### 结论: 对系统环境变量的临时修改会影响软件执行文件的查找
安全检查思路
4813 2022-03-19 08:12:32 root pstree
4814 2022-03-19 08:15:46 root yum search psmisc
4815 2022-03-19 08:17:24 root yum -y install psmisc
4816 2022-03-19 08:17:41 root pstree
4817 2022-03-19 08:18:04 root docker ps -a
4818 2022-03-19 08:19:20 root ll /proc
4819 2022-03-19 08:19:34 root top
4820 2022-03-19 08:20:15 root ll /proc/1434
4821 2022-03-19 08:21:04 root /ect/crontab
4822 2022-03-19 08:21:17 root /etc/crontab
4823 2022-03-19 08:21:30 root crontab -l
4824 2022-03-19 08:22:03 root ls /etc/rc*/
4825 2022-03-19 08:22:42 root ls /etc/rc.d/init.d
4826 2022-03-19 08:23:28 root cat README
4827 2022-03-19 08:23:46 root cd /etc/rc.d/init.d
4828 2022-03-19 08:23:48 root ls
4829 2022-03-19 08:23:55 root cat README
4830 2022-03-19 08:24:46 root cd ..
4831 2022-03-19 08:24:47 root ls
4832 2022-03-19 08:26:05 root chkconfig --list | grep on
4833 2022-03-19 08:26:42 root cat /etc/passwd
4834 2022-03-19 08:28:36 root cat /etc/shadow
4835 2022-03-19 08:32:51 root cat /etc/shadow grep root
4836 2022-03-19 08:33:06 root cat /etc/shadow | grep root
4837 2022-03-19 08:34:49 root lastlog
Linux单引号和双引号的区别
# 单引号的内容仅仅是字符串,不识别任何其他特殊符号
# 双引号能够识别特殊符号
# 二者的比较
[root@tylor ~]# echo $name
一叶知秋
[root@tylor ~]# echo '$name'
$name
[root@tylor ~]# echo "$name"
一叶知秋
Vim编辑器的使用
最基本的编辑器
Windows
- 记事本
- sublime
- notepad++
linux
- vi 等同于记事本,很难用,没有语法颜色提示等
- vim 等同于notepad++,有颜色高亮,支持安装第三方插件,语法不全等高级编辑器
Vim使用流程
1. 安装vim
yum -y install vim
2. vim打开一个不存在的文件等同于新建
3. 按下字母 i 进入编辑模式,按下esc退出编辑模式进入命令模式
4. 按下 shif + : 进入底线命令模式
5. 输入:wq!, write写入内容,quit退出vim ! 强制退出
6. 运行该文件
[caesar@tylor ~]$ python first.py
Hello World!
测试文件内容[以防万一,指定编码集]
#!coding:utf-8
print("Hello World!")
参数说明
# 从命令模式进入输入模式,可输入 a, i, o
a 指的是在光标的后面开始编辑
i 表示在光标处开始编辑
o 表示在光标的下一行开始编辑
# 在命令模式下,常用的命令
$ 快速移动到行尾 % 找到括号的另外一半
0 快速移动光标到行首 yy 复制光标当前行
x 删除光标所在的字符 3yy 复制光标当前及以后
dd 删除整行数据 4dd 删除光标向下的第四行
g 移动到文件的第一行 u 撤销上一次的动作
G 移动到文件的最后一行 dG 删除光标当前行到行尾的所有内容
/string 从开头寻找目标字符[高亮显示]
?string 从文件的第几行,向上搜索字符串
底线命令模式
:数字 快速定位到某一行
:set nu 显示vim的行号
永久显示行号
vim ~/.vimrc
写入 set number