Linux基础命令大全

linux基础
1.简介
    1.一切皆文件
    2.每个文件都有确定的用途
2.常用命令
    2.1目录类
        ls:  查看
            -a 显示所有文件及目录 --能看到包括隐藏文件(以.开头的文件)的所有文件
            .aeddddf--隐藏文件
        
            -l 详细信息(常用形式ll)  
            
            -r 将文件以相反次序显示
            -t 将文件依建立时间先后次序列出
            -A 同-a,但不列出"."当前目录,".."父目录
            
            -F 在列出文件后增加符号,例如目录后加"/",可执行文件加"*"
            
            -R 若目录下有文件,则以下文件都依次列出(递归式列出全部文件)
            
            
            
        man 查看命令详细信息
        
        pwd 查看当前目录   --返回绝对路径下的位置
        
        cd 进入目录
        
            ~ 家目录
            . 当前目录
            .. 上一层目录(父目录)
            ../.. 上上层目录 
            
            绝对路径:从根目录开始 的路径
            相对路径:从所在目录开始 的路径 (./)
            
----清屏命令:ctrl + l 或者clear    
        
        
        
        
        mkdir  创建目录
        
            -p 可以递归式创建文件夹 ,确保目录名称存在,不存在就创建一个
            
            
        du   查看文件或者文件夹大小
        
            -h 以K,M,G为单位,提高信息的可读性
            -k 以1024bytes为单位
            -m 以1M为单位
            
        du -h task.sh
        
        
        
    2.2文件类
        vim/vi filename
            从查看模式进入插入模式:i/a/o
            
            查看模式:
                :w 保存文件
                :q 退出
                :q! 强制退出
                :wq 保存并退出
                ZZ   保存并退出
                
                光标移动:
                    gg 光标移动到文件头部
                    G 光标移动到文件尾部
                    H 光标移动到屏幕最顶端一行
                    M 光标移动到屏幕中间一行
                    L 光标移动到屏幕最底端一行
                    
                    
                yy    p    复制yy与粘贴p
                    5yy     当前行开始向下复制5行,p粘贴至下一行
                    
                    
                dd 删除当前行,5dd删除当前行开始向下的5行内容
                u 取消上一步操作
                
                
                /关键字 查找内容
                    n 查看下一个
                    
                :noh    取消查找           -- :set nohlsearch
                        
                :set nu 显示行号
                :set nonu 取消显示行号
                    
                
                
                
        cat filename 查看文件内容
        
        less filename 查看文件内容  --可以分页查看
            ↑ 上一行
            ↓ 下一行
            G 最后一页
            g 第一页
            空格 下一页     b 上一页
            /关键词 搜索关键词
            q 退出
            
            
        more 文件名       查看文件内容  分页查看 
        
         
        more -5 文件名      限定每页展示5行 
        
        回车后  按enter键 按行展示
                按空格键  按页展示
            
            
            
            
            
    
        cp 源文件 目标目录    复制命令
        
            -r 若给出的源文件是一个目录,此时将复制该目录下所有的子目录和文件  --可以复制文件夹
            
            
            -i 在覆盖 目标文件 之前,提示确认是否覆盖(-f 不提示)
            
            

        mv:
            1.改名:mv source_filename dest_filename
            
                mv /home/hadoop/123/test.txt   /home/hadoop/123/test2.txt
                
                mv /home/hadoop/123  /home/hadoop/456
                
                
            2.剪切:mv source_filename 目标目录
            
                mv /home/hadoop/123/test.txt  /home/hadoop/234/
                
                
            3.剪切目录:mv source_directory 目标目录
            
                mv /home/hadoop/234/   /home/hadoop/123/
                
                
        
        rm -rf  ---常用

        rm   删除       
            -i 删除前逐一询问确认
            -f 直接删除,无需逐一确认      f:force
            
            -r 将目录及其以下文档逐一删除
        
        rmdir 目录  --专门用来删除空目录
        


        
查看文件的前几行:
head 文件名  默认是头部10行

head  -n  行数  文件名

head  -n 5  a.txt  
head -5 a.txt   --可以省略n


