Linux常用指令学习及案例-原创-自己整理

版权声明: https://blog.csdn.net/qq_36626686/article/details/88015896

桌面端切换到命令行“Ctrl+Alt+F2”

命令行切换到桌面端“Ctrl+Alt+F7”

Linux常用命令

1. 软件操作命令

2. 服务器硬件资源和磁盘操作

3. 系统用户操作命令

4. 防火墙相关设置

5. 提权操作sudo和文件传输操作

6. 文件和文件夹操作命令

6.1 Linux文件目录结构

6.2 文件基本操作

6.3 文本编辑器vim

6.4 文件权限421,777

6.5 文件搜索、查找。读取

6.6 文件压缩与解压

Linux常用命令

1. 软件操作命令

  • 软件包管理器:yum
  • 安装软件:yum install XXX
  • 卸载软件:yum remove XXX
  • 搜索软件:yum search XXX
  • 清理缓存:yum clean packages
  • 列出已安装:yum list
  • 软件包信息:yum info XXX

2. 服务器硬件资源和磁盘操作

  • 查看内存:free -m
  • 查看硬盘:df -h
  • 查看负载:w或者top(用top查看时用q退出查看)
  • 查看cpu个数和核数:cat /proc/cpuinfo
  • 显示当前分区:fdisk [option]
  • 查看系统当前时间:date

3. 系统用户操作命令

  • useradd 添加用户
  • adduser 添加用户
  • userdel 删除用户
  • passwd 设置密码
  • su 切换用户

useradd

参数说明:

-c<备注>  加上备注文字。备注文字会保存在passwd的备注栏位中。

-d<登入目录>  指定用户登入时的启始目录。

-D  变更预设值.

-e<有效期限>  指定帐号的有效期限。

-f<缓冲天数>  指定在密码过期后多少天即关闭该帐号。

-g<群组>  指定用户所属的群组。

-G<群组>  指定用户所属的附加群组。

-m  自动建立用户的登入目录。

-M  不要自动建立用户的登入目录。

-n  取消建立以用户名称为名的群组.

-r  建立系统帐号。

-s<shell>   指定用户登入后所使用的shell。

-u<uid>  指定用户ID。

实例1:添加一般用户

useradd tt

实例2:为添加的用户指定相应用户组

useradd -g root tt

实例3:创建一个系统用户

useradd -r tt

实例4:为新添加的用户指定home目录

ueseradd -d /home/myt tt

adduser

useradd和adduser区别如下:

  1.使用useradd时,如果后面不添加任何参数选项,例如:#sudo useradd test创建出来的用户将是默认“三无”用户:一无Home Directory,二无密码,三无系统Shell。

  2.使用adduser时,创建用户的过程更像是一种人机对话,系统会提示你输入各种信息,然后会根据这些信息帮你创建新用户。

userdel

命令参数:

-r 删除用户登入目录以及目录中所有文件

实例1:删除用户账号

userdel tt

实例2:删除用户账号及其根目录

userdel -r tt

实例3:删除用户时提示“user dd is currently used by process 8216”

先强制杀死进程,在删除用户

kill -9 8216

userdel -r dd

4. 防火墙相关设置

  • 安装:yum install firewalld
  • 启动:service firewalld start
  • 检查状态:service firewalld status
  • 关闭或禁用防火墙:service firewalld stop/disable

常用命令:

  • firewall-cmd
  • firewall-cmd --version 查看防火墙版本
  • firewall-cmd --help 查看帮助信息
  • firewall-cmd --state 查看状态

firewall能将不同的网络连接归类到不同的信任级别(即不同的zone)

zone是防火墙的一套规则,它决定了是否放行数据包

查看所有zone信息

firewall-cmd --get-zones

查看已被激活的zone信息

firewall-cmd --get-active-zones

查看指定接口的 Zone 信息

firewall-cmd --get-zone-of-interface=eth0

查看指定级别的接口

firewall-cmd --zone=public --list-interfaces

查看指定级别的所有信息,譬如 public

firewall-cmd --zone=public --list-all

查看默认zone

firewall-cmd --get-default-zone

