liux命令行学习

1.创建普通用户

创建普通用户
useradd username 添加用户
passwd username 为添加的用户添加密码
userdel 删除用户
passwd +用户名 (修改 用户密码)

finger + 用户名 显示用户状态 需要安装(yum install finger)

id 显示当前用户的 状态

2.查看 当前系统支持的 shell

cat /etc/shells
echo $0 打印的是当前运行的shell名
bash --version 查看bash的版本信息

3.修改ssh 配置文件

vi /etc/ssh/sshd_config

ls命令

ls 显示当前目录下非隐藏文件与目录
ls -lh 可以在列出文件的同时查看文件的大小
ls -l 相当于(ll)
-rw 是普通文件
d d是文件夹

cd命令

cd 切换目录
cd - 回到上一次操作的目录
. 代表本目录
.. 代表上一个目录
-代表前一个工作目录
~
cd ~ 到普通用户的家目录
cd /root 到家目录

pwd 可以显示当前路径

mkdir创建文件

创建一个目录
midir test
连续创建多个目录
mkdir -p /123/456/789
rmdir 删除一个目录(只能删除空目录)

touch 创建文件

touch 1.txt

vim 创建文件

vim 2.txt

echo 创建文件

echo hello>3.txt ( > 输出定向)(会自动创建3.txt)

rm -rf(递归 强制删除) rm -rf / 强制删除根目录

cp拷贝文件scp远程拷贝文件

cp 1.txt /var/www/ 将1.txt 拷贝到 /var/www/目录下
cp /var/www/1.txt ./2.txt
cp -r 123/ /tmp/aaa 拷贝123 目录下的所有东西
cp .log ( 匹配所有)可以拷贝所有以 .log 结尾的文件

scp
scp 1.txt root@192.168.2.64:/tmp/ 远程拷贝文件
scp -r 远程拷贝文件夹

UID GID

/etc/passwd
GID 为GroupId,即组ID,用来标识用户组的唯一标识符
UID 为UserId,即用户ID,用来标识每个用户的唯一标示符
UID = 0 GID = 0 (ROOT 用户) 可以用root 用户权限 修改普通用户的UID = 0
(1-499) 系统用户预留的 GID
(500 - 65535) 普通用户可以分配到的GID

图片.png

每个字段具体含义讲解

用户名(如第一行中的root就是用户名),代表用户账号的字符串。存放的就是该账号的口令,在这里只用一个 ‘x’ 代替,早期的unix系统口令确实是存放在这里,但基于安全因素,后来就将其存放到 ‘/etc/shadow’ 中了。代表用户标识号,也叫做uid。0就是root,通常uid的取值范围是0~65535(但实际上已经可以支持到4294967294),0是超级用户(root)的标识号,1~499由系统保留,普通用户的标识号大于等于500。表示组标识号,也叫做gid。这个字段对应着/etc/group 中的一条记录,其实/etc/group和/etc/passwd基本上类似注释说明,该字段没有实际意义,通常记录该用户的一些属性,例如姓名、电话、地址等等。用户的家目录,当用户登录时就处在这个目录下。root的家目录是/root,普通用户的家目录则为/home/username,这个字段是可以自定义的。shell,用户登录后要启动一个进程,作用是用来将用户下达的指令传给内核。而Redhat/CentOS的shell是bash,默认的路径为/bin/bash,如果您想建立一个账号不让他登录,那么就可以把该字段改成/sbin/nologin。

/etc/shadow

图片.png

用户名,跟/etc/passwd对应。加密密码,加密算法升级为SHA512散列加密算法,如果密码位为“!!”或“*”代表没有密码,不能登录,其shell为/sbin/nologin。密码最后一次修改的时间,以1970年1月1日作为标准时间,每过一天时间戳加1两次密码修改的间隔时间,要过多少天才可以更改密码,默认是0,即不限制密码的有效期,密码多少天后到期,默认为99999。若设置成20,即20天后到期,必须修改密码,不然登录不了系统。密码到期前的警告期限,若设置为6,即到期前6天将通知用户。账号失效宽限期(和第5字段相对比)。若设置为2,到期过后2天后再不修改密码,用户锁定。账号的生命周期(要用时间戳表示),到了指定的期限,账号将失效。保留字段,没有特别意义

su

(root) 切换到root 用户( 不能切换到root 的环境变量下 还是在普通用户的环境变量下)
su - (root) 切换到root 的环境变量下