查看文件的末尾几行:
tail 文件名  默认是尾部10行

tail  -n  行数  文件名
tail  -n  5  a.txt  
tail  -5  a.txt   --可以省略n


tailf --可以监听文件尾部的变化
tail -f  aa.txt
tailf    aa.txt


查看文件一共有多少行:
word count
wc  -l  文件名字
wc  -l  a.txt

查看文件有多    少个单词:
wc  -w  文件名字

查看文件有多少个字节的内容: 一个字母:1字节 一个数字1字节  换行符1字节  结束符1字节   utf-8字符集: 1个中文字符3字节
wc  -c  文件名字


\n 换行符   


管道命令
|  把管道前面命令的输出当做管道后面命令的输入


对文件进行排序和统计的方法:sort 排序,以行为单位,从首字符,逐位比较ASCII值;

sort  文件名字  |  uniq  -c    统计每行出现的次数

sort  文件名字  |  uniq  -c|sort -n  按出现次数进行升序排序

sort  文件名字  |  uniq  -c|sort -n -r 按出现次数进行降序排序


结合使用
sort -n 升序排序(按照数字列进行升序排序)
sort -n -r   降序排序
sort -nr  降序排序(按照数字列进行降序排序)


--linux三剑客  sed awk grep


----对文件以行为单位进行  增删改查   的方法: sed


sed  命令操作  文件名字         --将操作的结果显示在命令行里面,但是不会
操作文件本身


sed  -i  命令操作  文件名字       --将操作的结果写入到文件里面,但是不会
显示在命令行中

新增行数据
将数据写入到某一行

sed  '行号i\写入的内容'  文件名字

sed  '3i\helloworld'  e.txt
--sed -i '3i\helloworld'  e.txt   --会修改文件本身

补充:
a  --add   将数据写入到规定行的下一行

sed  '行号a 写入的内容'  文件名字  --写入内容下一行出现
$:表示最后一行

删除行数据
删除某一行数据
sed  '行号d'  文件名
sed  '2d'  e.txt

删除多行数据
sed  '开始行号, 结束行号d'  文件名

sed  'd'  e.txt  --删除所有行
sed  '1,$d'  e.txt  --删除所有行
--sed -i '1,$d'  e.txt   --会修改文件本身


补充: --结合正则来进行删除

sed '/正则/d' 文件名

sed '/hello/d' 8.txt

sed '/^[0-9].*[a-z]$/d' 8.txt

--若要删除文件中的空行
sed  '/^$/d' 文件名

修改行数据
sed '行号s/要被修改的内容/修改成的内容/g' 文件名

sed '1,$s/apple/苹果/g' d.txt        s:表示查找  g:表示全部替换 若只替换个别  用数字1,2,3

sed -i '1,$s/apple/苹果/g' d.txt


查询行数据
sed  -n  '行号p'  文件名   --print 
sed  -n  '5p'  d.txt

sed  -n  '开始行号, 结束行号p'  文件名

sed  -n  '3,5p'  d.txt

创建文件 /home/test1.txt

只查看每一行第一个点前面的数据:

www.baidu.com
image.baidu.com
tieba.baidu.com
v.baidu.com
map.baidu.com
map.baiduccom.com


正则表达式:

.是匹配任意一个字符
*是匹配0次或任意次   + 匹配一次或多次  ?是匹配0次或1次
\.  转义.这个元字符
.*  表示0个或任意多个字符


sed 's/\.baidu.*//g'  /home/test1.txt

sed '1,$s/\.baidu.*//g' /home/test1.txt

--或者用awk
awk -F '.' '{print $1}' test1.txt


筛选和查找行数据: grep   --结合正则
grep  正则  文件名

查询文件里面,所有数字开头的行的信息

grep '^[0-9]' e.txt

^   进行开头数据的判断
[ ]  表示范围
[0-9] 所有的数字
[a-z] 所有的小写
[A-Z] 所有的大写

123或者789开头

grep '^[1-37-9]' e.txt 

查询文件里面,以大写字母结尾的数据
$   进行结尾数据的判断
grep '[A-Z]$' e.txt

