Linux常用shell命令
2021/7/28 7:08:04
本文主要是介绍Linux常用shell命令,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1、查看帮助信息
1.用man手册,linux提供的帮助文档
man ls
man cp
man mkdir
man /etc/profile # 可以查看文件的帮助信息
2.命令加上 --help参数,查看简短帮助信息
mkdir --help
rm --help
3、bash解释器内置命令的帮助
help -m cd
4、搜索引擎
linux cat
2、whoami
查看当前登录用户
3、which
查看二进制命令所在的目录
从PATH环境变量中查找
which cp /usr/bin/cp
4、whereis
查看文件及文件的帮助等的路径
5、locate
通过内置updatedb数据库查找
yum install mlocate -y
6、hostname
查看主机名
7、ip add
查看本机ip
8、ip route
查看网关
9、ls
(list)
查看目录下的内容 ls -l /etc 查看文件的属性(use a long listing format) ls -a /etc 显示所有文件,包含隐藏文件,以点开头的文件是隐藏文件 -d 查看目录本身 ls -lh # -h参数(human),是显示文件单位,以kb mb gb大小为单位 -l是列表形式,列出文件夹中详细信息
10、pwd
(print work directory)
打印当前工作目录
11、cd
(change dir)
切换目录 ~ # 用户的家目录 . # 当前目录 .. # 上一级目录 # # root用户提示符 $ $ 普通用户提示符 * 匹配所有 cd - # 切换到上一次的目录
12、touch
创建文件
重复创建不会覆盖,只会修改时间戳
13、mkdir
mkdir 感谢老铁的花花 mkdir -p 斗鱼/lol # 递归创建目录 -p mkdir stu{1..1000} # 创建stu0到stu999共1000个文件夹 mkdir m1 m2 m3 # 同时创建3个文件
14、tree
以树状图显示文件目录的层级结构
#确保你的机器可以上网 ,yum如同pip一样,自动的安装东西,解决依赖 # pip 是给python安装模块的工具 # yum 是给linux安装系统软件的工具 yum install tree -y # -y默认yes同意安装 [root@s25linux tmp]# mkdir -p a/b c/d [root@s25linux tmp]# tree tree -L 1 目录 # 自定义显示几级菜单(level) tree -d # 只显示目录 -a # all所有文件
15、echo
echo命令如同python的print一样,能够输出字符串到屏幕给用户看,打印的默认分隔符是空格
-n do not output the trailing newline
-e enable interpretation of backslash escapes
数列:{a..z} 从a到z的所有字母
[root@s25linux tmp]# echo "感谢老铁送上的奥力给" 感谢老铁送上的奥力给 #linux在命令行的变量赋值,是临时生效的 #输出变量的值 #定义变量,中间有空格 name="感谢老铁送上的飞机" #输出变量的值 [root@s25linux tmp]# echo $name 感谢老铁送上的飞机
16、seq
print a sequence of numbers 打印数字序列
seq 起始值 步长 终止值 # 纵向打印的设置
17、cat
cat 瞄一眼 文件的内容
cat -n 文件名 #读取内容,且显示行号
cat 文件名 [root@s25linux tmp]# cat first.py print ("你看这个灯,它又大又量") #利用cat写入文件内容,写一首诗 [root@s25linux tmp]# cat >> second.py << EOF > #!coding:utf-8 > print("爱的魔力转圈圈") > EOF [root@s25linux tmp]# [root@s25linux tmp]# [root@s25linux tmp]# [root@s25linux tmp]# [root@s25linux tmp]# cat second.py #!coding:utf-8 print("爱的魔力转圈圈")
18、cp
拷贝
#对于配置文件的修改,或者是代码文件的修改,防止突然写错了,复制一份 #复制文件 [root@s25linux tmp]# cp 木兰诗.txt 新_木兰诗.txt #复制文件夹,复制文件夹需要添加 -r 递归复制参数 -a 存档archive也可以复制文件夹,保持属性 [root@s25linux tmp]# cp -r avi new_avi -t 将源文件和目标目录的位置互换
19、mv
mv命令可以 移动文件 ,文件夹的路径
mv命令也能够进行 重命名即把文件移动到当前目录
1.重命名的功能 语法是 mv 旧文件名 新文件名 [root@s25linux tmp]# mv 木兰诗.txt new_木兰诗.txt 2.移动位置 语法 mv 你要移动的文件或是文件夹 移动之后的目录名(如果文件夹存在,则移动,不存在是改名) 案例 mv test.txt b #移动 test.txt文件 到 b文件夹下(b文件夹得存在)
20、rm
rm -f 强制删除
rm -r 递归删除目录
rm -rf 强制删除目录
21、alias(别名)
为什么rm命令默认会有一个让用户确认删除的动作呢?
alias #直接输入可以查看当前系统的别名 案例 1.给系统添加一个别名 alias start="python3 /home/mysite/manager.py runserver 0.0.0.0:8000" 用途一: 简化操作 用途二: alias rm="don't use rm commond" 提示用户不要使用危险的命令 1、可使用转义符在不删除别名的情况下不使用别名 \rm a.txt 2、或使用命令的全路径绕过别名 \bin\rm a.txt
22、unalias (取消别名)
unalias mv
设置和取消别名都是临时生效,重启后恢复
23、find
可以用于搜索机器上所有的资料,按照文件名搜索
语法 find 你要从哪找 -type 你要的文件类型是什么 -size 你要的文件内容多大 -name 你要的内容名字是什么 -type d 是找 文件夹 类型 -name 是指定文件的名字内容 #在系统上 全局搜索,所有的.txt文件 find / -name "*.txt" #指定在etc目录下,进行局部搜索,一个网卡配置文件,网卡名字是以ifcfg开头的 ,文本类型文件 find /etc -type f -name "ifcfg*"
-size +1M -1M -type c File is of type c: b block (buffered) special c character (unbuffered) special d directory p named pipe (FIFO) f regular file l symbolic link; this is never true if the -L option or the -follow option is in effect, unless the sym‐ bolic link is broken. If you want to search for symbolic links when -L is in effect, use -xtype. s socket D door (Solaris)
组合搜索:默认取交集(-a)and,取并集(-o)or ,取反!
-mtime 按时间
-mtime +7 7天前的 -mtime 7 第7天的 -mtime -7 最近7天的 模拟每天创建一个文件,连续30天 mkdir /data -p for n in {01..30};do date -s "2030/05/0$n";touch /data/file$n;done find . -mtime -7 查找最近7天创建的文件
-perm 按权限
-user 按用户
-exec 执行动作
-perm 按权限 [root@oldboy data]# mkdir oldboydir [root@oldboy data]# find /data -perm 755 /data /data/oldboydir -user 按用户 [root@oldboy data]# chown oldboy oldboydir [root@oldboy data]# find /data -user oldboy /data/oldboydir
综合应用
-i 可以让后面的{}接收搜索到的内容。 find . -name "*.txt" | xargs cp -t /tmp/a find . -name "*.txt" | xargs -i cp {} /tmp/a find /data -name "file*" -mtime -7|xargs -i rm -f {} #完整写法
24、重定向
> 标准输出重定向 ,如同 python的 with open 中的 w模式 相当于1> >> 标准输出追加重定向 ,如同 a模式 ,相当于1> 2> 2>> 错误输出重定向,将输出错误的结果 &> &>> 或>>c.txt 2>&1 正确的和错误的都输出 /dev/null 黑洞,放入的文件 /dev/zero 零设备,不断产生东西 [root@mawei ~]# cha >a.txt 2>b.txt [root@mawei ~]# cat b.txt bash: cha: command not found... < 或 0< #重定向写入覆盖符,用在数据导入等操作中,mysql数据导入 << 或 0<< #用在cat命令中 # 批量插入多行文本 cat >/oldboy.txt<<EOF 10.0.0.7 10.0.0.8 10.0.0.9 EOF
25、xargs
build and execute command lines from standard input
-n 指定将多少项作为命令行参数
xargs -n 3 <a.txt a.txt中的内容每三个一行显示 -i [replace-str] This option is a synonym for -Ireplace-str if replace-str is specified. If the replace-str argument is missing, the effect is the same as -I{}. This option is deprecated; use -I instead. -n max-args Use at most max-args arguments per command line. Fewer than max-args arguments will be used if the size (see the -s option) is exceeded, unless the -x option is given, in which case xargs will exit.
26、管道符
| 过滤
1.例如过滤服务器上的进程信息 2.例如过滤服务器上的端口状态信息
27、grep(正则)
grep从文本中过滤有用信息的命令
grep "mysql" /etc/services # 字符串加双引号
-v 参数是 翻转过滤结果
[root@linux tmp]# grep -v "^$" test.txt 找出 空白行以外的内容
-i 忽略大小写
grep -i "al" test.txt
-n 参数显示行号
grep -n "大" test.txt
例如:
find / "*.txt" | grep mysql
28、head、tail
head /etc/passwd #默认看前10行
head -3 /etc/passwd #查看文件的前3行
tail 文件名 #默认从文件的后10行看
tail -2 /etc/passwd #查看文件的后2行
tail命令的实时监控
可以用于检测线上的日志文件,检测用户的请求信息
tail -f 文件名 #实时刷新文件内容
tail -f /tmp/test.txt #能够检测文件内容的变化
29、scp
(secure copy)
在2台linux机器(macos)之间,通过网络安全的传输文件,文件夹
环境准备,准备2台linux机器
确保两台机器能够通信
机器1:192.168.178.134
机器2:192.168.178.235
案例1: 我登录的是 机器1 需求1:将机器1的/tmp/好嗨哦.txt 发送到 机器2的/tmp目录下 [root@linux tmp]# scp /tmp/好嗨哦.txt root@192.168.178.235:/tmp/ 需求2:把机器2的/tmp目录下的资料 给拿到本地的/opt目录下 scp 你想要的内容 内容发送到哪里 scp root@192.168.178.235:/tmp/小样别偷看.txt /opt/
情况2,我登录的是 机器2 【把别人的资料拿来】 案例1:我想拿到机器1的/opt/test.txt 拿到机器2的/tmp目录下 scp 我想要的内容 内容存放的地点 scp root@192.168.178.134:/opt/test.txt /tmp/ 【把自己的资料发给别人】 案例2:我想把本地的/home/fisrst.py 发送给机器1的/home目录下 scp /home/first.py 账号@机器1:/home/ scp /home/first.py root@192.168.178.134:/home/ #如果发送的是整个文件夹,就得加上 -r 递归的拷贝参数 [root@linux tmp]# scp -r ./lol root@192.168.178.235:/tmp/ #用通配符发送多个文件 [root@linux tmp]# scp -r ./* root@192.168.178.235:/tmp/134bak/
30、lrzsz工具
用于windows(基于xshell工具)和linux之间互相传递文件
1.安装此工具 yum install lrzsz -y 2.安装好lrzsz之后,就存在了2个命令 一个是 rz 一个是sz rz #直接输入rz命令,能够蹦出一个弹窗,接收windows的资料 sz 文件 #发送linux的一个文件,发给 windows某个位置,也是出现一个弹窗
31、date
时间
[root@centos ~]# date -s "2100/07/26 23:00:01" 2100年 07月 26日 星期一 23:00:01 CST [root@centos ~]# date +%F 2100-07-26 [root@centos ~]# date +%Y 2100 [root@centos ~]# date +%m 07 [root@centos ~]# date +%d 26 [root@centos ~]# date +%w 1 [root@centos ~]# date +%H 23 [root@centos ~]# date +%M 01 [root@centos ~]# date +%S 30 [root@centos ~]# date +%Y-%m-%d\ %H:%m:%S 2100-07-26 23:07:49 过去和未来 [root@oldboy ~]# date +%F -d '-3day' 2100-07-23 [root@oldboy ~]# date +%F -d '+3day' 2100-07-29 [root@oldboy ~]# date +%F -d '-100year' 2000-07-26 [root@oldboy ~]# date +%F -d '+100year' 2200-07-26 服务器时间和互联网时间同步: ntpdata ntp2.aliyun.com
32、du
(disk usage)
用法 du 【参数】【文件或目录】 -s (summarize) 显示总计 -h (human) 以k,M,G为单位显示,可读性强
案例
统计/var/log/文件夹大小 du -sh /var/log/ #显示当前目录下 所有文件的大小 [root@linux tmp]# du -h ./*
33、top
能够显示 动态的进程信息,cpu、内存,网络,磁盘io等使用情况
linux的资源管理器 就是top命令
第一行 (uptime) 系统时间 主机运行时间 用户连接数(who) 系统1,5,15分钟的平均负载 第二行:进程信息 进程总数 正在运行的进程数 睡眠的进程数 停止的进程数 僵尸进程数 第三行:cpu信息 1.5 us:用户空间所占CPU百分比 0.9 sy:内核空间占用CPU百分比 0.0 ni:用户进程空间内改变过优先级的进程占用CPU百分比 97.5 id:空闲CPU百分比 0.2 wa:等待输入输出的CPU时间百分比 0.0 hi:硬件CPU中断占用百分比 0.0 si:软中断占用百分比 0.0 st:虚拟机占用百分比 第四行:内存信息(与第五行的信息类似与free命令) total:物理内存总量 used:已使用的内存总量 free:空闲的内存总量(free+used=total) buffers:用作内核缓存的内存量 第五行:swap信息 total:交换分区总量 used:已使用的交换分区总量 free:空闲交换区总量 cached Mem:缓冲的交换区总量,内存中的内容被换出到交换区,然后又被换入到内存,但是使用过的交换区没有被覆盖,交换区的这些内容已存在于内存中的交换区的大小,相应的内存再次被换出时可不必再对交换区写入。
34、ps
process status
用于查看linux进程信息的命令
语法就是 ps -ef # -ef,是一个组合参数,-e -f 的缩写,默认显示linux所有的进程信息,以及pid,时间,进程名等信息 #过滤系统有关vim的进程 [root@linux ~]# ps -ef | grep "vim" root 24277 7379 0 16:09 pts/1 00:00:00 vim ps是怎么用的.txt
35、kill
杀死进程的命令
kill 进程的id号 如果遇见卡死的进程,杀不掉,就发送 -9 强制的信号 kill -9 pid
36、netstat
查看linux的网络端口情况
语法如下 常用的参数组合 -t -n -u -l -p [root@linux tmp]# netstat -tunlp #显示机器所有的tcp、udp的所有端口连接情况 #例如验证服务器80端口是否存在 netstat -tunlp | grep 80 #过滤3306端口是否存在 netstat -tunlp |grep 3306 #过滤ssh服务是否正常 [root@linux tmp]# netstat -tunlp | grep ssh tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1147/sshd tcp6 0 0 :::22 :::* LISTEN 1147/sshd #有些公司为了保护服务器安全,更改了默认的远程连接端口 # ssh端口 26674 ip 是 123.206.16.61 账号是 xiaohu 密码是 xiaohu666 #我怎么登陆服务器呢?用如下的命令去连接服务器 ssh -p 26674 xiaohu@123.206.16.61
37、history
查看历史记录
history 默认显示1000条
history -d 77 删除第77行的历史记录(删除敏感记录)
history -c 记录全部清除
38、more,less
浏览文件内容,分页显示。
回车,一行一行滚动
空格,一页一页滚动
/mysql,向下搜索含有mysql 字符串的内容,按n连续向下搜索,按N向上搜索
?mysql ,向上搜索,按n连续向上搜索,按N向下搜索
39、修改PS1变量控制提示符的样式
echo "PS1='[\e[32;1m][\u@[\e[0m][\e[33;1m]\h \W]\$ [\e[0m]'" >>/etc/profile
source /etc/profile
这篇关于Linux常用shell命令的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-12如何创建可引导的 ESXi USB 安装介质 (macOS, Linux, Windows)
- 2024-11-08linux的 vi编辑器中搜索关键字有哪些常用的命令和技巧?-icode9专业技术文章分享
- 2024-11-08在 Linux 的 vi 或 vim 编辑器中什么命令可以直接跳到文件的结尾?-icode9专业技术文章分享
- 2024-10-22原生鸿蒙操作系统HarmonyOS NEXT(HarmonyOS 5)正式发布
- 2024-10-18操作系统入门教程:新手必看的基本操作指南
- 2024-10-18初学者必看:操作系统入门全攻略
- 2024-10-17操作系统入门教程:轻松掌握操作系统基础知识
- 2024-09-11Linux部署Scrapy学习:入门级指南
- 2024-09-11Linux部署Scrapy:入门级指南
- 2024-08-21【Linux】分区向左扩容的方法