sudo (临时赋予普通用户root 权限)

用户状态

W 查看当前用户数量
lastlog 查看每个账号的最近登陆时间
write 可以在不同终端和用户之间传递信息 (终端之间可以发信息)
write +用户 +终端

mesg命令

用于设置当前终端的写权限,即是否让其他用户向本终端发信息。将mesg设置y时,其他 用户可利用write命令将信息直接显示在您的屏幕上。
mesg y #允许系统用户将信息直接显示在你的屏幕上
mesg n #不允许系统用户将信息直接显示在你的屏幕上

vim编辑器

:q
:wq
:q! 不保存并退出
:w 保存
:w other.txt (另存为)
:w! 强行保存

对文本内容进行操作

1 行间跳转

nG 跳转至第n行(10G跳转到第十行)
gg 跳到第一行
G 跳转到最后一行

2 行内跳转

0:绝对行首
^: 行首的第一个非空白字符
$: 绝对行尾

3.删除操作

x :删除光标所在处的单个单词

删除多个单词

nx :删除
10x : 删除十个单词

dd :会把光标所在的哪一行删除

10dd : 删除十行

多行删除操作, 多行删除通过行号来删除。
1.vim 打开文件,使用 “ : set nu ” 来显示行号

  1. 输入想要删除的行号进行删除 “ : 10004, 10006d ” 回车删除

:> 清空

:>passwd.bak (清空passwd.bak)
echo "">passwd.bak (清空passwd.bak)

查找 /单词

按 n 查找下一个
按N 查找上一个

多行注释

  1. 首先使用 Ctrl+V进入块编辑模式
  2. 在行首通过 ↑↓ 按键来选择需要注释的行
  3. 选择完成输入大写的 i ( I ) 进入编辑模式
  4. 输入注释符 #
  5. 按Esc退出块编辑,完成

取消多行注释的方法为:

  1. 在行首,输入ctrl+V进入块编辑模式
  2. 通过 ↑↓ 键控制取消注释的行
  3. 通过d 或者 x来删除一个字符 #
  4. 完成。

复制 粘贴

p :粘贴
y: 复制
yy : 复制一行
yy 10p 复制一次 粘贴十次

u: 撤销

nu (10u 撤销十次)

显示行号或取消显示行号

(:set nu)
(:set nonu)

显示忽略或区分字符大小写

(:set ic)
(:set noic)

基本替换)