查找不是用H结尾的数据
grep '[^H]$' e.txt

查找所有大写结尾的数据但是不要大写H

grep '[A-Z]$' e.txt | grep '[^H]$'

grep '[A-GI-Z]$' e.txt


查找以数字结尾的第二行信息
grep '[0-9]$' e.txt | sed -n '2p'  


查找数字开头,并且是小写结尾的行
grep '^[0-9].*[a-z]$' e.txt

awk


文件上传和下载

yum -y install lrzsz

sz 文件名 --下载文件 

rz 上传文件到当前目录


以行为单位,进行读入,根据分隔符对每行数据进行切割,进行数据列的查看:awk命令


1.使用分隔符来对某个列进行数据的查看
 

 ---如果文件分隔符就是空格
 
则  awk  '{列的操作}'  文件名

awk  '{print $1,$2}'  文件名    --$0:表示全部列  $1:第一个列


 
如果文件分隔符是除空格之外的其他分隔符,需要指明分隔符
 

awk  -F  '文件列的分隔符'  '{列的操作}'  文件名


awk  -F  ';'  '{print $1,$2}'  emp.txt

awk默认的使用的分隔符就是空格。--不会严格    区分文件中是    单个空格    还是多个空格       分隔;


2. 使用变量,对读取的列的数据进行计算

awk  -F  '分隔符'  -v变量名1=值   -v变量名2=值    --赋值 用=
 
'数据的展示'  文件名字


查询员工的年薪和日薪:

awk  -F  ';'  -vy=12  -vd=22  '{print $2,$6*y,$6/d}'  emp.txt

3. 使用逻辑对数据进行判断     --相应操作不要带花括号{}


找出比两千工资大的信息:
awk  -F  ';'  '$6>2000'  emp.txt    


找出工资小于2000并且有奖金的用户信息

awk -F ';' '$6<2000 && $7>0' emp.txt         --&&相当于and


找出工资等于3000或者等于5000的数据    --做比较 用==

awk -F ';' '$6==5000 || $6==3000' emp.txt     --||相当于or


----awk不支持  !(非)  判断         相当于not 

------sort  uniq -c  sort -nr    

练习:
查询出emp表每一年分别有多少人入职?

方法一
awk -F ';' '{print $5}' emp.txt|sed -n '2,$p'|awk -F '/' '{print $1}'|sort|uniq -c|sort -nr
方法二
awk -F ';' '{print $5}' emp.txt|sed -n '2,$p'|sed '1,$s/\/.*//g'|sort|uniq -c|sort -nr


---date

创建一个今天年月日命名的文件

date 会返回当前系统时间

date "+%Y-%m-%d %H:%M:%S"      也可以用单引号


`` 反引号表示要引用一个命令的结果,将这个结果放到另一个
命令中当成条件去使用。
---$() 与  `` 功能一样

touch --用来创建文件
创建一个今天年月日命名的文件

touch `date | awk '{print $1$2$3}'`.txt
touch $(date | awk '{print $1$2$3}').txt

touch `date +%Y-%m-%d`.txt
touch $(date +%Y-%m-%d).txt

--date -d "2 days ago" "+%Y-%m-%d"  --2天前
--date -d "-2 days" "+%Y-%m-%d"  --2天前

--date -d "2 moths ago" "+%Y-%m-%d"--2个月前
--date -d "2 years ago" "+%Y-%m-%d"--2年前


4. 硬件操作
CPU

查看cpu的基本信息
cat  /proc/cpuinfo

内存
查看内存的基本信息
cat  /proc/meminfo

free  -h
            -b 以bytes为单位显示内存使用情况 free -b
            -k 以KB为单位显示内存使用情况 free -k
            -m 以MB为单位显示内存使用情况 free -m
            -h 以合适的单位显示内存使用情况,最大为三位数,自动计算对应的单位 free -h

            -t 显示内存总和 free -t
            
硬盘
查看硬盘的基本使用情况
df  -h

网卡
查看网卡的基本情况
ip  add   查看IP
ip  add  查看IP
ifconfig  查看IP


查看自己的网络和其他另一个地址之间的网络是否通畅:
ping  另一个ip地址或者域名

