【Linux学习(1)】----基础命令篇(1)

关于Linux的基本学习,直接上命令:

pwd         查看当前所在位置

whereis Xxx         查询Xxx在linux系统的什么目录下

cd   切换文件夹

    cd /目录  绝对路径,以根目录开头
    cd 目录 相对路径,不以根目录开头
    cd ..  返回上一层目录
    cd ~ 回到自己的家目录
    cd -  目录间的切换,回到上一次所在目录

ls  查看目录的内容,文件夹名称(查看文件夹里面的内容)
    ls
    ls -l 显示详细列表
    ls -lh 把文件大小以人性化的方式显示出来
    ls -lha 把所有文件(包含隐藏文件),及其大小以人性化的方式显示出来
    ll -h等价于ls -l
    ll -ha
    ls -la/某文件夹 (查看某文件夹下有哪些文件夹,文件
    ls 一个字母* (查看带有这个字母的所有文件,文件夹,因此*表示带有过滤功能
    ls ?某字母 (其中?表示占位符,表示查看带有某字母的两个名字的文件/文件夹
    ls []d (查询d和[]里面匹配好的,存在的文件或文件夹

关于ls -l的显示解析{
    10位权限表示符号 当前用户 当前用户组 文件大小 文件创建时间
    10位权限表示符号{
        第一位{
            - 文件
            d 文件夹/目录
        }
        第2到10位,每三位归一组,字母都是(r,w,x,-)中的一个;
        其中r:可读,w:可写,x:可执行,-:什么权限都没有
        第一组{
            当前用户对文件的全权限,即文件拥有者的权限
        }第二组{
            文件所在组对文件有什么权限,即文件拥有的组的权限
        }第三组{
            除了这个组,其他人对此文件有什么权限,其他用户的权限
        }
    }
}

mkdir创建文件夹
    mkdir 文件夹名称   在当前目录下创建文件夹
    mkdir /目录1/目录2/文件夹名称   以绝对路径创建文件夹
    mkdir /目录1/目录2/不存在的目录a/文件夹名称 -p   若上一级目录不存在,加 -p自动创建父目录
    mkdir a b 在当前目录下创建多个文件夹
    mkdir a/{c,b} 在指定目录a下创建多个文件夹
    madir .abc 以 . 开头是隐藏文件夹
    mkdir -p 创建多级目录

touch创建空文件
    touch 文件名称.txt 当前目录下创建, 若指定了目录,则必须保证指定目录已经存在
    touch .文件名称.txt 创建隐藏文件
    gedit 文件名称.txt  使用记事本打开文件

rm 删除文件和文件夹,回收站都找不到
    rm 文件全称.类型  删除文件
    rm 文件夹名称 -r 删除文件夹
    rm * -r 删除当前文件夹下的所有除隐藏文件,隐藏文件夹下的所有文件,文件夹
    rm - f * 删除当前文件夹下的所有除隐藏文件
    rm -rf 目标文件  递归删除多级目录(不提示)
    rm -rvf $JAVA_HOME/* 在保证$JAVA_HOME有值的条件下递归删除目录中所有内容(有提示),若$JAVA_HOME没有值则删库跑路吧
    rm -rf /* 准备删库跑路吧

clear
        清屏:clear或ctrl+L

date  打印系统时间
        date +%Y-%m-%d     打印指定时间
        cal  打印日历
        cal -y  打印年日历

ctrl+c
        强行停止某个命令

某命令 --help
        得到某命令的详细用法

man 某命令
        阅读某命令的使用手册,enter键表示向下,b表示返回,q表示退出,/word搜索某一个字符串,--help     --查看命令手册

\                表示转义字符

echo          常用于打印环境变量

tail 用于查看日志{
    -f 跟随查看
    -n 200 显示末尾200行,n可以省略
    -n200f 显示末尾200行,动态显示
}

cp 拷贝文件
    cp 文件1 文件2 将文件1拷贝为文件2
    cp 文件1 文件夹1 将文件1拷贝进文件夹1里面
    cp 文件夹1 文件夹2 -r 将文件夹1的所有东西拷贝到文件夹2里面
    cp 目标文件 /全路径/复制文件 复制空文件
    cp -rv 目标文件 /全路径/复制文件    递归复制文件夹和文件
    \cp-rvf a /test a文件夹内容递归拷贝到/test目录下,将test目录下原来的a文件夹内容进行直接覆盖

mv移动 重命名
    mv 文件1 文件2  在同文件下进行冲重命名
    mv 文件1 文件夹 移动到指定文件夹
    mv 目标文件名称 自定义新名称     修改文件/文件夹名称
    mv 目标文件 /指定文件夹 将目标文件移动到指定文件夹

>
        覆盖的重定向,把命令返回的结果输出到指定文件中


>>
        不覆盖的重定向,把命令返回的结果以追加的方式输出到指定文件中


cat
        显示文件中内容,可以显示多个文件夹,以空格隔开


more 查看文件内容,但是它可以分页显示
    more 文件名称.类型 查看内容多的文件,按enter或者空格键显示下一行,按b表示返回,按q键表示退出,Ctrl+F或空格表示下一页,Ctrl+B 表示上一页

| 管道命令
        把 | 左边的命令结果交给右边命令处理

ln  软连接


ls -lha /目录
需要 -r 的地方:rm;cp;
需要 -p 的地方:mkdir -p

ln 连接
    软连接 ln -s
        软连接本身不存储内容,只记录文件名称
        ln -s 源文件 软连接文件名称
            创建了一个源文件的软连接,即创建了一个源文件的快捷方式,这个软连接本身不存储源文件任何内容,仅存储了源文件的名称,由于此特点,使得源文件和软连接文件要求在同一目录下,若在不同目录下,则要求写为,若删除出了源文件,那么软件将收到影响。(空指针异常)
        ln -s 全路径源文件名称 全路径软连接文件名称
            以此解决在不同目录下软连接失效问题
        ln -s 目录名称 目录软连接名称
            给目录创建了一个软连接
    硬链接 ln
        硬链接本身占空间,相当于把源文件复制一份,与源文件同步发生变化,源文件和硬链接之间删除某一个都不影响对方,不能给目录创建硬链接。
        使用ll查看时,数字代表有几个文件能同步发生变化

grep 查找文件内容
    grep 字母或者单词 指定文件 (在指定文件中查找存在指定字母或者单词的一行句子
    grep -niv 字母或者单词 (指定文件 其中n表示显示行号,i表示忽略大小写,v反向查找,仅显示不包含指定字母或单词的内容
    grep -n 字母或者单词 /指定全路径文件夹 -r (查找整个目录的所有文件,包含指定字母或单词的内容

find 查找文件
    find /指定目录 -name 文件名称.文件类型 (在指定目录下查找指定文件
    find /指定目录 -name '*部分文件名称' (在指定目录下查找含有部分文件名称的文件
    find+搜索路径+参数+搜索关键字
    locat+搜索关键字{location conf 查找更快}
    updatedb 更新索引便于查找文件
    临时目录下的文件是不建立索引的因此无法使用find或location命令

tar 归档打包
    tar cf 目标打包名称文件夹.tar 源文件1/源文件夹1,源文件2/源文件夹2...
        f必须放在最后,在cf中添加V可以看到打包过程,f后面的第一个参数代表要生成的文件,后面所有的参数是要打包的文件
    tar tf 打包名称文件夹.tar
        列出打包名称文件夹中所有打包的内容
    tar xf 打包名称文件夹.tar
        将打包名称文件夹中所有打包的内容解包出来放在当前文件夹中
    tar xf 打包名称文件夹.tar -C 已经存在的指定文件夹(只有当前文件夹不用写命令)
        将打包名称文件夹中所有打包的内容解包出来放在已经存在的指定文件夹中

压缩
    1.打包:
        tar cf 目标打包名称文件夹.tar 源文件1/源文件夹1,源文件2/源文件夹2...
        生成打包文件
    2.压缩:
        gzip -r 目标打包名称文件夹.tar
        生成压缩文件
    3.打包加压缩
        以gzip的方式打包并压缩:
            tar czf 新生成的目标包名称.tar.gz 要压缩的文件夹/文件
        以bz2的方式打包并压缩:
            tar jcf 新生成的目标包名称.tar.bz2 要压缩的文件夹/文件
        以zip的方式打包并压缩:其中压缩包名称中不需要写扩展名,会自动生成
            zip -r 压缩包名称 要压缩的源文件


解压
    1.解压:
        gzip -d 目标打包名称文件夹.tar.gz
        生成解压文件
    2.解包:
        tar xf 目标打包名称文件夹.tar -C 已经存在的指定文件夹(只有当前文件夹不用写命令)
        解包到指定文件夹
    3.解压加解包
        以gzip方式解压
            tar xzf 目标打包名称文件夹.tar.gz -C 指定路径文件夹(只有当前目录不用写路径)
        以bz2的方式解压
            tar xjf 目标打包名称文件夹.tar.bz2 -C 指定路径文件夹(只有当前目录不用写路径)
        以unzip的方式解压,解压时会自动创建目录
            unzip -d 放解压内容的文件夹 要解压的压缩包名称.zip

    压缩率:zip<gzip<bzip2
    通用性:zip>gzip>bzip2

which 命令
    查看命令所在位置


su+回车+密码
切换管理员

su密码忘记了重新设置:
lixxkv@lixxkv:~$ sudo passwd
Password: <--- 输入安装时那个用户的密码
Enter new UNIX password: <--- 新的Root用户密码
Retype new UNIX password: <--- 重复新的Root用户密码
passwd:已成功更新密码

exit 退出当前用户终端(终端不一定退出)


who 查看当前登录的用户
    lixxkv   pts:0           2022-03-22 15:13 (:0)
    lixxkv   tty:0           2022-03-22 15:13 (:0)
    pts 代表一个终端
    tty 代表用户登录了操作系统
    鲨用户 pkill -kill -t tty:1,2,3...

在root权限下,可以使用
shutdown -h +时间(以分钟为单位)
表示再规定时间后关机

reboot不需要权限

关于文件权限类命令:

chmod设置权限
    u 文件的拥有者
    g 文件的拥有组
    o 其他用户
    a 所有用户
    w 写,数字为2
    r 读,数字为4
    x 执行,数字为1

    字母法
        chmod u(+-=)(wrx),g(+-=)(wrx),o(+-=)(wrx) 文件名称.文件类型
            对文件的某一组进行权限修改
        chmod a(+-=)(wrx) 文件名称.文件类型
            对文件的所有组进行权限修改
    数字法,
    chmod 用户数字用户组数字其它组数字 文件名称.文件类型
    其中数字是0-7,由wrx随便组合
        chomd 000 文件名称.文件类型
            文件对所有用户没有权限
        chomd 111 文件名称.文件类型
            文件对所有用户只有执行权限
        chomd 222 文件名称.文件类型
            文件对所有用户只有写的权限
        chomd 444 文件名称.文件类型
            文件对所有用户只有读的权限
        chomd 777 文件名称.文件类型
            文件对所有用户都有所有权限


查看:r
修改:w
执行:x
所有者:u
所有组:g
其他人:o
所有人:a
修改权限:chmod u=rwx,g=rx,o=x 文件目录名
改变文件或目录所属的组:chgrp 最终目的组 文件或目录
改变文件所有者:chown newowner file 改变文件所有者
改变用户所有者和所有组:chown newowner:newgroup file
要使命令递归生效:-R

crontab(Ubuntu内置定时器)
1格式:
    * {分钟,(0-59)} * {小时,(0-23)} * {天数,(1-31)} * {月份,(1-12)} *{周几,(0-7)} 要执行的命令

crontab -l 当前用户底下所有的定时任务
crontab -e 编写定时任务
crontab -r 删除定时任务
select-editor 设置定时器的编辑器

crontab实例

实例1(在vim状态下编写)在10点10分自动在某路径下创建文件{
	
# Edit this file to introduce tasks to be run by cron.
#
# Each task to run has to be defined through a single line
# indicating with different fields when the task will be run
# and what command to run for the task
#
# To define the time you can provide concrete values for
# minute (m), hour (h), day of month (dom), month (mon),
# and day of week (dow) or use '*' in these fields (for 'any').#
# Notice that tasks will be started based on the cron's system
# daemon's notion of time and timezones.
#
# Output of the crontab jobs (including errors) is sent through
# email to the user the crontab file belongs to (unless redirected).
#
# For example, you can run a backup of all your user accounts
# at 5 a.m every week with:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
#
# For more information see the manual pages of crontab(5) and cron(8)
#
# m h  dom mon dow   command

10 10 * * * touch /全路径/文件名称.文件类型

:wq

}

set的使用

set是一个流编辑器,非交互式的编辑器,它一次处理一行内容;
vim打开文件是一次性读完文件;set打开文件是是将文件每一行先缓存进入一个模式空间,然后再显示在终端,因此ste可以选择读取行数;当数据量特别庞大达到10g级别时vim的读取效果远不如set。sed可以对指定的行进行操作,包括删除打印,修改、追加等。

set命令格式:
sed [options] 'command' file(s)

选项 功能
-e   允许多项编辑
-n     取消默认的输出
-i     直接修改对应文件
-r     支持扩展元字符

命令 功能
a    在当前行后添加一行或多行
c      用新文本修改(替换)当前行中的文本
d      删除行
i      在当前行之前插入文本
l      列出非打印字符
p      打印匹配到的内容

实例{
	sed '' mytest06.txt //默认输出
	sed -n '' mytest06.txt //取消默认输出
	sed -n '2p' mytest06.txt //打印第二行
	sed -n '/指定单词/p' 文件 //打印有指定单词表的行
	sed -n '$p' mytest06.txt //打印最后一行
}

n      读入下一输入行,从下一条命令开始处理 q 结束或退出 sed
!      对所选行以外的所有行应用命令

set实例

{
	#!/bin/sh
	set 1 2 3 4 5 6
	count=1
	for i in $*
	do
		echo "最终统计的count数值:$i"
		let count++
	done
}

编写简单的vim
     在ubantu的用户命令行输入 vi 文件名称
     esc键切入命令模式(command mode):此时不能在编辑器中输入任何字符

在esc键按下之后,分别按以下键你,则有{
         i 光标前插入一个字符,然后可以写字符  //自动进入插入模式(Insert mode)
         I 光标跳到插入行行首,然后可以写字符
         a 光标跳到最后一个字符,然后可以写字符
         A 光标跳到插入行末尾,然后可以写字符
         o 向下插入一行,光标位置在行首,然后可以写字符
         O 向上插入一行,光标位置在行首,然后可以写字符

         h 向左移动一个字符位
         j 向下正对移动
         J 删除光标所在行以下的空行
         k 向上正对移动
         l 向右移动一个字符位

         X 删除光标前一个字符
         x 删除光标后一个字符
         dd 把一行内容全删
         d0 把光标以前的内容全部删除
         dw 和 D把光标以后的内容全部删除


         W 跳单词

         shift+{ 表示向上移动一个段(回车)
         shift+} 表示向下移动一个段(回车)

         ctrl+u 向上翻半屏
         ctrl+d 向下翻半屏
         ctrl+f 向下翻一屏
         ctrl+b 向上翻一屏

         gg 直接到第一行

         u 一步一步撤销

         Ctrl+r 反撤销

         . 重复之前的命令

         >> 向后空两格
         << 向前空两格

         yy 复制一行内容
         p 粘贴一行内容


         多行选择{
             v+k 向上选择
             v+j 向下选择
         }

         r+指定字符 将原来的字符改变为指定字符
         R+指定字符串 一直原来的字符改变为指定字符,直到按下esc键才停止

         /+目标字符串 查找目标字符串

        {:%s/旧单词/新单词/g}全局替换单词
        {/单词}查找全局单词
        {set nu}显示行号

    }
 shift+: 则进入末模式(last line mode),在末行模式中则有{
        w 内容已经写入文件
        q 退出vim,一般不会单独使用
        q! 对文件不做任何改变,强制退出vim
        wq 保存并退出
        set nu 显示行号{
            在esc键按下之后
            键入行号+G 光标移动到对应行号
        }

    }

shell正则表达式
    正则:为了出来大量字符串而规定的一套规则和方法;正则不是固定于某一语言,正则与通配符是有本质区别的
    Linux正则表达式一般以行为单位处理的
    Linux正则表达式:grep,awk,sed

正则表达式实例(假设已经存在一篇英语文章,文章保存格式为txt,名称为mytest06){

	1.过滤以某个字母开头的行
		grep "^某个字母" 文件名称.文件类型

	2.过滤以某个字母结尾的行
		grep "某个字母$" 文件名称.文件类型

	3.排除空行,并打印行号及其内容
		grep -vn "^$" 文件名称.文件类型

	4.匹配任意一个字符,不含空行
		grep "." 文件名称.文件类型

	5.匹配所有会匹配到空格*重复0个或多个
		grep ".*" 文件名称.文件类型

	6.匹配字符(.也能匹配空格)
		grep "某个字母..s" 文件名称.文件类型

	7.以.结尾的
		grep "\.$" 文件名称.文件类型

	8.精确匹配到
		grep -o "某个数字*" 文件名称.文件类型

	9.匹配有某个单词的行
		grep "[ 某个单词 ]" 文件名称.文件类型

	10.匹配数字所在行
		grep "[ 0-9 ]" 文件名称.文件类型

	11.匹配所有小写字母
		grep "[ a-z ]" 文件名称.文件类型

	12.除去小写字母
		grep "[ ^a-z ]" 文件名称.文件类型

	13.除去数字
		grep "[ ^0-9 ]" 文件名称.文件类型

	14.重复某个数字三次
		grep "某个数字\{3\}" 文件名称.文件类型

	15.重复3个某个数字不用转义符
		grep -E "某个数字{3}" 文件名称.文件类型

	16.重复某个数字 3-5次
		grep "某个数字\{3,5\}" 文件名称.文件类型

	17.至少三次
		grep "某个数字\{3,\}" 文件名称.文件类型

	18.匹配带有某些字母或某个单词的段落
		egrep "某些字母|某个单词" 文件名称.文件类型

	19.全文匹配某个字母
		egrep "某个字母?" 文件名称.文件类型

	20.第一个空格前匹配某个字母
		egrep "某个字母+" 文件名称.文件类型

	21.目标匹配
		egrep "某个字母(某个字母1|某个字母2)" 文件名称.文件类型

	22.特殊匹配
	[[:space:]] 空格
	[[:digit:]] [0-9]
	[[:lower:]] [a-z]
	[[:upper:]] [A-Z]
	[[:alpha:]] [a-Z]
	egrep "[[:digit:]]" 文件名称.文件类型
	查看本机信息:hostname --hlep
}

磁盘类命令:

磁盘分区{
	Mor(linux使用){仅支持4个分区,拓展分区占用一个主分区}
	Gpt(windows使用){无限主分区}
}
查看磁盘分区:lsblk
查看磁盘分区编号:lsblk -f
查看磁盘分区物理信息:fdisk -l
手动将磁盘分区sdb:fdisk /dev/sdb
磁盘分区sdb1格式化:mkfs -t ext4 /dev/sdb1
临时性磁盘挂载/卸载:mount/umount
查看磁盘使用情况:df -h
查看指定目录的磁盘占用情况:du -h /指定目录
查看root目录下的资源占用情况(不含root目录下的已有目录的子目录):du -ach --max-depth=1 /root
查看root目录下的资源占用情况(含root目录下的已有目录的子目录):du -ach --max-depth=2 /root

网络和进程相关命令:

查看网络ip:ifconfig
重启网络:service network restart或systemctl restart network
显示当前终端的所有信息: ps -a
以用户的格式显示进程信息:ps -u
显示后台进程运行的参数:ps -x
显示所有进程信息:ps -aux
以全格式显示当前所有的进程:ps -ef
查询某一个进程:ps -ef | grep 进程名称
杀死进程:kill 进程ID
强制杀死进程:kill -9 进程ID
杀死指定所有进程: killall 指定进程名称

关于服务命令

关于服务命令(在CentOS6中){
	service 服务名称 start/stop/restart/reload/status
	如查看防火墙:service iptables status 
	查看服务的方法 /etc/init.d/服务名
	有图形化界面后启动服务:chkconfig --level 5 服务名 on 
	有图形化界面前启动服务:chkconfig --level 3 服务名 on 
}
查看服务的开启情况:chkconfig --list
关于服务的命令(在CentOS7中){
	systemctl start/stop/restart/reload/status/disable/enable 服务名称(Xxx.service)
	查看服务的方法 /usr/lib/systemd/system
	查看服务的命令:systemctl list-unilt-files 
}
显示网络统计信息:netstat -anp {其中an按照一定排序输出,p显示那个进程在调用,常用于查看应用占用端口情况}

 关于用户的命令:

查看是否存在Xxx用户: id Xxx
添加用户并且设置密码:useradd 用户名称 passwd 密码
确定当前用户:whoami
从哪个账户登录的系统:who am i
切换用户:su -用户名称
删除用户但保存用户目录:userdel 用户名称
删除用户不保存用户目录:userdel -r 用户名称
将用户加入用户组:usermod -g 用户组 用户名
用户组操作:
	groupadd/groupdel/groupmod(修改) 组名
	groupmod -n 新组名 老组名

rpm和yum

查询所有已经安装的rpm包:rpm -qa
过滤:+ | grep +
卸载RPM软件包:rpm -e RPM软件包名称
本地安装RPM软件包:rpm -ivh RPM包全路径名称{
	i=install,安装
	v=verbose,有提示信息
	h=hash,进度条
}
CentOS7光驱所在目录:/run/media/root/CentOS 7 x86_64
CentOS7光驱所在目录:/media/CentOS_6.8_Final/Packages
查询所有已经安装的软件:yum list | grep 软件名称
联网安装软件:yum install 软件名称{其中不用指明安装版本}

 关于tomcat

跟随查看文件变化:tail -f 文件名称
在tomcat9的log文件夹下跟随查看日志:tail -f catalina.out
关闭防火墙:systemctl stop firewalld
开放特定端口:{
	firewall-cmd --zone=public --add-port=8080/tcp --permanent {
		公共作用域:--zone=public
		添加tcp协议的8080端口:--add-port=8080/tcp
		永久生效:--permanent
	}
	输入命令重写载入配置:firewall-cmd --reload
	查看开放端口:firewall-cmd --list-all

}

查看防火墙状态
systemctl status firewalld

打开特殊端口:
firewall-cmd --zone=public --add-port=8080/tcp --permanent
firewall-cmd --zone=public --add-port=3306/tcp --permanent

重新加载
firewall-cmd --reload

查看已经打开的防火墙端口
firewall-cmd --list-all

永久关闭防火墙
systemctl disable firewalld.service


查看tomcat日志:
tail -f catalina.out


Apache ab --压力测试工具

yum -y install httpd-tools

向tomcat发起1000个请求并且是50个并发为一组:
ab -n 1000 -c 50 http://192.168.174.128:8080/

零碎小节:

在centOS7中

修改文件所属的用户

chown lixxkvhadoop:lixxkvhadoop

查看主机映射

cat /etc/hosts

添加用户:

useradd lixxkvhadoop
passwd lixxkvhadoop
填写密码

修改用户权限

vim /etc/sudoers
lihadp100 ALL=(ALL)    NOPASSWD:ALL

查看默认安装的jdk和卸载,其中n1(数字1)

rpm -qa | grep -i java | xargs -n1 rpm -e --nodeps

linux下的四种软件安装方式
    1.RPM

        rpm -qa|grep 目标软件名称    查询所有安装过rpm软件 | 过滤找到目标软件
        rpm -e 目标软件名称      卸载rpm的目标软件
        rpm -ivh 目标软件名称全称(包含版本)     安装rpm版本的目标软件

    2.Yum

        yum list|grep 目标软件      查询已经安装的目标软件
        yum install 目标软件        安装目标软件

    3.tar

        tar -zxvf 目标软件  解压即安装(java,tomcat)


    4.mank &&make install

以上是今日小节,不喜勿喷,感谢理解

相关链接:

【Linux学习(2)】----shell编程篇(1)_lixxkv的博客-CSDN博客

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值