查看所有zone的所有信息

firewall-cmd --list-all-zone

更多指令学习:https://blog.csdn.net/qq_36492368/article/details/80432259

5. 提权操作sudo和文件传输操作

  • 提权:sudo/visudo
  • 文件下载:wget/curl
  • 文件上传:scp

提权

  1. 用root账号或sudo执行visudo
  2. 找到“Allows people in group wheel to run all commands”
  3. 根据示例,添加要提权的用户组
  4. 如“%tt ALL=(ALL) ALL”
  5. 保存并退出

sudo的工作过程如下:

  1. 当用户执行sudo时,系统会主动寻找/etc/sudoers文件,判断该用户是否有执行sudo的权限
  2. 确认用户具有可执行sudo的权限后,让用户输入用户自己的密码确认
  3. 若密码输入成功,则开始执行sudo后续的命令

文件下载

curl由于可自定义各种请求参数所以在模拟web请求方面更擅长;wget由于支持ftp和Recursive所以在下载文件方面更擅长。类比的话curl是浏览器,而wget是迅雷9。

实例1:下载文件

curl -O http://man.linuxde.net/text.iso #O大写,不用O只是打印内容不会下载

wget http://www.linuxde.net/text.iso #不用参数,直接下载文件

实例2:下载文件并重命名

curl -o rename.iso http://man.linuxde.net/text.iso #o小写

wget -O rename.zip http://www.linuxde.net/text.iso #O大写

实例3:wget--打包下载网站

wget --mirror -p --convert-links -P /var/www/html http://man.linuxde.net/

文件上传

Linux本地上传下载文件到服务器

上传dd.log文件到服务器的tmp目录:scp dd.log [email protected]:/tmp/

下载服务器temp目录下的dd.log文件到本地:scp [email protected]:/tmp/dd.log ./

Windows本地上传下载文件到服务器

在服务器安装:yum install lrzsz

6. 文件和文件夹操作命令

6.1 Linux文件目录结构

  • 根目录 /
  • home目录 /home
  • 当前用户的home目录 ~
  • 临时目录 /temp
  • 配置目录 /etc
  • 用户程序目录 /usr

6.2 文件基本操作

  • ls:查看目录下的文件
  • cd:进入目录
  • touch:新建文件
  • mkdir:新建文件夹
  • rm:删除文件和文件夹
  • cp:复制
  • mv:移动(剪切)或重命名文件或文件夹
  • pwd:显示路径
  • tree:用查看目录的树形结构
  • stat:查看文件或文件夹详细信息
  • man:查看命令操作手册,如man stat

ls

ls 显示当前下面的文件及文件夹

ls -a 显示当前目录下的所有文件及文件夹包括隐藏的.和..等

ls -al (ll) 显示当前目录下的所有文件及文件夹包括隐藏的.和..等并显示详细信息,详细信息包括大小,属组,创建时间

cd

cd / 进入根目录

cd ~ 进入home目录

cd .. 返回上一级目录

cd - 返回上一次所在目录

touch

语法: touch  [选项] [文件名] | [文件名]

命令参数:

    -a  修改文件的access(访问)时间.

    -c  或--no-create  不创建不存在的文件。

    -m 修改Modify(修改)时间

    -r  file  使用指定file文件的时间戳(access,modify)更新文件的时间戳(access,modify)

注: access 表示最后一次访问(仅仅是访问,没有改动)文件的时间

     modify 表示最后一次修改文件的时间

     change 表示最后一次对文件属性改变的时间,包括权限,大小,属性等等

实例1:同时创建多个文件

touch new.text new2.txt

实例2:如果文件不存在,则不创建(如果文件存在,则更新文件access、modify、change时间为当前)

touch -c new.text

实例3:修改文件时间戳为当前时间

touch -a new

mkdir

命令参数:

-m 设置目录访问权限,默认是777(不能给已经创建的目录设置权限)

-p 创建级联目录时使用

-v 查看创建目录的过程信息

实例1:创建多个目录

mkdir cep dod log

或者多个目录用大括号({})括起来,并用逗号分隔。

