您的位置:首页 > 运维架构 > Linux

LINUX day3

2020-02-17 11:59 225 查看
4000

1、调用vi
vi filename 打开或创建一个文件
vi 打开一个新文件, 最后才取名

2、
1,命令模式下–>切换到编辑模式
i 在光标当前位置插入
I 行首
a 在光标所在位置后插入
A 行尾
o 在光标所在行下插入一空行
O 在光标所在行上插入一空行
退出命令状态
0 光标回到这一行的开始
$ 光标移动到这一行的结束
直接命令 (命令模式)
:命令 (底行模式)
删除
x 删除一个字符
dw 删除当前词(没办法识别所有的英文单词,是连续多个字母,当碰到标点符号时,为一个词)
3dw 删除三个词
dd 删除当前行(从光标所在行开始)
5dd 删除五行(从光标所在行开始)
:5,10d (底行模式:5到10行删除)
change text:
r 替换一个字符
cw 替换一个单词
cc 替换一行
C 替换从光标至行尾
copy text :
yw 拷贝词(光标放在一个单词的开始位置)(p:在光标的下个位置黏贴;P:在光标的上个位置)
yy 拷贝行(或Y)
p 当前行下粘贴
:1,2 co 3 拷贝行1,行2在行3之后
:4,5 m 6 移动行4,行5在行6之后
save quit text:
:w 存盘
:w newfile 存成新文件
:wq 存盘退出Vi(或ZZ,或:x先检测有没有改变,如果没有改变,不存盘)
:q! 强行退出不存盘
~ 改变大小写
J 把当前行和下一行连起来
u 废除刚才的编辑操作(undo)(存盘退出,不能废除)
:set nu 显示行代码 (:set nonu)
:21 光标停在指定行
21G 光标停在指定行 (G 到文件尾,1G 到文件头)
GG 光标停留在末尾行
:/串 从当前行往下查找
:?串 从当前行往上查找
n 查找继续
LINUX :r file2 在光标所在位置插入另一个文件
:1,s/旧串/新串/g替换全文(或:s/旧串/新串/g 替换全文(或 :s/旧串/新串/g替换全文(或:s/旧串/新串/g)
$:表示最后一行

3、id:查用户的信息
id root
id -a root

需要在管理员 权限下操作
添加用户
adduser 用户名
移动到组
usermod -g sudo tom
把tom移动到sudo组
追加一个组
gpasswd -a tom sudo
删除一个组
gpasswd -d tom sudo
删除用户
sudo userdel -r tom
-r 把家目录都删除

4、 显示当前已登录本系统的所有用户信息
users 显示当前登入的账户
who 用来查询目前有那些人在线上。
w 用来查询目前有那些人在线上,同时显示出那些人目前的工作。
who am i . 显示登入系统时候的账户
whoami . 显示当前使用的用户

7、find:根据指定的条件从文件系统中搜寻指定的文件或目录,然后做处理
7.1:通过文件名查找
find 路径 -name “fileName”

7.2:通过时间查找
find 路径 -mtime 10
查找10天前修改的文件
find 路径 -mtime +10 十天以外
find 路径 -mtime -10 十天以内

:
find / -mtime -10 -mtime +5
-mtime:修改时间 打开保存。
-atime:访问时间 more ls -lu
-ctime:改变状态 修改权限的时候 ls -lc

用过用户查找: -user
find 路径 -user test
同文件大小查找:-size
find ./ -size 30c
· 通过权限查找
find ./ -perm 777
通过文件类型查找
find ./ -tpye f -atime +365 -exec rm {} ;
注:
-type
注:普通文件的- 使用f代替
-exet 执行
{} 用来接收前面参数

find ./ -name “*.html” -print | xargs perl -p -i.bak -e “s/oldString/newString/g;”
将./目录下所有后缀为html的文件中“/oldString” /newString”;其中xargs为一个命令,
然后作用perl作为参数. 这个功能非常强大.
在windows下面大家看看可以找得出这么强大的命令吗?
xargs:把前面的内容整理为参数,将前面结果作为后面命令(perl)的参数
perl:对文件内容进行处理
-p :把参数列表中的每一个文件都遍历处理,一个一个处理
-i.bak:对文件进行处理之前,先备份
index.bak 之后再处理
-e :excut 执行后面的命令
eg:将一个文件中的字符进行替换,替换之前进行备份

8、grep:从管道或文件中搜寻所满足条件的行
过滤
eg: grep root /etc/passwd
从passwd 文件中 过滤 root关键字,把所在行显示
eg: ls -la | grep -i “被查找的字符串”

-i 忽略大小写
-v 查找不匹配的行

9、wc:从文件或管道中统计
行数、
字符个数、
单词个数
wc [options] filename(s)
-l 行数
-w 字数
-c 字符数
more a.txt | wc -l

10、ps:用来查看系统中正在运行的进程的信息
什么是进程:一个程序的运行过程
ps -e :查看正在运行的进程(运行过程中、就绪状态下的)
ps -f:详细信息
eg:
wood 2709 2571 0 05:07
当前进行开启的用户 PID进程自己的id PPID进程的父进程 C 启动时间
pts/2 00:00:00 cat
tt 运行多久 哪个程序文件启动的进程

tt:表示该进程是从哪个控制台启动的。
可以是 pts/num或者?pts/0 0号控制台启动的
?:不是用户启动的,是系统运行时自动启动的进程

eg : ps -ef
看到进程的详细内容
主要就是查看pid

eg : ps -auwx
看到更加详细的内容
kill pid
杀死进程
kill -9 pid
强杀进程
sleep 让进程进入休眠状态
pkill 进程名 :pkill sleep
通过进程名杀死进程

11、ping host 看看网络通不通。

ifconfig 查看ip
在文件中配置ip
/etc/network/interfaces
https://www.geek-share.com/detail/2704793570.html

12、telnet

  • telnet服务器模拟一个终端允许你连接并工作于一个远端系统上

    使用TCP/IP连接于另一个系统
    13、ftp
    使用 ftp 复制或传送文件:
    ftp有服务器端和客户端

ftp(File Transfer Protocol)允许用户对远地主机复制文件,用户毋须考虑操作系统类型,即能向或从任何具有 TCP/IP 的系统复制文件。 ftp命令允许复制目录中的一个文件或所有文件,但不能复制多层 次目录。使用ftp时, 必需在远地主机上设有帐户。 当 ftp 注册到远地系统时,并未得到 shell ,而是通过 ftp 命令解释程序同远地主机进行通讯。
cd lcd
服务器cd 本地cd
bin,asc 需要设置上传方式和下载方式
bin : 字节上传
asc :字符上传
put 上传文件
get 下载文件
注:只能下载和上传 文件,
不能下文件夹,也不能穿文件夹
mput
mget

prompt 不出现确认的提示信息

bye 退出ftp 远程服务器
14、环境变量 path
whereis ls 看看ls在哪
echo $PATH 查看当前的PATH

设置/修改临时环境变量:
变量名=value
全局修改: 下面文件中存放 全局环境变量内容
/etc/profile 所有用户有效
~/.bashrc 当前用户有效

重点:
在控制台中直接输入命令能执行
原因是因为在PATH中配置了对应可执行文件的所在路径

15、path:命令的默认搜索路径
想知道所执行的命令到底在那个目录下?
which vi 搜索vi所在的路径(在path下搜索,搜索到就停止)
whereis vi 搜索vi所在的路径(在path下搜索,搜索到继续搜索,直到找到所有的vi)
16、History
$ set HISTORY=30 设置最多允许保存前三十个已执行命令的记录
$ history 显示历史记录信息
$ history 5 显示第五条历史记录信息
$ !n 重复执行第n条历史命令
$ !! 重复执行上一条历史命令
17、别名:针对于系统中已经存在的命令,给它取个别名
bash:alias h(别名)=history(原始命令)
$ alias home=’cd;ls’
alias 显示所有设置的别名
unalias copy 取消所设置的别名
(有无取消所有设置的别名)
18、初始化文件:包含命令和变量的设置,当shell启动时就执行
对初始化文件再操作系统中分为两级:
1、系统级(一旦修改,对所有的用户都起作用)
/etc/profile
2、用户级(只针对于特定的用户有效)
/home/user/(用户的家目录下)
~/.bashrc
1. 新建date > a.txt 文件,在a.txt第一行的上面在加一行,输入hello world

  1. 清空c.txt文件的内容
    cat /dev/null > c.txt
    ps:在类Unix系统中,/dev/null,或称空设备,是一个特殊的设备文件,它丢弃一切写入其中的数据
    /dev/zero

  2. 查看/etc/passwd的头10行,查看/etc/passwd的尾5行
    head -10 /etc/passwd
    tail -5 /etc/passwd

  3. 查看root用户的UID、GID
    id –a root

  4. 查看服务器上所有在线用户正在执行的操作
    w命令
    ps:
    USER:显示登陆用户帐号名。用户重复登陆,该帐号也会重复出现。
    TTY:用户登陆所用的终端。
    FROM:显示用户在何处登陆系统。
    LOGIN@:是LOGIN AT的意思,表示登陆进入系统的时间。
    IDLE:用户空闲时间,从用户上一次任务结束后,开会记时。
    JCPU:一终端代号来区分,表示在摸段时间内,所有与该终端相关的进程任务所耗费的CPU时间。
    PCPU:指WHAT域的任务执行后耗费的CPU时间。
    WHAT:表示当前执行的任务。

  5. 找出家目录下所有以.txt结尾的文件路径
    find ~ -name “*.txt”

  6. 找出家目录下可能存在漏洞(权限为777)的文件路径,并输出到holes文件中
    find ~ -perm 777 > holes

  7. 在用户家目录下创建子目录test,并在其中创建一批文件,批量删除该目录下1天以内访问过的文件
    mkdir ~/test
    cd test
    touch a.txt b.txt c.txt
    find . -type f –atime -1 –exec rm {} ;

二)扩展实验:

  1. 搜索指令练习
    1)查询系统中文件名称含有bashrc的所有文件
    find / -name “bashrc”
    2)查询/home目录下所有文件名称为.bashrc的文件
    find /home -name .bashrc
    3)查询系统根目录下三天内曾访问的所有文件
    find / -atime -3
    4)查询/home目录下所有大小大于100的文件
    find /home -type f -size +100c
    5)查询/home目录下为用户root(id号码为0)所有的文件
    find /home -user 0

  2. 用vi编辑以下文件(注意代码格式(空格和换行要有),俩个C语言的一个java的)
    第一个文件:hello.c

