Linux命令
文件管理
touch
作用:创建新的空文件
示例: touch 文件名称
mkdir
作用:创建目录
示例:mkdir 目录名称
目录管理
ls
作用:list 显示目录内容列表
参数:
-l # 列出当前目录可见文件详细信息
-h # 以人类可读方式显示目录及文件容量
-a # 列出所有文件(包括隐藏)的详细信息
-d # 将目录名像其它文件一样列出,而不是列
出它们的内容
-i # 输出文件前先输出文件系列号(即 i 节点
号: i-node number)
-r # 逆序排列
-t # 按时间信息排序(最近修改的文件显示在
最上面)
-m # 水平列出文件,每行尽可能多,相互用逗
号和一个空格分隔
-n # 打印文件的UID和GID
-F # 按照特殊字符对文件进行分类
* 表示普通的可执行文件;
/ 表示目录;
@ 表示符号链接;
| 表示FIFOs;
= 表示套接字 (sockets) ;
什么也没有则表示普通文件。
-R # 递归列出全部目录的内容
拓展知识:
蓝色:目录
绿色:可执行文件
白色:一般性文件,如文本文件,配置文件等
红色:压缩文件或归档文件
浅蓝色:链接文件
红色闪烁:链接文件存在问题
黄色:设备文件
青黄色:管道文件
cd
作用:切换用户当前工作目录。
示例:
cd # 进入用户家目录
cd / # 进入根目录
cd ~ # 进入 用户家目录
cd .. # 返回上级目录
(若当前目录为“/“,则执行完后还在“/";".."为
上级目录的意思)
cd ../.. # 返回上两级目录
pwd
作用:显示当前工作目录的绝对路径
示例:
[root@C7Server ~]#pwd
/root
文件处理
cat
作用:连接多个文件并打印到标准输出
参数:
-n # 显示行号
-b # 显示非空行行号
-E # 显示文件尾部$
拓展:
重定向符号
> 重定向覆盖输出符(数据从左边,覆盖写入到右边)
< 重定向覆盖输入符(数据从右边,覆盖写入到左边)
>> 重定向追加输出符(数据从左边,追加写入到右边)
<< 重定向覆盖输入符(数据从右边,追加写入到左边)
写入多行文本
# 追加写入多行内容
[root@server ~]#cat >> file.txt << EOF
> Hello World
> Hello China
> Hello Beijing
> EOF
# 说明:cat 先接收标准输入追加重定向 << 的
内容,然后在把接收的内容通过标准追加输出重
定向输出(此处也可以使用标准输出重定
向 > ) >> 文件,以此达到cat多行写入文件的目
的
tac
作用:以行为单位反向打印
示例:
[root@server ~]#seq 1 5
1
2
3
4
5
[root@server ~]#seq 1 5 |tac
5
4
3
2
1
more
作用:显示文本内容,每次显示一屏
选项:
- 按 `Space` 键:显示文本的下一屏内容。
- 按 `Enter` 键:只显示文本的下一行内容。
- 按`|`:接着输入一个模式,可以在文本中寻找
下一个相匹配的模式。
- 按H键:显示帮信息。
- 按B键:显示上一屏内容。
- 按Q键:退出more命令。
less
作用:分屏上下翻页浏览文件内容(推荐使用)
选项:
- 按 `Space` 键:显示文本的下一屏内容。
- 按 `Enter` 键:只显示文本的下一行内容。
- 按斜线符`/`:匹配字符
- 按`h`键:显示帮助信息。
- 按`b`键:显示上一行内容。
- 按`q`键:退出less命令。
head
作用: 显示文件的开头部分(默认显示开头10行)
参数: -n # 显示前NUM行而不是默认的10行
tail
作用:显示文件结尾部分
选项:
-f # 显示文件最近追加的内容
-F # 以文件名的方式监视文件的变化(即使文
件不存在)。
-c # 输出文件尾部的NUM(NUM为整数)个
字节内容
wc
作用:统计文件字节数、字数、行数
选项:
-c # 统计字节数,或--bytes:显示Bytes数。
-l # 统计行数,或--lines:显示列数。
-m # 统计字符数,或--chars:显示字符数。
-w # 统计字数,或--words:显示字数。一个
字被定义为由空白、跳格或换行字符分隔的字符
串。
拓展: 用wc命令怎么做到只打印统计数字不打印文件名
# 使用标准输入方式读取,不显示文件名
[root@server ~]#wc -l < /var/log/
messages
5189 # 未打印文件名称
# 直接读取文件,显示文件名
[root@server ~]#wc -l /var/log/messages
5189 /var/log/messages
# 使用标准输入方式读取,不显示文件名
[root@server ~]#wc -l < /var/log/
messages
5189 # 未打印文件名称
# 直接读取文件,显示文件名
[root@server ~]#wc -l /var/log/messages
5189 /var/log/messages
du
作用:显示每个文件和目录的磁盘使用空间
选项:
-c, --total # 除了显示个别目录或文件的大小
外,同时也显示所有目录或文件的总和。
-b, --bytes # 显示目录或文件大小时,以byte
为单位。
-h, --human-readable # 以K,M,G为单
位,提高信息的可读性。
-k, --kilobytes # 以KB(1024bytes)为单位输
出。
-m, --megabytes # 以MB为单位输出。
-s, --summarize # 仅显示总计,只列出最后
加总的值。
示例:
1. 当前目录文件从大到小排序 du -sh /* | sort -rh
2.只显示当前目录下子目录及文件大小 du -sh ./*
3.显示指定目录总大小 du -sh /etc
find
作用:在指定目录下查找文件
参数:
-a # 并且(满足两个条件)
-exec # 功能类似xargs,结尾需要\;
-ok # 此参数的效果和指定“-exec”类似,但在
执行指令之前会先询问用户,若回答“y”或“Y”,
则放弃执行命令;
-deleve # 删除查找的文件
-name # 根据指定字符串寻找文件
-iname # 忽略指定字符串的大小写
-type # 只寻找指定的文件类型
-user # 查找指定用户的文件或者目录
-maxdepth # 设置查找最大目录层级
示例:
1.在家目录下查找所有.txt文件 find /home/ -name "*.txt"
2.在系统中查找所有.txt和.pdf的文件 find / -type f -name "*.txt" -o -name "*.pdf"
3.在家目录下找出不是以.txt结尾的文件 find ~ -type f ! -name "*.txt"
4.在系统中找到1MB到5MB之间的文件 find / -type f -size +1M -a -size -5M
5.查找系统中jack用户的所有文件 find / -user jack
6.删除当前目录下所有.txt文件 find . -type f -name "*.txt" -delete
三剑客
grep
作用:强大的文本搜索工具
选项:
-E # 使用扩展正则表达式
-i # 忽略字符大小写的差别
-v # 反转查找
-w # 只显示匹配的单词
-o # 只输出文件中匹配到的部分
-l # 查找匹配文本在哪些文件中
-r同-R # 在多级目录中对文本进行递归搜索;
当指定要查找的是目录而非文件时,必须使用这
项参数,否则grep命令将回报信息并停止动作
-n # 显示匹配文本的行号
-e # 匹配多个条件(例:grep -e "My" -e "
linux" g4.txt )
示例:
1.多文件查找关键字 grep -i -w -n "hello" test1.txt test2.txt test3.txt
2.取反,打印匹配以外的行 grep -v "hello" test.txt
3.统计文件或者文本中包含匹配字符串的行数
[root@server ~]#cat test.txt
hello!linux
hello Hello
hello hello
[root@server ~]#grep -c hello test.txt
3
4.匹配多个条件 grep -wi -e nologin -e jack /etc/passwd
5.搜索多个文件并查找匹配文本在哪些文件中 grep -l "hello" g1.txt g2.txt g3.txt
6.在多级目录中对文本进行递归搜索 grep -r "hello" /etc/
7. 包括排除指定文件
# 只在目录中所有的.php和.html文件中递归搜索字符"main()"
grep "main()" . -r --include *.{php,html}
# 在搜索结果中排除所有README文件
grep "main()" . -r --exclude "README"
# 在搜索结果中排除filelist文件列表里的文件
grep "main()" . -r --exclude-from filelist
拓展:
管道符
作用:
它用于将前一个指令的输出作为后一个指令的输
入
示例:
1.检查进程 ps -ef | grep nginx
2.检查端口 netstat -lntup | grep sshd
3.统计系统.txt文件数量 find / -type f -name "*.txt" | wc -l
4.统计系统用户 cat /etc/passwd | wc -l
5.找出系统中所有的txt文件,然后再过滤出包含apple信息的txt
xargs 作用:
把其他命令给它的数据,传递给后面的命令作为
参数使用
用户管理
su
作用: 用于切换当前用户身份到其他用户身份,
变更时须输入所要变更的用户帐号与密码。
示例:su - 用户名
id
作用: 显示真实以及有效的用户和所在组的信息
示例: $ id username
useradd
作用:添加用户
选项:
-c # 新用户注释信息(passwd文件第五列)
-d # 指定新用户登陆的家目录
-e # 指定账户的有效期限
-f # 账户过期后多少天停用账户
-g # 指定用户所属的群组
-G # 指定用户所属的附加组
-m # 用户家目录如不存在,则自动创建
-M # 创建用户时,不创建家目录
-n # 不会创建与用户同名的用户组
-r # 建立系统账户,Red Hat额外增设选项
-s # 指定用户登陆系统的shell解释器
-u # 指定用户uid
示例:
需求:添加用户jack,注释信息为dev,uid为1300,添加到用户组root
以及devlinux组中,指定Shell为/bin/zsh,设置家目录为/dev01,账户
有效期至2022-10-01,过期后2天禁止登陆。
命令:useradd -c "dev" -u 1300 -G dev,devlinux -s /bin/zsh -d /dev01 -e "2022-10-01" -f 2
usermod
作用: 修改系统已经存在的用户的账号信息
选项:
-c <备注>:修改用户帐号的备注文字;
-d <登入目录>:修改用户登入时的目录,只是
修改/etc/passwd中用户的家目录配置信息,不
会自动创建新的家目录,通常和-m一起使用;
-m <移动用户家目录>:移动用户家目录到新的
位置,不能单独使用,一般与-d一起使用。
-e <有效期限>:修改帐号的有效期限;
-f <缓冲天数>:修改在用户过期后多少天即关
闭该帐号;
-g <群组>:修改用户所属的群组;
-G <群组>;修改用户所属的附加群组;
-l <帐号名称>:修改用户帐号名称;
-s <shell>:修改用户登入后所使用的shell;
-u <uid>:修改用户ID;
-L :锁定用户密码,使密码无效;
-U :解除密码锁定。
示例:
需求:修改用户jack的注释信息为“ops”;uid修改
为1600;附加组修改为root,devlinux,tech三个
组;shell修改为/bin/bash;家目录修改为/home/
jack;用户过期修改为2023-01-01;账户过期30天
后停权
命令:usermod -c "ops" -u 1600 -G roo,devlinux,tech -s /bin/bash -md /home/jack -e "2023-01-01" -f 30
usrdel
作用: 删除指定用户或该用户的文件
选项:
-f # 强制删除用户,即是用户当前是登陆状态
-r # 删除用户的同时,删除与用户相关的所有
文件
拓展:
在实际工作中尽量不要使用userdel删除用户,
而是采用在/etc/passwd里注释用户的方法,防
止用户误删带来的系统及服务不正常。读者需要
谨慎使用-r参数,因为-r参数会将用户家目录下
的所有目录和文件都删除,导致数据不可逆地丢
失。
用户组管理
groupadd
作用:创建新的用户组
选项: -g # 指定用户组的gid
示例: groupadd -g xxx newgroup
groupdel
作用:删除一个用户组
示例: groupdel groupname
groupmod
作用:更改gid以及组名
选项:
-g # 指定修改的GID
-n # 指定修改的新名称
gpasswd
作用:组文件的管理工具
选项:
-a:添加用户到组;
-d:从组删除用户;
-A:指定管理员;
-M:指定组成员和-A的用途差不多;
-r:删除密码;
-R:限制用户登入组,只有组中的成员才可以用
newgrp加入该组。
示例:
1.添加一个用户到组 $ gpasswd -a user_name group_name
2.从组中删除用户 $ gpasswd -d user_name group_name
权限管理
chown
作用:用来变更文件或目录的拥有者或所属群组
选项:
-R # 递归处理,将指定目录下的所有文件及子
目录一并处理;
-v # 显示指令执行过程;
-h # 只对符号连接的文件作修改,而不更改其
他任何相关文件
--reference=<参考文件或目录> # 把指定文件
或目录的拥有者与所属群组全部设成和参考文件
或目录的拥有者与所属群组相同;
示例:
1. 修改目录的属主和属组改成普通用户jack chown -R jack. /data
2. 修改文件的属组为devops chown .devops /data/test.txt
chmod
作用:用来变更文件或目录的权限
选项:
-R # --recursive:对目录以及目录下的文件
执行递归更改权限操作。
-c # --changes:当文件的权限更改时输出操
作信息。
-v # --verbose:无论文件是否更改了权限,
一律输出操作信息。
--preserve-root # 不能在根目录下递归操作。
--reference=RFILE # 使用参考文件或参考目录
RFILE的权限来设置目标文件或目录的权限。
示例:
1.添加属组用户的写权限 chmod g+w test.txt
2.删除其他用户的所有权限 chmod 0= test.txt
3.使所有用户都没有写权限 chmod a-w test.txt
4.属主具有所有权限,属组用户有读写权限,其
他用户只有读权限
方法1:chmod u=rwx,g=rw,o=w test.txt
方法2:chmod 764 test.txt
5.将目录以及目录下的文件都设置为所有用户拥
有读写权限
chmod -R a=rw,u=rwx directory_text
6.根据其他文件的权限设置文件权限 chmod --referce=/etc/passwd ./passwd.txt
7.递归为目录中的子目录和执行文件添加执行权
限,普通文件不添加执行权限
chmod -R +X directory_test
chgrp
作用:用来变更文件或目录的所属群组
选项:
-R # 递归式地改变指定目录及其下的所有子目
录和文件的所属的组
--reference=<参考文件或目录> # 把指定文件
或目录的所属群组全部设成和参考文件或目录的
所属群组相同
语法:
charp 组名 文件名
chgrp -R andy /usr/jack_data
系统安全
w 作用:显示当前登录用户信息
·USER:表示登录系统的用户。
·TTY:表示用户使用的TTY名称。
·FROM:表示用户从哪里登录进来,一般显示远
程登录主机的IP地址或主机名。
·LOGIN@:用户登录的日期和时间。
·IDLE:显示终端的空闲时间。
·JCPU:表示该终端上的所有进程及子进程使用
系统的总时间。
·PCPU:当前活动进程使用的系统时间。
·WHAT:当前用户执行的进程名称和选项。
last
作用:显示用户登陆成功的记录
示例:
1.查看系统重启时间 $ last reboot
2.查看指定用户登陆 $ last root
3.显示5条登陆用户信息 $ last -5
lastb
作用:显示用户登录失败的记录
拓展:
可以通过此命令的返回信息,了解服务器是否遭
到暴力破解
lastlog
作用:显示系统用户的最近登录记录
拓展: 通过此命令查看系统登陆是否异常
sudo
作用:以另一个用户身份执行命令
选项:
-l # 列出当前用户可以执行的命令
-u # 以指定用户的身份执行命令
-k # 清除时间戳,下次使用sudo需要输入密码
说明:使用此命令的用户,只有配置过/etc/
sudoers文件的用户才可以使用
visudo
作用:编辑sudoers文件
选项: -c # 检查文件语法是否正确
系统管理
shutdown
作用:用来执行系统关机的命令
示例:
shutdown -h now # 立即关机
shutdown -r now # 立即重启
系统设置
bash
作用:执行bash内建命令;重新加载用户环境变
量
示例:修改主机名后,可以使用bash命令使其生
效(而不必重新登陆终端)
env 作用:显示用户环境变量信息
set 作用:显示系统环境变量信息
hostname
作用:查看主机名
示例:hostname
hostnamectl
作用:查询或更改系统主机名
示例:hostname set-hostname 主机名
参数:
status # 显示当前主机名设置
set-hostname #
终端命令
echo
作用:输出指定的字符串或者变量
示例:echo “$PATH”
帮助命令
man
作用:显示在线帮助手册(常用)
示例:man cd
help
作用:该命令是bash内建命令,用于显示bash
内建命令的帮助信息
示例:cd --help
info
作用:info格式的帮助文档
示例:info cd
相关文档
评论