ping  www.baidu.com
ping  www.souhu.com

---打包与压缩命令


对文件的打包、压缩和解压缩: ***


-- tar 包:仅仅只是打包,但是不会进行压缩的方法

打包:tar  -cf  包名  要被打包的文件名      c--create

tar  -cf  1.tar  *.txt

查看这个包里面有什么内容:tar  -tf  包的名字    t--list

tar  -tf  1.tar

解开这个包,拿出里面的文件:tar  -xf  包的名字  x--extract 

tar  -xf  1.tar      如果当前有相同的文件名,会对文件进行替换

--补充:解开包到指定目录  tar -xf  包名 -C  指定目录


追加一个或者多个文件到包里面:tar  -rf  包的名字  要追加的文件名
tar  -rf  1.tar  world.txt 
tar  -rf  1.tar  apple.txt pear.txt


-- tar.gz包:在打包的同时,进行数据的压缩
v:显示一个过程

打包并且压缩:tar  -zvcf  包名  要被打包的文件名
tar -zvcf 1.tar.gz *.txt

查看压缩包:tar  -ztf  包的名字
tar -ztf 1.tar.gz 
解压缩这个包:tar  -zvxf  包的名字
tar -zxf 1.tar.gz 

--zip的压缩包的方法:

yum  -y install  zip
yum  -y install  unzip

打包并且压缩:zip  包名  要打包的文件名
zip  1.zip  *.txt

查看压缩包的内容:unzip  -l  包名
unzip  -l  1.zip

解压缩包:unzip  包名
unzip  1.zip


--和进程相关的命令

查看当前资源占用靠前的进程和程序的名字以及概况:

top   实时动态式的
load average 负载

P:按cpu占用排序
M:按内存占用排序
T:按使用cpu时间排序
N:按进程编号排序


查看所有资源占用靠前的进程和程序的名字以及概况:

ps  -aux
ps -ef

结束掉正在运行进程:

kill  进程编号
kill  -KILL  进程编号             --强制结束进程
kill  -9  进程编号                --无论如何都要结束进程

通过进程关键字查看进程详细信息,主要查看进程PID(进程编号)

ps -ef|grep hadoop

命令 参数   进程关键字

kill -9 $(ps -ef|grep '^hadoop'|awk  '{print $2}')    过滤出hadoop用户进程杀死
$() --功能类似于反引号``
    
    
    
    
2.4.5 screen
            -S 创建虚拟屏 screen -S test1        ctrl+a+d ---退出虚拟屏
            screen -r   虚拟屏名字  进入虚拟屏
            
            screen -R  虚拟屏名字     先试图恢复离线作业,若找不到离线作业,即创建新的screen作业
            
            screen -ls    查看所有的screen作业
            screen -wipe  清除dead状态screen作业
            
            kill -9 虚拟屏作业编号   --杀死screen作业

            
            注意:需安装 screen
                1.su - root切换至root用户,密码为root
                
                2.yum -y  install screen 安装虚拟屏软件screen
                
                ------3.提示是否安装需输入y
                
                4.显示完毕后切换回hadoop用户

6. 权限操作   **
类型                所属主            所属组            其他人
-                rw-                r--                r--
d                rwx                r-x                r-x
-                r--                r--                ---
l                rwx                rwx                rwx
-                ---                ---                ---

类型:-  普通的文件(touch)     d 文件夹(mkdir)    l 链接文件


权限:
读取        写入        执行
r        w        -
r        w        x
r        -        -
r        -        x
-        -        -
- 表示在这个位置上没有权限


修改权限的命令:
u  自己的权限  user
g  组员的权限  group 
o  其他人的权限 other
a  所有人
r  读取
w  写入
x  执行


chmod  o-rw  baidu.txt
chmod  o=rw  baidu.txt        
chmod  ug+x  baidu.txt
chmod  a=rwx baidu.txt


---chmod  +x  baidu.txt     --给所有人添加执行权限


使用数字代替权限进行修改:

r--  4    100     
-w-  2    010 
--x  1    001
rw-  6    110
r-x  5    101
-wx  3    011
rwx  7    111
---  0    000