#include <stdio.h>
int main(){
println(“Hello World!\n”);
return 0;
}

第二个文件:bubble.c
#include <stdio.h>
void bubbleSort(int list[],int last);
int main(void){
int list[6] = {8,27,12,89,33,21};
int index = sizeof(list)/4 - 1;
bubbleSort(list,index);
printf(“after bubbleSort: “);
for(int i = 0; i < index + 1; i++)
printf(” %d “,list[i]);
printf(”\n”);
}
void bubbleSort(int list[],int last){
int temp;
for(int current = 0; current < last; current++){
for(int walker = last; walker > current; walker–){
if(list[walker] < list[walker - 1]){
temp = list[walker];
list[walker] = list[walker - 1];
list[walker - 1]= temp;
}
}
}
}

第三个文件:king.java
public class King{
public static void main(String args[]){
for(int i=0;i<10;i++){
for(int j=10;j>i;j–){
System.out.print(" “);
}
for(int j=0;j<i*2+1;j++){
System.out.print(”$");
}
System.out.println();
}
}
}

三)作业:

  1. vi有哪三种模式及如何进行相互切换
    Command mode Entry mode Last-line mode
  2. vi上下左右移动
    H J K L
  3. vi中如何删除一个字符、删除一行、替换一个字符
    x dd r
  4. vi中如何拷贝一个单词、拷贝一行、粘贴
    yw yy p
  5. vi中如何存盘、另存为、存盘并退出vi
    :w :w newfile :wq
  6. vi如何快速的定位到第20行,并在行尾加上一个分号
    20G;定位到20行行首
    (shift+$) A+;
  7. vi如何将文件档中所有的单词hello,都换成hi

%s /hello/hi/g 或者1,$s /hello/hi/g

  1. vi练习(光标移动):
    将文件/etc/passwd复制到用户home目录下,并同时更名为passwdbak,使用vi打开用户home下的passwdbak文件,使用vi指令完成下列操作:
    sudo cp /etc/passwd /home/passwdbak
  1. 将光标移动到当前行的行尾
    end 或Shift+($)4 或者A
  2. 将光标移动到当前行的行首
    home或 Shift+6(^)
  3. 将光标移动到文末
    G
  4. 将光标移动到文章的第一行
    :1或者1G
  1. vi练习(编辑文字):
  1. 将光标当前所在行复制后粘贴到第一行后面 yy :1 p 或者 yy 1G p
  2. 将新粘贴的这行删除
    dd
  3. 复制当前行向下的5行,然后粘贴到第10行上面
    5yy 9G p
  4. 重复执行一次粘贴操作
    p
  5. 删除刚才粘贴的5行内容
    5dd
  6. 撤消最后的删除操作
    u
  7. 将最近的修改操作全部撤销
    q!
  • 点赞
  • 收藏
  • 分享
  • 文章举报
wDnmDxf 发布了4 篇原创文章 · 获赞 0 · 访问量 100 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: