Linux 命令学习
发布于 2026-04-06更新于 2026-11-142531 字50 分钟 · 阅读时间
2023-10-7 ~ 2023-10-9
使用“#”进行注释mkdir
mkdir abc #在当前目录下创建一个名为abc的文件夹mkdir /home/elric/我的/abc #在指定目录下创建一个名为abc的文件夹touch
touch 123.txt 创建一个“123.txt”文件删除目录:
rm -r rm -rf
rm -r 目录1 递归删除当前目录下的指定目录1rm -rf 目录2 递归删除当前目录下的指定目录2(不询问)rm -rf * 将当前目录下的所有目录和文件全部删除rm -rf /* 【自杀行为命令!谨慎使用!】将会把根目录下的所有目录及文件全部删除删除文件:
rm rm -f
rm 文件名称 删除当前目录下的指定文件rm -f 文件文件 删除当前目录下的指定文件(不询问)mv
mv aaa bbb 将目录aaa改为bbb(重命名)mv aaa.txt bbb.txt 将文件aaa改为bbb(重命名)mv aaa.txt aaa.cpp 将文件aaa的后缀从txt改为cppcd
cd / 切换到根目录cd /root 切换到根目录下的root目录cd .. 切换到上一级目录cd ~ 切换到home/“用户名”目录 (/home/elric)cd - 切换到上次访问的目录ls ll (详细查看)
ls 查看当前目录下的所有目录和文件ls -a 查看当前目录下的所有目录和文件(包括隐藏的文件)ls -l 或 ll 查看当前目录下的所有目录和文件(以列表方式详细查看,显示更多信息)ls /home/elric 查看指定目录下的所有目录和文件clear
clear 将之前的数据移到上面,并开新的一页cp cp -r (若要复制文件夹,就要加“-r”)
将“文件夹1”复制到“文件夹2”中(不提醒)#任何目录中cp -r /home/elric/我的/文件夹1 /home/elric/我的/文件夹2#目录“/home/elric/我的”中cp -r /home/elric/我的/文件夹1 文件夹2cp -r 文件夹1 /home/elric/我的/文件夹2cp -r 文件夹1 文件夹2将文件“123.cpp”复制到“文件夹2”中(不提醒)#同理cp 123.cpp 文件夹2mv
将“文件夹1”复制到“文件夹2”中(不提醒)#任何目录中mv /home/elric/我的/文件夹1 /home/elric/我的/文件夹2#目录“/home/elric/我的”中mv /home/elric/我的/文件夹1 文件夹2mv 文件夹1 /home/elric/我的/文件夹2mv 文件夹1 文件夹2将文件“123.cpp”复制到“文件夹2”中(不提醒)#同理mv 123.cpp 文件夹2vim 文件名 vi 文件名
vim 123.txt 使用vim编辑器打开文件“123.txt” (vi还是vim都优先用vim编辑器打开,若没有则打开vi编辑器)#注意:使用vi编辑器打开文件后,并不能编辑,因为此时处于命令模式。 #命令行模式下的常用命令:↑,↓,j 控制光标移动dd 删除当前行/字符 查找i o a 进入编辑模式: 进入底行模式 #编辑文件前的命令i 在光标所在字符前开始插入a 在光标所在字符后开始插入o 在光标所在行的下面另起一新行插入 #编辑文件时的命令ESC 退出编辑模式,将文件保存或退出vimshift+: 打开命令行的输入框 #保存与退出的命令(进入底行模式时)(不用输入“:”)#按住ESC进入普通模式,再输入“:”进入底行模式:wq 保存退出:wq! 表示强制保存退出:x 表示保存退出,写入文件并退出。仅当文件被修改时才写入,并更新文件修改时间;否则不会更新文件修改时间:q! 强制退出,内容不保存:q 如果内容修改则会提示是否保存cat more less tail head
我都是在“我的”文件夹中打开的,就不用加文件前的路径了
cat 123.cpp 将文件内容显示到终端上more 123.cpp 通过分屏查看内容,会显示看的百分比#按“Enter”看下一行#按“空格”展示下一页#按“p”退出less 123.cpp 通过分屏查看内容#按“Enter”看下一行#按“空格”展示下一页#按“p”退出 #按“↑”、“↓”看上下一行#按“鼠标滚轮”看上下一行#按“h”查看帮助文档#按Ctrl+C结束tail 123.txt 查看该文档后10行内容tail -10 123.txt 查看该文档后10行内容tail -n 10 123.txt 查看该文档后10行内容 tail -f 123.txt 查看该文档后10行内容(按Ctrl+C结束)#按Ctrl+C结束head 123.txt 查看该文档前10行内容tail -10 123.txt 查看该文档前10行内容tail -n 10 123.txt 查看该文档前10行内容Ctrl+c Ctrl+z
#按下“Ctrl+c”终止当前的“程序”或“命令” 是个正常的终止方式,程序可以做一些清理工作并退出常用于提前中断一个终端的命令#按下“Ctrl+z”将当前进程暂停,并放入后台挂起,可在后续再次恢复执行 使用“fg”命令,可以将该进程恢复到前台运行使用“bg”命令,可以让该进程继续在后台运行echo
echo [选项] [文本]#常见选项:# -n:不输出换行符。# -e:启用转义字符的解析功能# 选项可以空着不填#终端中echo Hello, World! --> Hello, World!echo "Hello, World!" --> Hello, World!echo 'Hello, World!' --> Hello, World!#终端中name="Alice"echo My name is $name --> My name is Alice#-n选项可以让两行文本连续输出而不换行echo -n "Hello,"echo "World"输出:Hello, World #在终端中可能是这样的...[elric@localhost 我的]$ echo -n "Hello,"Hello,[elric@localhost 我的]$ echo "World"World#识别转义字符,并输出文本echo -e "A\nB"输出:AB echo -e "\\ \a"输出:\ (再输出一声警告声) echo -e "ab\bc"输出:ac echo -e "a\tb\tc\nd\te\tf"输出:a b cd e f echo -e "\0141\t\0142\t\0143\n\0144\t\0145\t\0146"#会按照制ASCII码输出的如141 这个八制数在 ASCII码中代表小写的"a",其他的以此类推输出:a b cd e f echo -e "\x61\t\x62\t\x63\n\x64\t\x65\t\x66"#会按照十六进制ASCII码同样可以输出输出:a b cd e f echo -e "\e[1;31m abed \e[0m"#会把 abcd 按照红色输出。\e[1 是标准格式,代表颜色输出开始,\e[0m 代表颜色输出结束,31m 定义字体颜色是红色;echo 命令能够识别的颜色代码如下:#30m=黑色,31m=红色,32m=绿色,33m=黄色,34m=蓝色,35m=洋红,36m=青色,37m=白色。输出:abcd(红字) echo -e "e[1;42m abed \e[0m"#会给 abcd 加入一个绿色的背景。echo 命令可以使用的背景颜色如下:#40m=黑色,41m=红色,42m=绿色,43m=黄色,44m=蓝色,45m=洋红,46m=青色,47m=白色。输出:abcd(绿色背景)| 控制字符 | 作 用 |
|---|---|
\\ |
输出\本身 |
\a |
输出警告音 |
\b |
退格键,也就是向左删除键 |
\c |
取消输出行末的换行符。和“-n”选项一致 |
\e |
Esc 键 |
\f |
换页符 |
\n |
换行符 |
\r |
回车键 |
\t |
制表符,也就是 Tab 键 |
\v |
垂直制表符 |
\Onnn |
按照八进制 ASCII 码表输出字符。其中 0 为数字 0,nnn 是三位八进制数 |
\xhh |
按照十六进制 ASCH 码表输出字符。其中 hh 是两位十六进制数 |
> < >> << |
如果文件不存在,则会创建新文件,如果文件存在,则会覆盖文件
>#将命令的标准输出,重定向到文件echo "Hello, World!" > 123.txt将“Hello, World!” 输出到 “123.txt”中 123.txt中:Hello, World!>>#将命令的标准输出,追加到文件结尾echo "Hello again, World!" >> 123.txt将“Hello again, World!” 追加输出到 “123.txt” 中的下一行 123.txt中:Hello, World!Hello again, World!<#将文件的内容作为命令的标准输入<<#将文件的内容作为命令的标准输入,但可以输入多行命令,直到遇到定界符(自定义的)|#管道符,将一个命令的标准输出作为另一个命令的标准输入echo "hello,world" | grep "hello" (grep用于在字符串中查找特定的字符)输出:hello,world (其中hello是标红的)tar进行文件的打包、压缩和解压tar
man tar 打开tar的帮助文档(按q退出)#其中:# -c 表示创建打包文件# -v 表示显示打包时运行的详细信息# -f 表示指定打包文件的名称# -z 表示调用gzip压缩命令进行压缩/或gzip解压命令进行解压# -x 表示解压缩打包文件# -C 表示解压到哪个文件夹下(大写C)# -t 表示列出打包文件的内容tar -cvf a.tar 文件1.txt 文件2.txt#将“文件1.txt”和“文件2.txt”打包成“a.tar”归档文件(打包文件)tar -cvf a.tar ./*#将当前目录下的所有文件和目录打包成“a.tar”文件tar -zcvf a.tar.gz 文件1.txt 文件2.txt#将“文件1.txt”和“文件2.txt”打包成“a.tar”打包压缩文件tar -zcvf a.tar.gz *#将当前目录下的所有文件和目录打包并压缩成“a.tar.gz”打包压缩文件#解压一个“a.tar”压缩包,到当前文件夹下tar -xvf a.tar#解压一个“a.tar.gz”压缩包,到当前文件夹下tar -xzvf a.tar.gz #解压一个“a.tar”压缩包,到“/home/elric/我的”下tar -xvf a.tar -C /home/elric/我的#详细列出打包压缩文件“a.tar.gz”的内容tar -tvf a.tar.gzzip unzip进行文件的压缩、解压的操作zip unzip
#其中:# -d 表示指定文件解压缩的目标目录# -q 静默模式,不显示操作的过程和结果# -o 解压时覆盖已存在的文件# -j 解压缩不保存压缩文件内的目录结构,将所有文件都放在当前目录下####若没有目录,则可以不加“-r” #将“1.txt”、“2.txt”这两个文件压缩到“a.zip”中zip -r a.zip 1.tx 2.txt#将当前目录下所有文件压缩到“a.zip”中zip -r a.zip *#压缩文件“123.txt”到“a.zip”中,并放在“我的”文件夹中zip -r a.zip /home/elric/我的/123.txt /home/elric/我的#解压文件“a.zip”到当前目录unzip a.zip#解压文件“a.zip”到“/home/elric/我的”目录unzip a.zip -d /home/elric/我的grep
#按“man grep”打开帮助文档#若要搜索的有空格就要加引号 # -i:忽略大小写进行匹配。# -v:反向匹配,只显示不匹配的行。# -r:递归地在目录中搜索。# -l:只显示文件名,而不显示匹配到的具体行。# -n:显示匹配到的行及其行号。# -o:仅显示匹配到的部分。#在“a.txt”文件中搜索“abc”字符串,显示那一行;grep abc a.txt#在“a.txt”文件中搜索“abc”字符串,忽略大小写,且显示那一行;grep -i abc a.txt #在“a.txt”文件中搜索“abc”字符串,显示那一行及行号;grep -n abc a.txt#在“a.txt”文件中搜索“abc”字符串,忽略大小写,显示那一行及行号;grep -ni abc test.txt #在“a.txt”文件中搜索“abc”字符串,显示没搜索到的那一行;grep -v abc a.txt #在指定目录及其子目录中递归搜索符合模式的内容grep -r "abc" directory/ #仅显示匹配到模式的文件名,而不显示具体的匹配行grep -l "abc" a1.txt a2.txt#查找指定nginx服务进程ps -ef | grep nginx#查找指定服务进程,排除gerp身ps -ef | grep nginx | grep -v grep#查找指定进程个数ps -ef | grep nginx -cawkawk 命令是一种文本处理工具,可以对文本文件进行逐行处理并执行指定的操作。
通常可以将 awk 命令用于数据提取和格式化输出。
基本语法:
awk '待处理的文本模式 {要执行的操作}' 文件名 #按“man awk”打开帮助文档#若没有指定文件,则默认从标准输入流中读取数据# -F 定义字段分割符号# -v 定义变量并赋值#逐行打印出"123.txt"的全部内容awk '{print}' 123.txtawk '{print}' /home/elric/我的/123.txt#使用逗号作为分隔符,并打印出"123.txt"文件中每一行的第一个字段。#单引号awk -F',' '{ print $1 }' 123.txt#计算这个文件的第一列所有数字列的和,结束后打印“sum”awk '{sum+=$1} END {print sum}' 123.txt#将文件“123.txt”中的“123”字符串替换成“456”awk '{gsub("123", "456");print}' 123.txt#打印文件所有内容awk -F: '{print $0}' /data/test#打印文件所有内容,并包括行号awk -F: '{print NR, $0}' /etc/passwd /etc/hosts#保留记录的字段数awk -F: '{print $0,NF}' /data/test#输入字段分隔符,默认为空格awk 'BEGIN{FS=":"}{print $1,$3}' /data/test#每行按空格或TAB分割,输出文本中的1、4项awk '{print $1,$4}' testlog.txt#每行按空格或TAB分割,输出文本中的1、4项(格式化输出)awk '{printf "%-8s %-10s\n",$1,$4}' testlog.txt#使用","分割awk -F, '{print $1,$2}' testlog.txt (awk 'BEGIN{FS=","} {print $1,$2}' testlog.txt)#使用多个分隔符.先使用空格分割,然后对分割结果再使用","分割awk -F '[ ,]' '{print $1,$2,$5}' testlog.txt#为打印一个或多个字段或所有字段,使用print命令。这是一个awk动作echo "this is a test" | awk '{ print $0 }' 输出为:this is a test#echo "this is a test" | awk '{ print $1 }' 输出为:this is a test#echo "this is a test" | awk '{ print $1, $2 }' 输出为:this is a test#过滤第一列字符串大于2的行awk '$1>2' testlog.txt#过滤第一列字符串等于2的行awk '$1==2 {print $1,$3}' testlog.txt#过滤第一列字符串大于2并且第二列等于'Are'的行awk '$1>2 && $2=="Are" {print $1,$2,$3}' testlog.txt#输出顺序号 NR, 匹配文本行号awk '{print NR,FNR,$1,$2,$3}' testlog.txt#指定输出分割符awk '{print $1,$2,$5}' OFS=" $ " testlog.txt#输出第二列包含 "th",并打印第二列与第四列awk '$2 ~ /th/ {print $2,$4}' testlog.txt#输出包含 "re" 的行awk '/re/ ' testlog.txt#输出包含 "re" 的行忽略大小写awk 'BEGIN{IGNORECASE=1} /re/' testlog.txt#输出第二列不包含 "th",并打印第二列与第四列awk '$2 !~ /th/ {print $2,$4}' log.txt(awk '!/th/ {print $2,$4}' log.txt)#计算文件大小ls -l *.txt | awk '{sum+=$5} END {print sum}'#从文件中找出长度大于 80 的行awk 'length>80' log.txt#打印九九乘法表seq 9 | sed 'H;g' | awk -v RS='' '{for(i=1;i<=NF;i++)printf("%dx%d=%d%s", i, NR, i*NR,i==NR?"\n":"\t")}'#打印第一个":"前内容awk -F : '{ print $1 }' /etc/passwd#显示/etc/passwd的第1列和第7列,用逗号分隔显示,所有行开始前添加列名start1,start7,最后一行添加,end1,end7(BEGIN语句在所有文本处理动作执行之前被执行,END在所有文本处理动作执行之后被执行)awk -F ':' 'BEGIN {print "start1,start7"} {print $1 "," $7} END {print "end1,end7"}' /etc/passwd#统计/etc/passwd文件中,每行的行号,每行的列数,对应的完整行内容awk -F : '{ print NR " " NF " " $0 }' /etc/passwd#输出字符串的长度awk 'BEGIN { print length("this is a text") }'#将/etc/passwd的第一个":"前内容变成大写输出awk -F ':' '{ print toupper($1) }' /etc/passwdsed#按“man sed”打开帮助文档语法:
# “选项”非必须sed 选项 '命令' 文件#若要使用用脚本文件sed 选项 -f '脚本文件' 文件选项:
# -e 直接在命令行模式上进行sed动作编辑,此为默认选项;# -f 将sed的动作写在一个文件内,用“–f 脚本文件”执行“脚本文件”内的sed动作;# -i 直接修改文件内容;# -n 只打印模式匹配的行;# -r 支持扩展表达式;# -h或--help 显示帮助;# -V或--version 显示版本信息。命令中的参数:
# a 新增,“a”的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)# c 取代,“c”的后面可以接字串,这些字串可以把选定的行改为新的文本# d 删除,删除选择的行,“d”后面通常不接任何东西# i 插入,“i”的后面可以接字串,而这些字串会在新的一行出现(在当前行上面插入文本)# p 打印,亦即将某个选择的数据印出。通常“p”会与参数“sed -n”一起运行# s 取代,可以直接进行取代的工作,通常这个“s”的动作可以搭配正规表示法。例如:“1,20s/old/new/g”# l 列表不能打印字符的清单;# n 读取下一个输入行,用下一个命令处理新的行而不是用第一个命令# N 追加下一个输入行到模板块后面,并在二者间嵌入一个新行,改变当前行的号码# q 退出Sed# w 表示把行写入一个文件# = 打印当前行号# y 表示把一个字符翻译为另外的字符(但是不用于正则表达式)#将文本“a.txt”中的所有“123”替换成“456”sed 's/123/456/g' a.txt#这将删除“a.txt”文件中的所有空白行sed '/^$/d' a.txt#这将显示“a.txt”文件中的第2行到第5行的内容sed '2,5p' a.txt#这将删除“a.txt”文件中包含指定命令的行sed '/命令/d' a.txt#在“test”文件的第四行后添加一行内容“newline”,并将结果输出到标准输出sed -e 4a\newLine test#在“test”文件的第四行后添加二行内容“newline”,并将结果输出到标准输出sed -e '4 a newline\nnewline2' test#在“test”文件的第四行后添加二行内容“newline”和1行空行,并将结果输出到标准输出sed -e '4 a newline\nnewline2\n' test#在“test”文件的第四行之后追加1行空行sed -e '4 a \ ' testfile#在“test”文件第二行后(亦即是加在第三行)加上“drink tea”内容nl /data/test | sed '2a drink tea'#在“test”文件第二行前加上“drink tea”内容nl /data/test | sed '2i drink tea'#在“test”文件在第二行后面加入两行字,例如“Drink tea or”与“drink beer2”每一行之间都必须要以反斜杠"\"来进行新行的添加nl /data/test | sed '2a Drink tea or\drink beer 2'#在“example”中所有包含“test”的行都被写入“file”里(w命令)sed -n '/test/w file' example#替换文本中的字符串把“book”替换为“books”sed 's/book/books/' test#-n选项和p命令一起使用表示只打印那些发生替换的行sed -n 's/test/TEST/p' test#直接编辑文件选项-i,会匹配“file”文件中每一行的第一个“book”替换为“books”sed -i 's/book/books/g' test#在“test.conf”文件第5行之前插入“this is a test line”sed -i '5i\this is a test line' test.conf#“i\”命令,将“this is a test line”追加到以“test”开头的行前面sed '/^test/i\this is a test line' file#在“test.conf”文件第2行之后插入“this is a test line”sed -i '2a\this is a test line' test.conf#将“this is a test line”追加到以“test”开头的行后面sed '/^test/a\this is a test line' file#使用后缀“/g”标记会替换每一行中的所有匹配sed 's/book/books/g' test#将第2-5行的内容取代成为“No 2-5 number”nl /data/test | sed '2,5c No 2-5 number'#当需要从第N处匹配开始替换时,可以使用 /Ngecho sksksksksksk | sed 's/sk/SK/2g' 输出:skSKSKSKSKSKecho sksksksksksk | sed 's/sk/SK/3g' 输出:skskSKSKSKSKecho sksksksksksk | sed 's/sk/SK/4g' 输出:skskskSKSKSK#仅列出“/data/test”文件内的第5-7行19.nl /data/test | sed -n '5,7p'#将“/data/test”的内容列出并且列印行号,同时,请将第2~5行删除;sed的动作为'2,5d',那个d就是删除!因为2-5行给他删除了,所以显示的数据就没有2-5行,注意一下,sed后面接的动作,请务必以 '' 两个单引号括住nl /data/test | sed '2,5d'#只要删除第2行nl /data/test | sed '2d'#删除“test”文件的第2行sed '2d' test#要删“test”文件的除第3到最后一行nl /data/test | sed '3,$d'#删除“test”文件的第3行到末尾所有行sed '3,$d' test#删除文件最后一行sed '$d' file#删除“test”文件空白行sed '/^$/d' test#删除“/data/test”所有包含“root”的行,其他行输出nl /etc/passwd | sed '/root/d'#搜索“/data/test”有“root”关键字的行并打印,如果“root”找到,除了输出所有行,还会输出匹配行nl /data/test | sed '/root/p'#搜索“/data/test”有“root”关键字的行并打印,如果“root”找到,只会输出匹配行,使用-n的时候将只打印包含模板的行。nl /data/test | sed -n '/root/p'#搜索“/data/test”,找到“root”对应的行,执行后面花括号中的一组命令,每个命令之间用分号分隔,这里把“bash”替换为“bash2”,再输出这行nl /data/test | sed -n '/root/{s/bash/bash2/;p;q}'#删除“/data/test”第三行到末尾的数据,并把“bash”替换为“bash2”nl /data/test | sed -e '3,$d' -e 's/bash/bash2/'#把1~10行内所有“abcde”转变为大写,注意,正则表达式元字符不能使用这个命令(y命令)sed '1,10y/abcde/ABCDE/' test#打印奇数行sed -n 'p;n' test.txt(sed -n '1~2p' test.txt)#打印偶数行sed -n 'n;p' test.txt(sed -n '2~2p' test.txt)useradd adduser (需要超级用户/管理员权限)
语法:
useradd [-d home] [-s shell] [-c comment] [-m [-k template]] [-f inactive] [-e expire] [-p passwd] [-r] name# -d home:指定用户的家目录路径,替换系统默认值/home/<用户名># -s shell:指定用户的默认 shell。# -c comment:为用户添加注释。# -m:在创建用户时自动创建用户的家目录。# -k template:指定用户的家目录模板。# -f inactive:设置账户不活动的天数后将其禁用。如果为0账号立即被停用;如果为-1则账号一直可用。默认值为-1.# -e expire:设置账户过期的日期。# -p passwd:指定用户的密码。# -r:创建系统用户。# name:用户名#----------------------------------------------------------# -g:属组,指定用户所属的群组# -u:设置uid,该值在系统中必须是唯一的。0~499默认是保留给系统用户账号使用的,所以该值必须大于499。# -M:没有家目录# -G:指定属于多个组# -D:改变它默认的属性# -e:指定的日期是帐号失效的日期(日期格式为MM/DD/YY,例如06/30/12。缺省表示永久有效)# -n:取消建立以用户名称为名的群组最基本的使用方式:
useradd 用户名passwd
passwd 参数 用户名# -l:锁定已经命名的账户名称# -u:解开账户锁定状态# -x或--maximum=DAYS:密码使用最大时间(天)# -n或--minimum=DAYS:密码使用最小时间(天)# -d:删除使用者的密码# -S:检查指定使用者的密码认证种类# --stdin:非交互式修改/设置密码,弊端是操作日志能查密码,用history -c 干掉。usermod
usermod 参数 用户名# -c:修改用户帐号的注释。# -d:修改用户登入时的目录。# -e:修改帐号的有效期限。# -f: 修改在密码过期后多少天即关闭该帐号。# -g:修改用户所属的群组。# -G:修改用户所属的附加群组。# -l:修改用户帐号名称。# -L:锁定用户密码,使密码无效。# -s:修改用户登入后所使用的shell。# -u:修改用户ID。# -U:解除密码锁定。#常用的参数包括-c, -d, -m, -g, -G, -s, -u以及-o等,与useradd命令中的选项一样,可以为用户指定新的资源值。#将wly用户备注改为“贵宾”usermod -c "贵宾" wlyuserdel
#只删除用户wly用户所长的家目录不删除userdel wly#删除用户wly常用的选项是-r,它的作用是把用户的家目录一起删除userdel -r wlysu
#作用于用户之间的切换。但是切换前的用户依然保持登录状态。如果是root 向普通或虚拟用户切换不需要密码,反之普通用户切换到其它任何用户都需要密码验证。su wly:切换到wly用户,但是路径还是/root目录su - wly : 切换到wly用户,路径变成了/home/wlysu : 切换到root用户,但是路径还是原来的路径su - : 切换到root用户,并且路径是/rootexit:退出返回之前的用户sudo
#可以使用sudo将管理员用户权限暂时提升到Root权限,普通用户用不了#使用后要输入自己的账号和密码shutdown
# -h:停止系统服务并关机# -r:停止系统服务后重启#关机 shutdown -h now #立刻关机 shutdown -h 15:30 #到15:30关机,如果该时间小于当前时间,则到隔天关机 shutdown -h 5 #5分钟后关机 poweroff #立刻关机#重启 shutdown -r now #立刻重启 shutdown -r 5 #5分钟后重启 reboot #立刻重启--help man
--help#查看这个命令的帮助文档(更短,但全英文)shutdown --help:ifconfig --help: 查看网卡信息man#使用“man 要使用的命令”来查询这个命令的英文文档(有的有中文)#按“q”关闭文档 man awk --> 打开awk的使用文档history
history | grep es
ps -au #占用的资源是从进程启动开始,计算的平均占用资源,比如cpu等top #实时占用的资源; 1).du -lh 查看当前文件下各文件夹占用存储空间 2).du -sh 查看当前文件夹所占存储空间 3).du --max-depth=<目录层数> 超过指定层数的目录后,予以忽略。 4).du --max-depth=1 只查看当前目录下文件占用的存储空间管道命令:根据项目查看进程,更加 PID 查看项目,以及项目路径
ps -ef #查看所有的进程ps -ef | grep nginx #查看nginx相关的进程ping 192.168.xx.xxnetstat -an #查看全部端口netstat -an | grep 8080 #搜索指定端口telnet www.baidu.com 80ifconfig ifconfig | more
df -h
du -h
du -h 目录路径 #查看指定目录pwd
kill
#pid:进程号kill pidkill -9 pid(强制杀死进程)setup #命令会开启一个图形化的配置工具service network restartclear 或 Ctrl+l
clear#或按键“Ctrl+l”(uname -a)/(cat /proc/version)/(uname -r)cat /etc/redhat-release
getconf LONG_BIT
date -R
service iptables stop #临时关闭防火墙chkconfig iptables off #防火墙开启不启动service iptables status #查看防火墙状态msconfig #查看开机启动选项chkconfig #查看开机启动服务列表chmod
文件调用权限分为三级 : 文件所有者(Owner)、用户组(Group)、其它用户(Other Users)

只有文件所有者和超级用户可以修改文件或目录的权限。可以使用绝对模式(八进制数字模式),符号模式指定文件的权限。

#rwx:# r-:代表可读# w-:代表可写# x-:代表该文件是一个可执行文件 #如rwx任意位置变为-则代表不可读或不可写或不可执行文件。其他参数:
# X-:特殊执行权限只有当文件为目录文件,或者其他类型的用户有可执行权限时,才将文件权限设置可执行(大写X)# s-:当文件被执行时,根据who参数指定的用户类型设置文件的setuid或者setgid权限# t-:设置粘贴位,只有超级用户可以设置该位,只有文件所有者u可以使用该位# -R:对目前目录下的所有文件与子目录进行相同的权限变更(即以递归的方式逐个变更)例 1:
#给test.txt文件权限改为可执行文件权限,test.txt文件的权限是:chmod -rw------- test.txt#第一位:-就代表是文件,d代表是文件夹#第一段(2 ~ 4 个字符3位):代表拥有者的权限#第二段(5 ~ 7 个字符3位):代表拥有者所在的组,组员的权限#第三段(8 ~ 10个字符最后3位):代表的是其他用户的权限例 2:
chmod -rw-r--r-- test.txt#前三位代表当前用户对文件权限:可以读/可以写/不能执行#中间三位代表当前组的其他用户对当前文件的操作权限:可以读/不能写/不能执行#后三位其他用户对当前文件权限:可以读/不能写/不能执行
chmod 命令也可以使用八进制数来指定权限。文件或目录的权限位是由 9 个权限位来控制,每三位为一组,它们分别是文件所有者(User)的读、写、执行,用户组(Group)的读、写、执行以及其它用户(Other)的读、写、执行。历史上,文件权限被放在一个比特掩码中,掩码中指定的比特位设为 1,用来说明一个类具有相应的优先级。

例:755 将这样解释:
所有者的权限用数字表达:属主的那三个权限位的数字加起来的总和。如 rwx ,也就是 4+2+1 ,应该是 7。
用户组的权限用数字表达:属组的那个权限位数字的相加的总和。 如 r-x ,也就是 4+0+1 ,应该是 5。
其它用户的权限数字表达:其它用户权限位的数字相加的总和。 如 r-x ,也就是 4+0+1 ,应该是 5。
使用符号模式可以设置多个项目:who(用户类型),operator(操作符)和 permission(权限),每个项目的设置可以用逗号隔开。 命令 chmod 将修改 who 指定的用户类型对文件的访问权限,用户类型由一个或者多个字母在 who 的位置来说明,如 who 的符号模式表所示:

例 1:
#将文件 test.txt 设为所有人皆可读取chmod ugo+r test.txtchmod a+r test.txtchmod r--r--r-- test.txtchmod 444 test.txtchmod 100100100 test.txt例 2:
#将文件 test1.txt 与 test2.txt 两个文件设为该文件拥有者,与其所属同一个群体者可写入,但其他以外的人则不可写入chmod ug+w,o-w test1.txt test2.txt例 3:
#为 test.jar 文件拥有者增加可执行权限chmod u+x test.jar例 4:
#将目前目录下的所有文件与子目录皆设为任何人可读取 :chmod -R a+r *例 5:
#设为该文件拥有者,与其所属同一个群体者可读写执,但其他以外的人则只能执行chmod ug=rwx,o=x filechmod 771 file例 6:
#为文件拥有者(user)添加执行权限chmod u+x test.txt (---x------) #为文件拥有者所在组(group)添加执行权限chmod g+x test.txt (------x---) #为所有用户分类,添加可执行权限chmod 111 test.txt (---x--x--x) #为所有用户分类,添加可写入权限;chmod 222 test.txt(--w--w--w-) #为所有用户分类,添加可读取权限chmod 444 test.txt (-r--r--r--)| 命令 | 说明 |
|---|---|
| chmod a+r file | 给file的所有用户增加读权限 |
| chmod a-x file | 删除file的所有用户的执行权限 |
| chmod a+rw file | 给file的所有用户增加读写权限 |
| chmod +rwx file | 给file的所有用户增加读写执行权限 |
| chmod u=r,go= file | 对file的所有者设置读写权限,清空该用户组和其他用户对file的所有权限(空格代表无权限) |
| chmod -R u+r,go-r docs | 对目录docs和其子目录层次结构中的所有文件给用户增加读权限,而对用户组和其他用户删除读权限 |
| chmod 664 file | 对file的所有者和用户组设置读写权限,为其他用户设置读权限 |
| chmod 0755 file | 相当于u=rwx (4+2+1), go=r (4+1 & 4+1)。0没有特殊模式。 |
| chmod 4755 file | 4设置了设置用户ID位,剩下的相当于u=rwx (4+2+1), go=r (4+1 & 4+1)。 |
| find path/ -type d -exec chmod a-x {} ; | 删除可执行权限对path以及其所有的目录(不包括文件)的所有用户,使用'-type f'匹配文件 |
| find path/ -type d -exec chmod a+x {} ; | 允许所有用户浏览或通过目录path/ |
centos7 以下
方法一:直接编辑/etc/sysconfig/iptables 文件
(1). vi /etc/sysconfig/iptables
(2). -A INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT
(3). service iptables restart 或(systemctl restart iptables.service)(修改完保存退出,重启网卡服务)
(4). service iptables status 或 netstat -nalp|grep 80(查看端口开放信息)
方法二:命令行方式
(1). 开放端口命令: /sbin/iptables -I INPUT -p tcp --dport 8080 -j ACCEPT
(2). 保存:/etc/rc.d/init.d/iptables save
(3).重启服务:/etc/init.d/iptables restart
(4). 查看端口是否开放:/sbin/iptables -L -n
关闭指定端口以 8080 端口为例
方法一:
sudo iptables -A INPUT -p tcp --dport 8080 -j DROP
sudo iptables -A OUTPUT -p tcp --dport 8080 -j DROP"
方法二:
关掉对应的应用程序,则端口就自然关闭了
"kill -9 PID"(PID:进程号)
如:通过"netstat -anp | grep ssh"
有显示:tcp 0 127.0.0.1:2121 0.0.0.0:*LISTEN 7555/ssh
则:"kill -9 7555"
centos7
因为 centos7 默认的防火墙是 firewalld 防火墙,不是使用 iptables,使用默认的 firewalld 防火墙。
这里以开放的 8080 端口为例
#添加指定需要开放的端口(8080),设置成功输出:success:firewall-cmd --add-port=8080/tcp --permanent或firewall-cmd --zone=public --add-port=28080/tcp --permanent #参数解释:zone=public #作用域add-port=8080/tcp #添加的端口,格式为:端口/通讯协议permanent #永久生效,没有此参数则重启后失效 #重载入添加的端口:firewall-cmd --reload #查询3306端口是否开启成功,开启成功输出:yes,未开启:no:firewall-cmd --query-port=8080/tcpfirewall-cmd --permanent --remove-port=8080/tcp 或firewall-cmd --zone= public --remove-port=80/tcp #public可以不加 #重载入添加的端口:firewall-cmd --reload或firewall-cmd --complete-reload #两者的区别就是第一个无需断开连接,就是firewalld特性之一动态添加规则,第二个需要断开连接,类似重启服务#查看防火墙状态:systemctl status firewalld或者 firewall-cmd --state#开启防火墙:systemctl start firewalld或service firewalld start#关闭防火墙:systemctl stop firewalld#设置开机启动:systemctl enable firewalld#停止并禁用开机启动:sytemctl disable firewalld#查询已开放的端口:netstat -ntulp | grep 80#若遇到无法开启#先用:systemctl unmask firewalld.service#然后:systemctl start firewalld.serviceip -brief address show
挂载盘(Mount)是将文件系统连接至指定的目录上的过程
fdisk
fdisk -l 查看磁盘情况
这个之后再学
#格式:ftp [hostname| ip-address] #在linux命令行下输入ftp xxx.xxx.xxx.xxx(ip地址)#服务器询问你用户名和口令,分别输入用户名和相应密码,待认证通过即可。get mget
get 单个文件下载#如要获取服务器上/Z848/node/20220101/11.txt文件下载到本地/data/ftp/20220126下mkdir /data/ftp20220126 #新增文件夹ftp xxx.xxx.xxx.xxx(ip地址) #服务器询问你用户名和口令,分别输入用户名和相应密码,待认证通过即可。cd /Z848/node/20220101 #进入ftp服务器下载目录下lcd /data/ftp20220126 #使用这个命令改变本地服务器当前目录为/data/ftp20220126get 11.txt #下载11.txt这个文件mget 批量下载文件ftp> mget *.* (回车)put mput
put 单个文件上传#如要把本地的/data/ftp20200126/1.bmp传送到远端主机/Z848/node/20220101/目录下,并改名为333.bmp #先进入/data/ftp20200126/目录下,在此目录下运行的ftp命令进行连接登录,然后执行这个命令进行文件上传ftp> put 1.bmp /Z848/node/20220101/333.bmp (回车)mput 批量上传文件#如要把本地当前/data/ftp20200126目录下所有bmp文件上传到远端服务器/Z848/node/20220101/目录下 1.cd /data/ftp20200126 #先进入/data/ftp20200126/目录下,在此目录下运行的ftp命令进行连接登录2.ftp> cd /Z848/node/20220101(回车)#进入ftp远程/Z848/node/20220101目录下3.ftp> mput *.bmp (回车) #批量文件上传ssh
ssh 192.168.1.100 #默认利用当前宿主用户的用户名登录ssh root@192.168.1.100 #利用远程机的用户登录ssh root@192.168.1.100 -o stricthostkeychecking=no #首次登陆免输yes登录ssh root@192.168.1.100 "ls /home/root" #当前服务器A远程登录服务器B后执行某个命令ssh root@192.168.1.100 -t "sh /home/root/ftl.sh" #当前服务器A远程登录服务器B后执行某个脚本分享你的想法,与大家交流讨论
Twikoo 加载失败
Twikoo 脚本加载失败