elric
19 次阅读
约 8 分钟 · 2531 字
Linux 命令学习

Linux 命令学习

2023-10-7 ~ 2023-10-9

一、目录及文件操作

1.0 注释

Bash
使用“#”进行注释

1.1 创建目录

mkdir

Bash
mkdir abc            		 #在当前目录下创建一个名为abc的文件夹mkdir /home/elric/我的/abc	#在指定目录下创建一个名为abc的文件夹

1.2 创建文件

touch

Bash
touch 123.txt		创建一个“123.txt”文件

1.3 删除目录或文件

删除目录:

rm -r rm -rf

Bash
rm -r 目录1     递归删除当前目录下的指定目录1rm -rf 目录2    递归删除当前目录下的指定目录2(不询问)rm -rf *        将当前目录下的所有目录和文件全部删除rm -rf /*      【自杀行为命令!谨慎使用!】将会把根目录下的所有目录及文件全部删除

删除文件:

rm rm -f

Bash
rm    文件名称        删除当前目录下的指定文件rm -f 文件文件        删除当前目录下的指定文件(不询问)

1.4 重命名目录或文件名称

mv

Bash
mv aaa bbb              将目录aaa改为bbb(重命名)mv aaa.txt bbb.txt   	将文件aaa改为bbb(重命名)mv aaa.txt aaa.cpp		将文件aaa的后缀从txt改为cpp

1.5 目录切换

cd

Bash
cd /           切换到根目录cd /root       切换到根目录下的root目录cd ..          切换到上一级目录cd ~           切换到home/“用户名”目录     (/home/elric)cd -           切换到上次访问的目录

1.6 目录及文件列表的查看

ls ll (详细查看)

Bash
ls                查看当前目录下的所有目录和文件ls -a             查看当前目录下的所有目录和文件(包括隐藏的文件)ls -l 或 ll       查看当前目录下的所有目录和文件(以列表方式详细查看,显示更多信息)ls /home/elric    查看指定目录下的所有目录和文件

1.7 清屏

clear

Bash
clear				将之前的数据移到上面,并开新的一页

1.8 复制目录或文件

cp cp -r (若要复制文件夹,就要加“-r”)

Bash
将“文件夹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
Bash
将文件“123.cpp”复制到“文件夹2”中(不提醒)#同理cp 123.cpp 文件夹2

1.9 剪切目录或文件

mv

Bash
将“文件夹1”复制到“文件夹2”中(不提醒)#任何目录中mv /home/elric/我的/文件夹1 /home/elric/我的/文件夹2#目录“/home/elric/我的”中mv /home/elric/我的/文件夹1 文件夹2mv 文件夹1 /home/elric/我的/文件夹2mv 文件夹1 文件夹2
Bash
将文件“123.cpp”复制到“文件夹2”中(不提醒)#同理mv 123.cpp 文件夹2

1.10 查看及修改文件内容信息

vim 文件名 vi 文件名

Bash
vim 123.txt			使用vim编辑器打开文件“123.txt”  (vi还是vim都优先用vim编辑器打开,若没有则打开vi编辑器)
Bash
#注意:使用vi编辑器打开文件后,并不能编辑,因为此时处于命令模式。 #命令行模式下的常用命令:↑,↓,j			   控制光标移动dd 	                删除当前行/字符				   查找i o a				进入编辑模式:					进入底行模式 #编辑文件前的命令i					在光标所在字符前开始插入a					在光标所在字符后开始插入o					在光标所在行的下面另起一新行插入 #编辑文件时的命令ESC 			    退出编辑模式,将文件保存或退出vimshift+:				打开命令行的输入框 #保存与退出的命令(进入底行模式时)(不用输入“:”)#按住ESC进入普通模式,再输入“:”进入底行模式:wq             	保存退出:wq!            	表示强制保存退出:x              	表示保存退出,写入文件并退出。仅当文件被修改时才写入,并更新文件修改时间;否则不会更新文件修改时间:q!            	    强制退出,内容不保存:q                  如果内容修改则会提示是否保存

1.11 查看文件内容信息

cat more less tail head

我都是在“我的”文件夹中打开的,就不用加文件前的路径了

Bash
cat 123.cpp		将文件内容显示到终端上
Bash
more 123.cpp	通过分屏查看内容,会显示看的百分比#按“Enter”看下一行#按“空格”展示下一页#按“p”退出
Bash
less 123.cpp	通过分屏查看内容#按“Enter”看下一行#按“空格”展示下一页#按“p”退出 #按“↑”、“↓”看上下一行#按“鼠标滚轮”看上下一行#按“h”查看帮助文档
Bash
#按Ctrl+C结束tail 123.txt				查看该文档后10行内容tail -10 123.txt       		查看该文档后10行内容tail -n 10 123.txt			查看该文档后10行内容 tail -f 123.txt      		查看该文档后10行内容(按Ctrl+C结束)
Bash
#按Ctrl+C结束head 123.txt				查看该文档前10行内容tail -10 123.txt       		查看该文档前10行内容tail -n 10 123.txt			查看该文档前10行内容

1.12 终止当前操作

Ctrl+c Ctrl+z

Bash
#按下“Ctrl+c”终止当前的“程序”或“命令” 是个正常的终止方式,程序可以做一些清理工作并退出常用于提前中断一个终端的命令
Bash
#按下“Ctrl+z”将当前进程暂停,并放入后台挂起,可在后续再次恢复执行 使用“fg”命令,可以将该进程恢复到前台运行使用“bg”命令,可以让该进程继续在后台运行

1.13 在终端中输出文本或变量

echo

Bash
echo [选项] [文本]#常见选项:#   -n:不输出换行符。#   -e:启用转义字符的解析功能#   选项可以空着不填
  1. 输出文本
Bash
#终端中echo Hello, World!		-->		Hello, World!echo "Hello, World!"	-->		Hello, World!echo 'Hello, World!'	-->		Hello, World!
  1. 输出变量
Bash
#终端中name="Alice"echo My name is $name	-->		My name is Alice
  1. 使用选项
Bash
#-n选项可以让两行文本连续输出而不换行echo -n "Hello,"echo "World"输出:Hello, World #在终端中可能是这样的...[elric@localhost 我的]$ echo -n "Hello,"Hello,[elric@localhost 我的]$ echo "World"World
  1. 识别转义字符
Bash
#识别转义字符,并输出文本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 是两位十六进制数

1.14 重定向功能

> < >> << |

如果文件不存在,则会创建新文件,如果文件存在,则会覆盖文件

  1. >
Bash
#将命令的标准输出,重定向到文件echo "Hello, World!" > 123.txt将“Hello, World!” 输出到 “123.txt”中 123.txt中:Hello, World!
  1. >>
Bash
#将命令的标准输出,追加到文件结尾echo "Hello again, World!" >> 123.txt将“Hello again, World!” 追加输出到 “123.txt” 中的下一行 123.txt中:Hello, World!Hello again, World!
  1. <
Bash
#将文件的内容作为命令的标准输入
  1. <<
Bash
#将文件的内容作为命令的标准输入,但可以输入多行命令,直到遇到定界符(自定义的)
  1. |
Bash
#管道符,将一个命令的标准输出作为另一个命令的标准输入echo "hello,world" | grep "hello"		(grep用于在字符串中查找特定的字符)输出:hello,world (其中hello是标红的)

二、文件打包、压缩和解压的操作

2.1 使用tar进行文件的打包、压缩和解压

tar

Bash
man tar				打开tar的帮助文档(按q退出)
Bash
#其中:#	-c 表示创建打包文件#	-v 表示显示打包时运行的详细信息#	-f 表示指定打包文件的名称#	-z 表示调用gzip压缩命令进行压缩/或gzip解压命令进行解压#	-x 表示解压缩打包文件#	-C 表示解压到哪个文件夹下(大写C)#	-t 表示列出打包文件的内容
  1. 打包文件
Bash
tar -cvf a.tar 文件1.txt 文件2.txt#将“文件1.txt”和“文件2.txt”打包成“a.tar”归档文件(打包文件)tar -cvf a.tar ./*#将当前目录下的所有文件和目录打包成“a.tar”文件
  1. 打包并压缩文件
Bash
tar -zcvf a.tar.gz 文件1.txt 文件2.txt#将“文件1.txt”和“文件2.txt”打包成“a.tar”打包压缩文件tar -zcvf a.tar.gz *#将当前目录下的所有文件和目录打包并压缩成“a.tar.gz”打包压缩文件
  1. 解压一个 tar 文件
Bash
#解压一个“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/我的
  1. 列出 tar 打包文件的内容
Bash
#详细列出打包压缩文件“a.tar.gz”的内容tar -tvf a.tar.gz

2.2 使用zip unzip进行文件的压缩、解压的操作

zip unzip

Bash
#其中:#	-d 表示指定文件解压缩的目标目录#	-q 静默模式,不显示操作的过程和结果#	-o 解压时覆盖已存在的文件#	-j 解压缩不保存压缩文件内的目录结构,将所有文件都放在当前目录下###
  1. 压缩
Bash
#若没有目录,则可以不加“-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/我的
  1. 解压
Bash
#解压文件“a.zip”到当前目录unzip a.zip#解压文件“a.zip”到“/home/elric/我的”目录unzip a.zip -d /home/elric/我的

三、查找操作命令

grep

Bash
#按“man grep”打开帮助文档#若要搜索的有空格就要加引号 #	-i:忽略大小写进行匹配。#	-v:反向匹配,只显示不匹配的行。#	-r:递归地在目录中搜索。#	-l:只显示文件名,而不显示匹配到的具体行。#	-n:显示匹配到的行及其行号。#	-o:仅显示匹配到的部分。
Bash
#在“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
Bash
#查找指定nginx服务进程ps -ef | grep nginx#查找指定服务进程,排除gerp身ps -ef | grep nginx | grep -v grep#查找指定进程个数ps -ef | grep nginx -c

四、处理文本文件的命令

4.1 awk

awk 命令是一种文本处理工具,可以对文本文件进行逐行处理并执行指定的操作。

通常可以将 awk 命令用于数据提取和格式化输出。

基本语法:

Bash
awk '待处理的文本模式 {要执行的操作}' 文件名 #按“man awk”打开帮助文档#若没有指定文件,则默认从标准输入流中读取数据
Bash
#	-F 定义字段分割符号#	-v 定义变量并赋值
  1. 打印文本文件的全部内容
Bash
#逐行打印出"123.txt"的全部内容awk '{print}' 123.txtawk '{print}' /home/elric/我的/123.txt
  1. 按照指定字符分隔符来打印
Bash
#使用逗号作为分隔符,并打印出"123.txt"文件中每一行的第一个字段。#单引号awk -F',' '{ print $1 }' 123.txt
  1. 计算数字列的和
Bash
#计算这个文件的第一列所有数字列的和,结束后打印“sum”awk '{sum+=$1} END {print sum}' 123.txt
  1. 替换文件中的字符串
Bash
#将文件“123.txt”中的“123”字符串替换成“456”awk '{gsub("123", "456");print}' 123.txt
  1. 其他例子
Bash
#打印文件所有内容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/passwd

4.2 sed

Bash
#按“man sed”打开帮助文档

语法:

Bash
# “选项”非必须sed 选项 '命令' 文件#若要使用用脚本文件sed 选项 -f '脚本文件' 文件

选项:

Bash
#	-e 直接在命令行模式上进行sed动作编辑,此为默认选项;#	-f 将sed的动作写在一个文件内,用“–f 脚本文件”执行“脚本文件”内的sed动作;#	-i 直接修改文件内容;#	-n 只打印模式匹配的行;#	-r 支持扩展表达式;#	-h或--help 显示帮助;#	-V或--version 显示版本信息。

命令中的参数:

Bash
#	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 表示把一个字符翻译为另外的字符(但是不用于正则表达式)
  1. 替换文本中的字符串
Bash
#将文本“a.txt”中的所有“123”替换成“456”sed 's/123/456/g' a.txt
  1. 删除空白行
Bash
#这将删除“a.txt”文件中的所有空白行sed '/^$/d' a.txt
  1. 显示指定行范围的内容
Bash
#这将显示“a.txt”文件中的第2行到第5行的内容sed '2,5p' a.txt
  1. 根据添加进行处理
Bash
#这将删除“a.txt”文件中包含指定命令的行sed '/命令/d' a.txt
  1. 其他
Bash
#在“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)

五、用户及权限操作命令

5.1 创建用户

useradd adduser (需要超级用户/管理员权限)

语法:

Bash
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:取消建立以用户名称为名的群组

最基本的使用方式:

Bash
useradd 用户名

5.2 修改密码

passwd

Bash
passwd 参数 用户名#	-l:锁定已经命名的账户名称#	-u:解开账户锁定状态#	-x或--maximum=DAYS:密码使用最大时间(天)#	-n或--minimum=DAYS:密码使用最小时间(天)#	-d:删除使用者的密码#	-S:检查指定使用者的密码认证种类#	--stdin:非交互式修改/设置密码,弊端是操作日志能查密码,用history -c 干掉。

5.3 修改账号信息

usermod

Bash
usermod 参数 用户名#	-c:修改用户帐号的注释。#	-d:修改用户登入时的目录。#	-e:修改帐号的有效期限。#	-f: 修改在密码过期后多少天即关闭该帐号。#	-g:修改用户所属的群组。#	-G:修改用户所属的附加群组。#	-l:修改用户帐号名称。#	-L:锁定用户密码,使密码无效。#	-s:修改用户登入后所使用的shell。#	-u:修改用户ID。#	-U:解除密码锁定。#常用的参数包括-c, -d, -m, -g, -G, -s, -u以及-o等,与useradd命令中的选项一样,可以为用户指定新的资源值。
Bash
#将wly用户备注改为“贵宾”usermod -c "贵宾"  wly

5.4 删除用户

userdel

Bash
#只删除用户wly用户所长的家目录不删除userdel wly#删除用户wly常用的选项是-r,它的作用是把用户的家目录一起删除userdel -r wly

5.5 切换登录用户

su

Bash
#作用于用户之间的切换。但是切换前的用户依然保持登录状态。如果是root 向普通或虚拟用户切换不需要密码,反之普通用户切换到其它任何用户都需要密码验证。su wly:切换到wly用户,但是路径还是/root目录su - wly : 切换到wly用户,路径变成了/home/wlysu : 切换到root用户,但是路径还是原来的路径su - : 切换到root用户,并且路径是/rootexit:退出返回之前的用户

5.6 暂时提升权限到 Root 权限

sudo

Bash
#可以使用sudo将管理员用户权限暂时提升到Root权限,普通用户用不了#使用后要输入自己的账号和密码

六、系统操作命令

6.1 关机和重启命令

shutdown

Bash
#	-h:停止系统服务并关机#	-r:停止系统服务后重启
Bash
#关机     shutdown -h now        #立刻关机	shutdown -h 15:30      #到15:30关机,如果该时间小于当前时间,则到隔天关机    shutdown -h 5          #5分钟后关机    poweroff               #立刻关机#重启    shutdown -r now        #立刻重启    shutdown -r 5          #5分钟后重启    reboot                 #立刻重启

6.2 查找帮助命令

--help man

  1. --help
Bash
#查看这个命令的帮助文档(更短,但全英文)shutdown --help:ifconfig  --help:     查看网卡信息
  1. man
Bash
#使用“man 要使用的命令”来查询这个命令的英文文档(有的有中文)#按“q”关闭文档 man awk		-->		打开awk的使用文档

6.3 查看历史使用命令

history

6.4 过滤与 es 相关命令

history | grep es

6.5 查看占用资源情况

Bash
ps -au   #占用的资源是从进程启动开始,计算的平均占用资源,比如cpu等top      #实时占用的资源;

6.6 查看当前目录所占存储情况

    1).du -lh                        查看当前文件下各文件夹占用存储空间    2).du -sh                        查看当前文件夹所占存储空间    3).du --max-depth=<目录层数>     超过指定层数的目录后,予以忽略。    4).du --max-depth=1                 只查看当前目录下文件占用的存储空间

6.7 管道命令

管道命令:根据项目查看进程,更加 PID 查看项目,以及项目路径

Bash
ps -ef                         #查看所有的进程ps -ef | grep nginx            #查看nginx相关的进程

6.8 查看机器间是否网络连通 ping 192.168.xx.xx

Bash
ping 192.168.xx.xx

6.9 查看当前系统端口

Bash
netstat -an  				#查看全部端口netstat -an | grep 8080 	#搜索指定端口

6.10 检查远程机器或本地机器上某端口是否打开

Bash
telnet www.baidu.com 80

6.11 查看 IP 信息

ifconfig ifconfig | more

6.12 查看 Linux 系统上的文件系统磁盘使用情况统计

df -h

6.13 用于显示目录或文件的大小

du -h

Bash
du -h 目录路径    	#查看指定目录

6.14 查看当前目录

pwd

6.15 杀死进程(根据 PID):

kill

Bash
#pid:进程号kill pidkill -9 pid(强制杀死进程)

6.16 配置网络

Bash
setup 			#命令会开启一个图形化的配置工具

6.17 重启网络命令

Bash
service network restart

6.18 清屏命令

clear 或 Ctrl+l

Bash
clear#或按键“Ctrl+l”

6.19 查看 liunx 内核

Bash
(uname -a)/(cat /proc/version)/(uname -r)

6.20 查看 linux 版本

cat /etc/redhat-release

6.21 查看 LINUX 是多少位

getconf LONG_BIT

6.22 查看时区

date -R

6.23 关闭防火墙

Bash
service iptables stop      #临时关闭防火墙chkconfig iptables off     #防火墙开启不启动service iptables status    #查看防火墙状态

6.24 开机启动选项

Bash
msconfig                    #查看开机启动选项chkconfig                   #查看开机启动服务列表

6.25 修改文件权限命令

chmod

文件调用权限分为三级 : 文件所有者(Owner)、用户组(Group)、其它用户(Other Users)

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

Bash
#rwx:#	r-:代表可读#	w-:代表可写#	x-:代表该文件是一个可执行文件 #如rwx任意位置变为-则代表不可读或不可写或不可执行文件。

其他参数:

Bash
#	X-:特殊执行权限只有当文件为目录文件,或者其他类型的用户有可执行权限时,才将文件权限设置可执行(大写X)#	s-:当文件被执行时,根据who参数指定的用户类型设置文件的setuid或者setgid权限#	t-:设置粘贴位,只有超级用户可以设置该位,只有文件所有者u可以使用该位#	-R:对目前目录下的所有文件与子目录进行相同的权限变更(即以递归的方式逐个变更)

例 1:

Bash
#给test.txt文件权限改为可执行文件权限,test.txt文件的权限是:chmod -rw------- test.txt#第一位:-就代表是文件,d代表是文件夹#第一段(2 ~ 4 个字符3位):代表拥有者的权限#第二段(5 ~ 7 个字符3位):代表拥有者所在的组,组员的权限#第三段(8 ~ 10个字符最后3位):代表的是其他用户的权限

例 2:

Bash
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:

Bash
#将文件 test.txt 设为所有人皆可读取chmod ugo+r     test.txtchmod a+r      test.txtchmod r--r--r--   test.txtchmod 444      test.txtchmod 100100100   test.txt

例 2:

Bash
#将文件 test1.txt 与 test2.txt 两个文件设为该文件拥有者,与其所属同一个群体者可写入,但其他以外的人则不可写入chmod ug+w,o-w test1.txt test2.txt

例 3:

Bash
#为 test.jar 文件拥有者增加可执行权限chmod u+x test.jar

例 4:

Bash
#将目前目录下的所有文件与子目录皆设为任何人可读取 :chmod -R a+r *

例 5:

Bash
#设为该文件拥有者,与其所属同一个群体者可读写执,但其他以外的人则只能执行chmod ug=rwx,o=x filechmod 771 file

例 6:

Bash
#为文件拥有者(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/

6.26 liunx 开放指定端口及删除指定端口

centos7 以下

  1. 开放指定端口这里以开放的 8080 端口为例

方法一:直接编辑/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

  1. 关闭指定端口以 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 端口为例

  1. 对外开放指定端口(8080)
Bash
 #添加指定需要开放的端口(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/tcp
  1. 对外关闭指定端口(移除 8080 端口)
Bash
firewall-cmd --permanent --remove-port=8080/tcp	或firewall-cmd --zone= public --remove-port=80/tcp #public可以不加 #重载入添加的端口:firewall-cmd --reload或firewall-cmd --complete-reload #两者的区别就是第一个无需断开连接,就是firewalld特性之一动态添加规则,第二个需要断开连接,类似重启服务
  1. 其他命令:
    查看防火墙状态相关
Bash
#查看防火墙状态: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.service

6.27 查看本机网卡

ip -brief address show

七、挂载盘操作命令

挂载盘(Mount)是将文件系统连接至指定的目录上的过程

7.1 查看磁盘情况

fdisk

Bash
fdisk -l 查看磁盘情况

这个之后再学

八、连接 ftp 或 sftp 命令

8.1 连接 ftp 服务器

Bash
#格式:ftp [hostname| ip-address] #在linux命令行下输入ftp xxx.xxx.xxx.xxx(ip地址)#服务器询问你用户名和口令,分别输入用户名和相应密码,待认证通过即可。

8.2 下载文件

get mget

  1. get 单个文件下载
Bash
#如要获取服务器上/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这个文件
  1. mget 批量下载文件
Bash
ftp> mget *.* (回车)

8.3 上传文件

put mput

  1. put 单个文件上传
Bash
#如要把本地的/data/ftp20200126/1.bmp传送到远端主机/Z848/node/20220101/目录下,并改名为333.bmp #先进入/data/ftp20200126/目录下,在此目录下运行的ftp命令进行连接登录,然后执行这个命令进行文件上传ftp> put 1.bmp /Z848/node/20220101/333.bmp (回车)
  1. mput 批量上传文件
Bash
#如要把本地当前/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

Bash
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 脚本加载失败