chmod  753  a2.txt
chmod  654  a2.txt

chmod -R 777  /home/year  --就是把home下的year文件夹及其所有文件都加上了所有权限


--批量修改权限
统一修改文件夹和里面所有文件的权限:
chmod  -R  权限  文件夹名字
chmod  -R  774  /home/year


2.3.2 chown

chown 新用户名 文件名  --修改文件的所有者


chown :新组名 文件名  --修改文件的所属组

chown 新用户名:新组名 文件名  --修改文件的所有者,所属组


--批量处理
-R 处理目录及目录下所有文件与子目录
实例:
chown -R root:root /home/year  批量改变所有者,所属组


--用户管理命令

创建用户:
useradd  用户名
useradd xiaoli

创建用户密码:
passwd  用户名

修改用户放入到其他的组:
usermod  -g  组名  用户名
usermod  -g  root  xiaoli

--查看所有组的信息
cat /etc/group 

查看用户的组信息:
id  用户名
id  lilei

删除组 
groupdel 组名  --不能删除掉用户的主组

新增组 
groupadd 组名


删除用户:
userdel  -r  用户名 ---(递归式删除用户,会删除与用户相关的一切东西)

userdel  用户名   ---会保留家目录

切换用户登录:
su  用户名 -- 不会刷新登录窗口   --临时切换用户                       switch user 切换用户
su - 用户名  会刷新登录窗口       --完全切换用户

7. 其他
查找系统中文件的位置

find   查找的范围  查找的方法  查找的内容


按名字查找文件:   ---支持个别正则符号

--查找系统里面,有没有hello.txt的文件

find  /  -name  hello.txt


--查找所有的 a 开头的, .txt结尾的文件名字和位置

find  /  -name   'a*.txt'     --'a*.txt'或者"a*.txt" 


根据类型查找文件:
d  文件夹     f  文件    l  快捷方式


--查找所有的 a开头  txt结尾的文件夹的名字和位置

find  /  -type  d  -a  -name  "a*txt"


--布尔运算符
-a 相当于and
-o 相当于or 
!   相当于not


根据文件的大小来查找:
k     M    G

在home目录中,查询所有大于2k的文件         + 大于  - 小于

find  /home  -size  +2k -a -type f


查找所有小于100K的jpg图片  或者    大于300k的png图片

find / -size -100k -a -name "*.jpg"    -o     -size +300k -a -name "*.png"


查找空的文件夹或者文件:
find  /home  -empty


根据文件的权限进行查找:
find  /home  -perm  权限的数字 

find  /home  -perm  644


-user 按用户名查找
find /home  -user   hadoop

Linux中命令的定时调度:***
crontab           在系统中有一个服务名  crond

对服务进行启动、停止、重启的操作:临时的服务的操作,如果电脑重启,
服务就还原了。

service  服务名  start | stop | restart | status

设置系统定时调度的方法:

1. 确认时间是否正确:  date

2. 安装时间服务器: yum -y  install  ntp

3. 启动时间服务器:service  ntpd  start

4. 选择时区的内容:tzselect  --timezone

5. 更改系统的时区的文件:cp  /usr/share/zoneinfo/Asia/Shanghai  /etc/localtime


进行定时任务的设置: crontab  -e
查看定时任务 crontab -l
删除定时任务 crontab -r

两个大部分: 时间的设置  +  要操作的命令

时间的部分:分成了         分  小时  天   月  周         五个部分
 分0-59  小时0-23  天1-31   月1-12   周0-6
 
*  *  *  *  *            每分钟运行一次当前的命令

30  0  *  *  *         每天的0点30分运行命令

0,30  0,12  *  *  *         每天的0点和12点的0分以及30分运行命令

0  8-18  *  *  *       每天的8点到18点每个小时的0分运行命令

0,30  */2  *  *  *     每天每隔两个小时,0分和30分运行命令


30  12-18/3 *  *  *     每天的12点到18的范围内,每隔3个小时,30分的时候运行命令

?有没有用过定时调度,里面每个位置分别代表什么意思?

每天的十点半,将/root里面的  sys.log文件的内容,读取并且保存到  当天的文件里面


29 10 * * *  touch /root/`date | awk '{print $1$2$3}'`.txt

----29 10 * * * touch /root/`date "+%Y-%m-%d"`.txt

30 10 * * * cat /root/sys.log > /root/`date |awk '{print $1$2$3}'`.txt


--整1条也可以     30 10 * * * cat /root/sys.log > /root/`date |awk '{print $1$2$3}'`.txt


重定向符
>      将要显示的数据  覆盖   的写入到后面的文件中
>>    将要显示的数据   追加   的写入到后面的文件中

cd
pwd
ls
ls -l--
mkdir -p 
cp
mv
rm -rf
touch
cat
more
less
head--
tail--

sed--
grep--
awk--
wc
sort
uniq -c
cut
tar -zcf--
tar -zxf--
zip   unzip
free -h--
df -h--
top--
ps -aux 
ps -ef
kill
kill -KILL
kill -9

useradd
usermod
userdel -r

chmod--
chmod -R--
chmod 762 --      rwx rw- -w-

chown   
chown  -R

find--
crontab--
service


3.面试常考命令
    准备操作文件:ll > mingling.txt

    3.1cut
        cut的工作就是"剪",具体的说就是在文件中负责剪切数据的作用。

        -d 指定分隔符,按照指定分隔符进行列的切割-----默认分隔符是Tab;
        -f 列号,提取第几列
        
        实例:
            cut -d " " -f1,3,6 mingling.txt       --会严格区分 单个空格与 多个空格
                               
                               补充:
                               cut -b  按字节来剪切      cut -b 1-3 a.txt  --也可以cut -b 1,2,3 a.txt
                               cut -c  按字符来剪切       cut -c 1-3 a.txt   --也可以cut -c 1,2,3 a.txt

            
    3.2sed
        是一种流编辑器,它一次处理一行内容
        参数:
            -e 多重编辑,且命令顺序会影响结果

            sed -e '4d' -e 's/hadoop/hello/g' -e '2a hadoop' mingling.txt  --各重编辑同时执行
            
            
        命令功能:
            a 新增,a的后面可以接字符串,在下一行出现
                sed '2a hong shan' mingling.txt
            d 删除
                sed '2d' mingling.txt
                sed '/test/d' mingling.txt
                
            s 查找并替换
                sed 's/hadoop/root/g' mingling.txt

                                                 sed -n "行号p"  

                                                 打印输出全部行    sed -n '1,$p' 文件名   --$:表示最后一行
                                                                             sed -n 'p'  文件名


    3.3awk
        一个强大的文本分析工具,把文件逐行的读入,以空格为默认的分隔符将每行切片,切开的部分进行分析处理
            -F 指定输入文件的分隔符
            -v 变量处理
            
        使用正则:找出以d开头的所有行的第一列和第二列
        
            awk -F " "   '/^d/   {print $1","$2}' mingling.txt             ---$0 全部列

                                               ----- awk -F ';' '{print $1,$6}' emp.txt
            
            
            awk -F ';' '$6>1000 && $7>0' emp.txt  --进行逻辑判断   &&相当于and
                                               awk -F ';' '$6==3000 || $6==5000' emp.txt  ----进行逻辑判断  || 相当于 或


        BEGIN,END:在文件开头和结尾分别添加内容
        
    awk -F " " 'BEGIN{print "user,hadoop"} {print $1","$2} END{print "byebye,hadoop"}' mingling.txt
            
            
        -v 变量处理:
            awk -v i=10 -F " " '{print $2+i}' mingling.txt
        
            
        内置变量:FILENAME文件名,NR已读取的记录数,NF切割后列的个数

        awk -F " " '{print "minglingfilename:" FILENAME ",linenumber:" NR ",columns:" NF}' mingling.txt


        
                
    3.4sort 将文件进行排序,并将排序结果标准输出  --- 默认分隔符 tab 
        -n 依照数值大小排序
        -r 以相反顺序排序
        -t 设置排序时所用的分割字符
        -k 指定需要排序的列

        sort -t " " -nrk 2 mingling.txt

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值