(:s/str1/str2/ 替换当前行第一个str1为str2
:s/str1/str2/g 替换当前行所有str1为str2

:n,\$s/str1/str2/ 替换第 n 行开始到最后一行中每一行的 第一个  str1为str2
:n,\$s/str1/str2/g 替换第 n 行开始到最后一行中每一行    所有   str1为str2
 (n 为数字,若 n 为 .,表示从当前行开始到最后一行)

:%s/str1/str2/(等同于 :g/str1/s//str2/) 替换每一行的 第一个str1为str2
:%s/str1/str2/g(等同于 :g/str1/s//str2/g) 替换每一行中 所有str1为str2

2. 可以使用#作为分隔符,此时中间出现的 / 不会作为分隔符

:s#str1/#str2/# 替换当前行第一个str1/ 为str2/
:%s+/str11/str12/+/str21/str22+ (使用+ 来 替换 / ): /str11/str12/替换成/str21 /str22/

要将 50 到 100 行之间的 man 改为 MAN,并且一个一个挑选是否需要修改,如何 下达指令?
 :50,100s/man/MAN/gc) 
 (50,100s/man/MAN/g)不一个一个挑选

cat 查看文件内容

cat + filename (一次性显示整个文件)
cat > filename (从键盘创建一个文件,只能创建新文件,不能编辑已有文件)
cat file1 file2 > file (将几个文件合并为一个文件)

cat -n + filename  (由 1 开始对所有输出的行数编号)
cat -b + filename  (和 -n 相似,只不过对于空白行不编号)
cat -T    show-tabs将 TAB 字符显示为 ^I
-E 或 --show-ends : 在每行结束处显示 $
cat -A  show-all显示换行  (linux 和Windows 换行符不一样)

重定向 >

echo "hello" >1.txt

>  覆盖        
cat 1.txt > paswd
>> 追加到文件末尾 
 cat 1.txt >> passwd
 :>1.txt  清空文件 

more 根据窗口的大小进行分页显示,然后还能提示文件的百分比;

more /etc/profile
more -dc 显示提示
more +4 从第四行开始显示
more -4 每屏显示四行

head 显示一个文件的内容的前多少行;

head -n 5 文件前五行
tail 显示一个文件的内容的最后多少行
tail -n 文件后五行
tail -f 查看日志时使用(参数 " -f ",使用此参数时,tail 不会回传结束信号,除非我们去自行去中断它)

此时要想暂停刷新,使用ctrl+s暂停终端。
若想继续终端,使用ctrl+q
若想退出tail命令,直接使用ctrl+c

tail -f /var/log/dracut.log

grep 匹配文件中的词

cat 1.txt | grep test (匹配文本中所用的 test )
cat 1.txt | grep -w "test" 匹配 单独的单词
grep -c "all" 1.txt 统计出现"all" 的行数
grep "all" 1.txt 2.txt 4.txt 匹配多个文件中出现的 "all"
grep -l "all" 1.txt 2.txt 4.txt (-l 不区分大 小写只适用于单字符)

cat 1.txt | grep -i "ALL" (-i) 忽略大小写

 PS是LINUX下最常用的也是非常强大的进程查看命令
 ps命令将某个进程显示出来
 grep命令是查找
中间的|是管道命令 是指ps命令与grep同时执行
检查java 进程是否存在:ps -ef |grep java

ps -ef | grep ssh
ps -ef | grep ssh | grep -v grep (-v 取反参数)

seq 用于产生从某个数到另外一个数之间的所有整数

seq 10 = seq 1 10
结果是1 2 3 4 5 6 7 8 9 10

seq 10 | grep "test" -A 5
seq 10 | grep "test" -C 5
seq 10 | grep "test" -B 5
{-A -B -C 后面都跟阿拉伯数字
-A是显示匹配行和它后面的n行。
-B是显示匹配行和它前面的n行。
-C是匹配行和它前后各n行。 }

last命令用了显示用户登录情况,以下是直接显示固定行数的记录:

-a:把从何处登入系统的主机名称或ip地址,显示在最后一行;
-d:将IP地址转换成主机名称;
-f <记录文件>:指定记录文件。
-n <显示列数>或-<显示列数>:设置列出名单的显示列数;
-R:不显示登入系统的主机名称或IP地址;
-x:显示系统关机,重新开机,以及执行等级的改变等信息。</pre>

图片.png

awk 用来匹配列

last -n 5 | awk '{print $1}' 匹配第一列
last -n 5 | awk '{print $1,$3}' 匹配第一三列
cat ss.txt | grep "3306" -B 13 | grep "Nmap" | awk '{print $5}'

awk -F ':' 空格'‘{print \$1}       -F 用来指定分隔符
如果只是显示/etc/passwd 的账户和账户对应的shell 而账户与shell之间以tab键分割

cat /etc/passwd | awk -F ':'   '{print \$1"\t"\$7}'

sed 查找/替换 增加/删除

's/^.*for //g'  把 for 前面的全都替换为 空

cat result.txt | grep "report" | sed 's/^.*for //g'

显示行号 并 删除(不显示) 2到5行(原文件并没有删除 2 到5行)
nl /etc/passwd | sed '2,5d'
nl /etc/passwd | sed '3,$d' 从第三行删除到最后一行
nl /etc/passwd | sed ‘2d’ 只删除第二行

nl /etc/passwd | sed '2a drink tea' a:插入 在第二行后面插入一行
nl /etc/passwd | sed '2i drink tea' 在第二行前面插入一行

nl /etc/passwd | sed ‘2a drink tea\ 一次性多行插入
>233333
>dfsdsggs' 最后加单引号闭合

nl  显示行号
-b :指定行号指定的方式,主要有两种:
-b a :表示不论是否为空行,也同样列出行号(类似 cat -n);
-b t :如果有空行,空的那一行不要列出行号(默认值)

以行为单位的替换与显示

第二行到第五行替换成 No 2-5 number
nl /etc/passwd | sed '2,5c No 2-5 number'

nl /etc/passwd | sed -n '5,7p' 只显示五行到七行

搜索 替换

搜索 /etc/paswd 有 /root 关键字 的行
cat -n test.txt 查看test.txt 全部的行
cat -n test.txt | sed -n '/root/p'

执行 ifconfig 命令

只想要 ifconfig add:后面的ip地址
ifconfig | grep "Bcast" | awk '{print $2}' | awk -F ":" '{print $2}'
ifconfig | grep "inet addr" | sed 's/^.addr://g'
s :代表替换 ^ :匹配行首 $ 匹配行尾
's/^.
addr:/(可以为空 也可以写替换的内容)/g'
's/^.addr://g' 把 addr: 前面的任何字符替换为 空
s/^.
addr:/fff/g' 把 addr: 前面的任何字符替换为 ff

提取ip

ifconfig | grep "inet addr" | sed 's/^.addr://g' | sed 's/Bcast$:.//g'

图片.png

任务和进程 管理

ps 查看进程
ps -A (ps -A 只列出所有进程,并不显示环境变量)
ps -ef (ps -ef 列出所有进程,并显示环境变量,而且显示全格式)
ps -ef | grep ssh 查看ssh进程是否开启
ps -u root 查看指定用户启动的进程

UID 用户id PID进程id PPID子进程id

ps -l 目前相关PID 信息显示出来
ps aux 列出目前所有的正在内存当中的程序
ps -aux | more 可以用 | 管道 和more 连接起来分页查看
ps -ef > ps001.txt (可以把显示的内容导入到ps001.txt文件)

top //运维监控利器 (相当于windows 中的任务管理器)
0 zombie 如果不是0 代表有僵尸进程 (长期挂在那不运行的进程
0.0%wa 等待输入输出的cpu 时间百分比
如果出现wa%占用高 I/O 读取出现太慢


图片.png

kill
用于终止后台进程
kill -l
列出所有信号名称:


图片.png

kill [-s 信号] -s <信息名称或编号>:指定要送出的信息;
kill -9 1234 (9 强制终止)

查找结束进程

先用ps查找进程,然后用kill杀掉


图片.png

ps -ef | grep ssh (kail 系统是ssh 服务 centos 系统是 sshd服务)
ps -ef | grep sshd | grep -v "grep"
显示进程信号
ps -ef | grep sshd | grep -v "grep" | awk '{print $2}'


图片.png

禁止某些用户用xshell连接
kill -9 pid
监控 watch -n 5 五秒查看一次
watch -n 5 ps -ef | grep sshd

磁盘管理和文件

df 用于显示磁盘分区上的可使用的磁盘空间。默认显示单位为KB。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。
df -h (-human-readable:以可读性较高的方式来显示信息)

du命令是对文件和目录磁盘使用的空间的查看
(说明:只显示当前目录下面的子目录的目录大小和当前目录的总的大小)
ls -l 查看文件大小不太准
du -h /etc
du -h --max-depth=0
--max-depth=n表示只深入到第n层目录,此处设置为0,即表示不深入到子目录
du -h --max-depth = 2 /tmp (显示二级目录)最大目录深度

fdisk

fdisk -l 查看硬盘分区信息


图片.png

fdisk /dev/sdb
m
n 创建分区
p 创建主分区
w 保存
mkfs.ext4 /dev/sdb1 对分区进行格式化
mount /dev/shb1 image/
df -h
mount 磁盘挂载 卸载使用 umount 命令

kail 系统

光驱挂载

cd /media/
mkdir cdrom
mount /dev/cdrom ./cdrom/
cd cdrom/
卸载umount /media/cdrom/

移动硬盘挂载u盘
cd /media/
mkdir u
mount /dev/sdb1 ./u
卸载 umount /media/u/

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,324评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,303评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,192评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,555评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,569评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,566评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,927评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,583评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,827评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,590评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,669评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,365评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,941评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,928评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,159评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,880评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,399评论 2 342

推荐阅读更多精彩内容

  • 基础命令 主要的命令和快捷键 Linux系统命令由三部分组成:cmd + [options]+[operation...
    485b1aca799e阅读 1,085评论 0 0
  • Linux习惯问题: 在vim编辑时,按了ctrl + s后,再按ctrl + q就可以继续执行了。ctrl + ...
    光着脚的鞋阅读 4,480评论 0 16
  • 本文笔记源自这里——[实验楼]欢迎大家在下面交流其中有问题的地方喜欢请点收藏,每日更新(全部已亲自实践). 一. ...
    东皇Amrzs阅读 3,960评论 7 54
  • 基本命令-2 压缩和归档 打包: 即归档,类似于旅游之前收拾行李 压缩: 为了减少占用的磁盘空间,可以做备...
    崔千易阅读 905评论 0 0
  • 系统管理与维护命令 date date(选项)(参数) | 选项 | 说明 | | :-------- | ...
    蓓蓓的万能男友阅读 3,859评论 0 5