/home/dodv81/baklog>mkdir {cep,dod,testlog} /home/dodv81/baklog>ls cep dod testlog

逗号前后不能有空白,否则将会创建出下面目录:

/home/dodv81/baklog>mkdir {cep, dod, testlog} /home/dodv81/baklog>ls {cep, dod, testlog}

实例2:创建级联目录,同一目录下的子目录放在大括号中,并用逗号分隔。

/home/dodv81>mkdir -p baklog/{bin,lib,log/{cep,dod,testlog}}

实例3:在创建目录时设置权限

mkdir -m=r test

rm

命令参数:

-d  删除可能仍有数据的目录 (只限超级用户)

-f  强制删除

-i  进行任何删除操作前必须先确认

-r 删除文件夹时,同时删除文件夹下所有文件

-v 显示详细进行的步骤

rm -rf filename 强制删除所有文件且不提示

rm -i filename 进行删除前--确认

cp

语法: cp 源文件 目标文件

命令参数:

-r 复制文件夹时添加该参数,用于递归复制该文件夹下的文件及文件夹,否则报错

-l 对源文件建立硬链接,而非复制文件

-s 对源文件简历软链接,而非复制文件

-u 只有源文件比目标文件新时,才会将源文件复制给目标文件,否则,及时执行了命令,也不会执行复制。

-a 在保留原文件属性的前提下复制文件,-r复制目录后其文件属性会发生变化。想要使得复制之后的目录和原目录完全一样,可以使用-a参数

-i 覆盖文件前询问用户(默认会覆盖且不提示)

实例1:复制文件并改名(如果目标文件夹不存在,则创建;若存在则把源文件复制到目标文件夹下)

cp -r baklog/daylog ./ (把baklog下的daylog复制到当前目录)

cp -r baklog baklogg

cp -r baklog baklogg/bakfile(复制文件夹baklog到baklogg下并改名为bakfile)

实例2:复制多个文件或文件夹到目标文件夹下(目标文件夹需已存在)

cp 1.log baklog baklogg/balog(复制1.log和baklog到baklogg下的balog目录中)

实例3:只要源文件比目标文件新时复制

cp -uv 1.log 2.log

实例4:创建文件的软链接

cp -s 1.log 2.log(创建文件的软链接)

cp -sr baklog/log loggg(创建文件夹的软链接要加-r参数)

注:软链接和硬链接的区别:当源文件被删除,软件连无法再访问,而硬链接仍能正常访问

mv

命令参数:

-b :若需覆盖文件,则覆盖前先行备份。 

-f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖;

-i :若目标文件 (destination) 已经存在时,就会询问是否覆盖!

-u :若目标文件已经存在,且 source 比较新,才会更新(update)

实例1:重命名文件或文件

mv 1.log 1.logg

mv baklog logbak

实例2:移动文件

mv 2.log 4.log log

pwd

命令参数:

-L 显示当前的路径,有链接文件时,直接显示链接文件的路径(默认参数)

-P 显示当前的路径,有链接文件时,不使用链接路径,直接显示连接文件所指向的文件

tree

命令参数:

-a 显示所有文件和目录,不加-a则不显示隐藏目录

-d 只显示文件夹,不显示文件

-f 在每个文件或目录之前,显示完整的相对路径名称

-L n 只显示 n 层目录 (n 为数字)

-dirsfirst 目录显示在前,文件显示在后

-r 以相反次序排列

实例1:显示当前目录下文件结构

tree

tree baklog(显示指定文件夹下的结构)

实例2:只显示文件夹,不显示文件

tree -d

实例3:只显示2层结构

tree -L 2

6.3 文本编辑器vim

安装:yum install vim

vim快捷键学习:vim 菜鸟教程

基本上 vi/vim 共分为三种模式,分别是命令模式(Command mode),输入模式(Insert mode)和底线命令模式(Last line mode)

刚进入文件时,便进入了命令模式。

  • 命令模式下切换到输入模式:i
  • 命令模式下切换到底线模式:英文冒号:
  • 输入模式切换到命令模式:esc

新建文件并打开:vim imooc

命令模式下保存并强制退出::wq!

快速定位到行首:gg

快速定位到行尾:G

删除光标所在行:dd

返回上一次编辑:u

复制光标所在行:yy

粘贴:p

在底线模式下搜索:/字符串

vim打开文件后暂存在内存中

6.4 文件权限421,777

文件权限分为

r:可读 ,权重为4

w:可写,权重为2

x:可执行,权重为1

drwxr-xr-x

第一组:表示文件所有者的权限

第二组:表示文件所属组的权限

第三组:表示其他人的权限

6.5 文件搜索、查找。读取

  • tail:从文件尾部开始读 Ctrl+C退出
  • head:从文件头部读
  • cat:读取整个文件
  • more:分页读取 enter键到下一页
  • less:可控分页
  • grep:搜索关键字(查找文件的内容,不能用于搜索文件)
  • find:查找文件(不能用于搜索文件里的内容)
  • wc:统计个数

tail

命令参数:

-f 把文件最后10行内容显示在屏幕上,并不断刷新,用于查阅正在改变的日志文件

-n <行数n> 显示文件的尾部n行内容

-q 不显示处理信息

-v 显示详细的处理信息

-c<数目> 显示的字节数

--pid=PID 与-f合用,表示在进程ID,PID死掉之后结束

-q, --quiet, --silent 从不输出给出文件名的首部

-s, --sleep-interval=S 与-f合用,表示在每次反复的间隔休眠S秒

实例1:显示文件最后10行

tail 2.log

实例2:监控文件尾部内容

tail -f 2.log(按Ctrl+C退出)

实例3:显示文件最后20行

tail -n 20

head

命令参数:

-n 显示文件的前n行

实例1:显示文件的前20行

head -n 20 2.log

cat

命令参数:

-n 对输出的所有行编号,由1开始对所有输出的行数编号

-b 和 -n 相似,只不过对于空白行不编号

-s  当遇到有连续两行以上的空白行,就代换为一行的空白行

-v 使用 ^ 和 M- 引用,除了 LFD 和 TAB 之外

实例1:一次显示整个文件

cat 2.log

实例2:对输出的行进行编号

cat -n 2.log

实例3:从键盘创建一个文件

cat >10.log(回车后可以编辑文件内容,最后按ctrl+c保存)

实例4:将几个文件合并为一个文件

cat 1.log 2.log > 3.log(3.log可以是已存在的文件,也可以是不存在的;不存时创建)

实例5:把2.log的文件内容加上行号后输入2.txt文件中

cat -n 2.log > 2.txt(会覆盖原来2.txt中的内容)

实例6:把2.log的文件内容加上行号后追加到2.txt文件结尾

cat -n 2.log >> 2.txt(不会覆盖原来2.txt中的内容)

more

more功能类似 cat ,cat命令是整个文件的内容从上到下显示在屏幕上。 more会以一页一页的显示方便使用者逐页阅读,而最基本的指令就是按空白键(space)就往下一页显示,按 b 键就会往回(back)一页显示,而且还有搜寻字串的功能 。more命令从前向后读取文件,因此在启动时就加载整个文件

命令参数:

+n  从笫n行开始显示

-n  定义屏幕大小为n行

+/pattern 在每个档案显示前搜寻该字串(pattern),然后从该字串前两行之后开始显示  

-c  从顶部清屏,然后显示

-d  提示“Press space to continue,’q’ to quit(按空格键继续,按q键退出)”,禁用响铃功能

-l  忽略Ctrl+l(换页)字符

-p  通过清除窗口而不是滚屏来对文件进行换页,与-c选项相似

-s  把连续的多个空行显示为一行

-u  把文件内容中的下画线去掉

常用操作命令:

Enter 向下n行,需要定义。默认为1行

Ctrl+F 向下滚动一屏

space 向下滚动一屏

Ctrl+B 返回上一屏

= 输出当前行的行号

:f 输出文件名和当前行的行号

V 调用vi编辑器

! 调用Shell,并执行命令

q 退出more

实例1:当一个目录下的文件内容太多,可以用more来分页显示。这得和管道 | 结合起来

cat test.log | more -5 "|"表示管道,作用是可以将前面命令的输出当做后面命令的输入

实例2:从文件中查找第一个出现"liu"字符串的行,并从该处前两行开始显示输出

more +/liu test.log

less

在 more 的时候,我们并没有办法向前面翻,但 less 可以使用 [pageup] [pagedown] 等按键的功能来往前往后翻看文件。除此之外,在 less 可以向下搜,也可以向上搜。而且 less 在查看之前不会加载整个文件。

命令参数:

-N  显示每行的行号

-o <文件名> 将less 输出的内容在指定文件中保存起来

/字符串:向下搜索“字符串”的功能

?字符串:向上搜索“字符串”的功能

-b <缓冲区大小> 设置缓冲区的大小

-e  当文件显示结束后,自动离开

-f  强迫打开特殊文件,例如外围设备代号、目录和二进制文件

-g  只标志最后搜索的关键词

-i  忽略搜索时的大小写

-m  显示类似more命令的百分比

-Q  不使用警告音

-s  显示连续空行为一行

-S  行过长时间将超出部分舍弃

-x <数字> 将“tab”键显示为规定的数字空格

常用操作命令:

b  向后翻一页

d  向后翻半页

u  向前滚动半页

y  向前滚动一行

空格键 滚动一行

回车键 滚动一页

h  显示帮助界面

v 使用配置的编辑器编辑当前文件

Q  退出less 命令

[pagedown]: 向下翻动一页

[pageup]:   向上翻动一页

:e 当正在浏览一个文件时,用:e命令打开另一个文件

实例1:ps查看进程信息并通过less分页显示同时显示行号

ps -ef|less -N

实例2:浏览多个文件

less test2.log test.log(用 :n 和 :p 来回切换。)

grep

命令参数:

-r 递归查找。当指定要查找的是目录而非文件时,必须使用这项参数,否则grep指令将回报信息并停止动作

-v 反向查找不包含匹配文本的所有行

-c 计算符合样式的列数。

-i 忽略字符大小写的差别

-n 显示搜出的内容所在行数

–exclude-dir 排除搜索目录,放在目标目录后

实例1:查找以file结尾的文件中,包含 test 字符串的行并打印

grep test *file

grep -rn "123" ./(在当前目录下递归搜索"123"并打印所在行数)

实例2:以递归的方式查找包含"update"的文件。

grep -r "update" /etc/acpi

实例3:反向查找。打印后缀test结尾的文件,不含"test"的行

grep -v "test" *test*

实例4:排除搜索目录

grep -r -n "XXXX" ./ –exclude-dir=framework (不搜索当前目录下的framework)

grep -r -n "XXXX" ./ –exclude-dir={framework,device,kernel-3.10} (不搜索framework,device,kernel-3.10 三个目录下的文件)

grep -r -n "XXXX" ./framework –exclude=*.{hello,raindi} (在framework目录下排除搜索扩展名为hello和raindi的文件)

find

find命令用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。

find 根据下列规则判断 path 和 expression:在命令列上第一个 - ( ) 和 ! 之前的部份为 path,之后的是 expression。如果 path 是空字串则使用目前路径,如果 expression 是空字串则使用 -print 为预设 expression。

命令参数:

expression 中可使用的选项有二三十个之多,在此只介绍最常用的部份。

-mount, -xdev : 只检查和指定目录在同一个文件系统下的文件,避免列出其它文件系统中的文件

-amin n : 在过去 n 分钟内被读取过

-anewer file : 比文件 file 更晚被读取过的文件

-atime n : 在过去n天内被读取过的文件

-cmin n : 在过去 n 分钟内被修改过

-cnewer file :比文件 file 更新的文件

-ctime n : 在过去n天内被修改过的文件

-empty : 空的文件

-gid n or -group name : gid 是 n 或是 group 名称是 name

-ipath p, -path p : 路径名称符合 p 的文件,ipath 会忽略大小写

-name name, -iname name : 文件名称符合 name 的文件。iname 会忽略大小写

-size n : 文件大小 是 n 单位,b 代表 512 位元组的区块,c 表示字元数,k 表示 kilo bytes,w 是二个位元组。

-type c : 文件类型是 c 的文件,文件有以下几种类型

    • d: 目录
    • c: 字型装置文件
    • b: 区块装置文件
    • p: 具名贮列
    • f: 一般文件
    • l: 符号连结
    • s: socket

-pid n : process id 是 n 的文件

实例1:查找目前目录及其子目录下所有延伸档名是 c 的文件

find . -name "*.c"

实例2:查找当前目录下的所有一般文件

find . -type f

实例3:目前目录及其子目录下所有最近 20 天内更新过的文件列出

find . -ctime -20

wc

wc指令我们可以计算文件的Byte数、字数、或是列数,若不指定文件名称、或是所给予的文件名为"-",则wc指令会从标准输入设备读取数据。

在默认的情况下,wc将计算指定文件的行数、字数,以及字节数。使用的命令为:wc testfile

命令参数:

-c 只显示Bytes数。

-l 只显示行数。

-w 只显示字数。

--help 在线帮助。

--version 显示版本信息。

实例1:统计文件的行数、字数以及字节数

wc testfile

输出:3 92 598 testfile (testfile文件的行数为3、单词数92、字节数598 )

实例2:同时统计testfile、testfile_1、testfile_2文件的信息

wc testfile testfile_1 testfile_2

输出:

3 92 598 testfile #第一个文件行数为3、单词数92、字节数598 9 18 78 testfile_1 #第二个文件的行数为9、单词数18、字节数78 3 6 32 testfile_2 #第三个文件的行数为3、单词数6、字节数32 15 116 708 total

6.6 文件压缩与解压

打包:将一大堆文件或目录变成一个总的文件【tar命令】

压缩:将一个大的文件通过一些压缩算法变成一个小文件【gzip,bzip2等】

Linux中很多压缩程序只能针对一个文件进行压缩,这样当你想要压缩一大堆文件时,你得将这一大堆文件先打成一个包(tar命令),然后再用压缩程序进行压缩(gzip bzip2命令)。

习惯上以.tar后缀代表tar包,用xxx.tar.gz或.tgz代表gzip压缩过的tar文件,用.tar.bz2代表bzip2压缩过的tar文件。

语法:tar [主选项+辅选项] 文件或目录

使用该命令时,主选项必须有,它告诉tar要做什么事情,辅选项是辅助使用的,可以选用。

主选项:【一条命令以下5个参数只能有一个】

-c: --create 新建一个压缩文档,即打包

-x: --extract,--get解压文件

-t: --list,查看压缩文档里的所有内容

-r:--append 向压缩文档里追加文件

-u:--update 更新原压缩包中的文件

辅助选项:

-z:是否同时具有gzip的属性?即是否需要用gzip压缩或解压?一般格式为xxx.tar.gz或xx.tgz

-j:是否同时具有bzip2的属性?即是否需要用bzip2压缩或解压?一般格式为xx.tar.bz2

-v:显示操作过程!这个参数很常用

-f:使用文档名,注意,在f之后要立即接文档名,不要再加其他参数!

-C:切换到指定目录、解压到指定目录

--exclude FILE:在压缩过程中,不要将FILE打包

常用指令:

tar -cvf|tvf|xvf

tar -czvf|tzvf|xzvf

实例1:将img1和img2两个文件夹打包成img.tar,仅打包不压缩

tar -cvf img.tar img1 img2(Create img.tar from files img1 and img2.)

实例2:将img1和img2两个文件夹打包成img.tar.gz,打包后,以gzip压缩

tar -zcvf img.tar.gz img1 img2

实例3:不解压的情况下查看img.tar中的所有内容

tar -tf img.tar

实例4:不解压的情况下查看img.tar.gz的所有内容,加-v参数查看详细信息

tar -tf img.tar.gz

实例5:解压img.tar到指定目录dop

tar -xf img.tar -C dop

实例6:只解压img.tar里的指定文件

tar -xf img.tar 2.log(如需指定多个,用空格隔开)

猜你喜欢

转载自blog.csdn.net/qq_36626686/article/details/88015896