zl程序教程

您现在的位置是:首页 >  系统

当前栏目

Linux基础笔记4 | 必备基础命令

2023-09-14 09:15:28 时间

绝对路径:以根目录为参照物,从根目录开始,一级一级进入目录

相对路径:以当前目录作为参照物,进行目录查找

在这里插入图片描述

1.1 目录操作

ls

显示目录下的内容

# 查看/etc/passwd文件/文件夹下的信息
ls -l /etc/passwd
# 查看当前文件夹下的目录及文件信息
ls -l
# 按照时间排序显示文件信息(升序)
ls -lrt
# 按照时间排序显示文件信息(降序)
ls -lat
# 查看当前目录下包含以.开始的隐藏文件与目录信息
ls -a
# 以人性化显示当前目录下的容量信息
ls -lh

cd

切换所在目录

# 进入目录
cd /etc
# 进入家目录
cd ~
# 进入上次操作的目录
cd -
# 进入上一级目录
cd ..
# 进入当前目录
cd .
# 进入上一级目录下的子目录
cd ../log

pwd

查询所在的目录

# 显示目录所在的目录的绝对路径
pwd

mkdir

创建空目录

# 在当前目录下创建一个test目录
mkdir test
# 在当前目录下创建2个目录:test1 test2
mkdir test1 test2
# 在当前目录下创建多个有规则目录名的目录:test2 test3 test4
mkdir test{2..4}
# 递归创建目录:会自动创建系统中不存在的目录层级
mkdir -p /tmp/test1/test2/test3

rmdir

删除空目录

# 删除当前目录下的一个空目录(不会提醒你确认,直接删除)
rmdir test2
# 递归删除空目录(目录下如果有文件,就会删除失败,但是不影响空目录的删除)
rmdir -p /tmp/test1/test2/test3

1.2 文件操作

touch

创建空文件、修改文件时间戳

# 在当前目录创建一个test.txt文件
touch test.txt
# 将test1.txt和test2.txt的时间戳信息保持一致:test1.txt为准/状态修改时间不一致
touch -r test1.txt test2.txt

stat

查看文件详细信息(文件大小、权限、文件系统信息、最近访问时间、数据修改时间、状态修改时间)

  • 访问时间(Access Time,简称 atime):只要文件的内容被读取,访问时间就会更新。例如,使用 cat 命令可以查看文件的内容,此时文件的访问时间就会发生改变
  • 数据修改时间(Modify Time,简称 mtime):当文件的内容数据发生改变,此文件的数据修改时间就会跟着相应改变
  • 状态修改时间(Change Time,简称 ctime):当文件的状态发生变化,就会相应改变这个时间。比如说,如果文件的权限或者属性发生改变,此时间就会相应改变
# 查看当前目录下 test.txt 文件的详细信息
stat test.txt

cat

查看文件内容

# 查看test.txt文件的内容
cat test.txt
# 查看test.txt文件内容并显示行号
cat -n test.txt
# 按顺序打印两个文件的内容
cat test1.txt test2.txt

more

分屏显示文件内容

  • 空格键:向下翻页
  • b:向上翻页
  • 回车键:向下滚动一行
  • /字符串:搜索指定的字符串
  • q:退出
# 分屏交互查看messages文件
more /var/log/messages

less

分行显示文件内容

  • b:向后翻一页
  • d:向后翻半页
  • h:显示帮助界面
  • q:退出less 命令
  • u:向前滚动半页
  • y:向前滚动一行
  • 空格键:滚动一行
  • 回车键:滚动一页
  • pagedown: 向下翻动一页
  • pageup: 向上翻动一页
# 分行交互查看messages文件
less /var/log/messages

head

显示文件开头的内容:默认前10行内容

# 查看当前目录下messages文件的前10行
head messages
# 查看当前目录下messages文件的前20行
head -n 20 messages
# 查看当前目录下messages文件的前10行并在首行显示文件名
head -v messages

tail

显示文件结尾的内容:默认后10行内容(注意不是从最后一行显示,是从倒数第10行到结尾)

# 查看当前目录下messages文件的后10行
tail messages
# 查看当前目录下messages文件的后20行
tail -n 20 messages
# 动态显示当前目录下messages文件的新增内容(会先打印出后10行内容,按ctrl+c退出动态显示)
tail -f messages

ln

建立文件之间的链接关系

软链接:有点像windows下的快捷方式;删除源文件会影响目标文件;只是维护了一个指向关系而已

硬链接:等于cp -p 加同步更新;删除源文件不影响目标文件

  • s:建立软链接文件
  • f:强制建立链接关系,如果目标文件存在,会删除目标文件后建立链接文件
# 以1.txt为源文件,建立软链接(目标文件2.txt不能存在)
ln -s 1.txt 2.txt
# 以1.txt为源文件创建硬链接
ln 1.txt 2.txt

1.3 目录和文件操作

rm

删除文件/目录

# 强制删除当前目录下的test1.txt文件(不会询问)
rm -f test1.txt
# 删除当前目录下的test1.txt文件(会询问)
rm test1.txt
# 递归删除当前test1目录下的所有东西(不包括test1目录本身)
rm -rf test1/*
# 删除当前目录下的test1目录下的所有东西,包括test1目录本身(谨慎使用)
rm -rf test1

cp

复制文件或目录

# 将/etc/passwd文件复制到当前目录下
cp /etc/passwd .
# 将/etc/passwd文件复制到/tmp目录下
cp /etc/passwd /tmp
# 将/etc/passwd文件复制到/tmp目录下,并重命名为passwd.bak
cp /etc/passwd /tmp/passwd.bak
# 将/etc目录下的所有文件及目录复制到/tmp目录下并保留相关属性
cp -a /etc /tmp
# 将/etc目录下的所有文件及目录复制到/tmp目录下重命名etcbak并保留相关属性
cp -a /etc /tmp/etcbak

mv

移动文件或改名

# 将当前目录下的文件test1.txt改成为test.txt
mv test1.txt test.txt
# 将当前目录下的文件test.txt移动到/var/log目录下
mv test.txt /var/log/
# 将当前目录下的文件test2.txt移动到/var/log目录下并重命名为:test2.txtbak
mv test2.txt /var/log/test2.txtbak
# 当前目录下的test2目录重命名为test2bak
mv test2 test2bak

1.4 权限操作

chmod

修改文件和目录的权限

# 赋予1.sh文件可执行权限
chmod +x 1.sh
# 递归赋予test目录下所有文件的可执行权限
chmod -R +x test
# 修改1.sh文件对应权限值
chmod 444 1.sh

chown

修改文件或者文件夹属主及属组

# 修改1.sh文件的属组为whale组
chown :whale 1.sh
# 修改1.sh文件的属主为whale用户
chown whale 1.sh
# 同时修改1.sh文件的属主及属组为root用户和root组
chown root:root 1.sh
# 递归设置test目录下的所有文件属主和属组
chown -R whale:whale test

umask

系统默认权限值

# 查看系统默认权限值
umask
# 八进制显示默认权限值
umask -S

1.5 命令帮助

man

显示联机帮助手册

# 查看cat命令的帮助信息
man cat
# 查看cat命令是干什么的
man -f cat

info

完整资料的帮助信息

# 查看cat命令的完整资料
info cat

help

获取shell内置命令的帮助信息

# 查看内置命令cd的帮助信息
help cd
# 查看cd命令是否属于shell内置命令
type cd

–help

使用 --help 选项来查看帮助,绝大多数有效

# 查看awk命令的帮助信息
awk --help

1.6 搜索命令

whereis

搜索系统命令的命令:搜索命令的二进制文件路径、源文件、帮助文档路径

# 搜索cat命令的相关文件的路径
whereis cat

which

搜索系统命令的命令,包括别名

# 搜索rm相关的信息(别名信息也能显示出来)
which rm

locate

按照文件名搜索普通文件的命令:默认或关闭了的

find

在对应目录中搜索文件

# 在/etc目录下搜索一个文件名为passwd的文件
find /etc -name passwd
# 查找当前目录下的hello.doc的文件信息
find -name hello.doc
# 查找/var/log目录下以.log结尾的文件信息
find /var/log -name *.log
# 查看整个系统中所有的空文件
find / -empty
# 查找整个系统中所属组为whale的文件
find / -group whale
# 查找/var/log目录下3天内被修改过的文件
find /var/log -mtime -3 
# 查找/var/log目录下3天前被修改过的文件
find /var/log -mtime +3
# 查找/var/log目录下3天前的当天被修改过的文件
find /var/log -mtime 3
# 查找/var/log目录下大于1MB的文件
find /var/log -size +1M
# 查找/var/log目录下的普通文件
find /var/log -type f
# 查找属主为whale的文件
find / -user whale
# 查找/var/log目录下大于1MB的文件后列出文件的详细信息
find /var/log -size +1M -exec ls -lh {} \;
# 查找在/tmp目录下属主为whale的文件后进行删除
find /tmp -user whale -exec rm -rf {} \;

1.7 压缩解压命令

zip

“.zip”的压缩方式:压缩文件或目录

(默认未安装此命令,centos 7可使用yum install -y zip进行yum在线安装)

# 压缩当前目录下的test3.txt和test4.txt文件,压缩包名称为:test.zip
zip test.zip test3.txt test4.txt
# 压缩当前目录下的test4目录
zip -r test4.zip test4

unzip

提取压缩中的文件

(默认未安装,centos 7可使用yum install -y unzip进行yum在线安装)

# 将test.zip解压缩在当前目录
unzip test.zip
# 将test.zip解压缩在指定目录/tmp/test4目录下
unzip -d /tmp/test4 test.zip

gzip

“.gz”格式的压缩方式:压缩文件或者目录

# 压缩文件test3.txt(文件本身压缩后就不存在了,会删除源文件)
gzip test3.txt
# 解压缩test3.txt.gz文件
gzip -d test3.txt.gz
# 压缩目录test2bak:不对目录做压缩,只对目录下的文件递归去做压缩
gzip -r test2bak

bzip2

".bz2"压缩格式

(默认未安装,centos 7可使用yum install -y bzip2进行yum在线安装)

# 压缩test3.txt文件(源文件会删除)
bzip2 test3.txt
# 解压test3.txt.bz2文件
bzip2 -d test3.txt.bz2
# 保留原文件压缩test3.txt文件
bzip2 -k test3.txt

tar

打包与解包文件,linux 下用的最多的一个解压缩命令

# 将目录/etc打包保存为:etcbak.tar
tar -cf etcbak.tar /etc/
# 将目录/etc打包保存为:etcbak.tar.gz
tar -czf etcbak.tar.gz /etc/
# 将目录/etc打包保存为:etcbak.tar.bz2
tar -cjf etcbak.tar.bz2 /etc/
# 将目录/tmp/test/etc打包后删除源文件
tar -czf ectbak.tar.gz /tmp/test/etc/ --remove-files
# 从打包文件中删除passwd文件
tar --delete etc/passwd -f etcbak.tar
# 查看打包文件的信息
tar -tf etcbak.tar
# 查看打包文件的详细信息
tar -tvf etcbak.tar
# 解压gz格式的打包文件在当前目录
tar -xzf etcbak.tar.gz
# 解压bz2格式的打包文件至当前目录
tar -xjf etcbak.tar.bz2
# 解压gz格式的打包文件至/tmp/test目录下
tar -xzf etcbak.tar.gz -C /tmp/test

1.8 关机重启操作

sync

刷新文件系统缓冲区;数据同步;强制将内存缓冲区中的数据立即写入磁盘中

# 强制同步内存缓冲区数据写入磁盘
sync

shutdown

安全关闭和重启 linux 系统的命令

# 2分钟后关闭linux系统
shutdown -h +2
# 12点准时重启Linux系统
shutdown -r 12:00
# 立即关闭linux系统
shutdown -h now 
# 立即重启linux系统
shutdown -r now

reboot/poweroff/halt

重启系统命令

# 立即重启系统
reboot
# 关机linux系统
halt
# 关机
poweroff

init

切换运行级别,如果级别存在的话

# 关机:级别0表示关机
init 0
# 重启:级别6表示重启
init 6

logout/exit

注销并退出当前用户窗口

# 注销登录
logout
# 注销登录
exit

1.9 常用网络操作

ifconfig

配置网络接口;命令如果不存在,需要安装net-tools:(centos 7可在线安装yum install -y net-tools

# 查看本机的IP信息
ifconfig
# 关闭eth0的网卡
ifconfig eth0 down
# 启动eth0的网卡
ifconfig eth0 up

ping

通过 ICMP 协议进行网络探测,测试网络中的主机通信情况

# ping4次IP地址
ping -c 192.168.204.101
# 探测192.168.204.255广播整个网段
ping -c  -b 192.168.204.255

netstat

网络状态查看:本机开启的端口、客户端连接(centos 7可进行在线安装yum install -y net-snmp net-tools

# 查看本机监听的端口信息
netstat -tuln
# 查看本机程序监听的端口信息
netstat -tulnp
# 查看目前所有的网络连接
netstat -an
# 查看目前所有的TCP连接
netstat -ant
# 查看目前所有的UDP连接
netstat -anu

write

向其他用户发送信息

# 向在远程终端1登录的whale用户发送信息,使用ctrl+D快捷键保存发送的数据
write whale pts/1

wall

给所有登录用户发送信息,包括本身

# 向所有用户发送信息:helloworld
wall "helloworld"

mail

向其他用户发送邮件

# 向whale用户发送邮件(交互式)
mail whale
# 查看收到的邮件
mail
# 将/var/log/messages文件发给whale用户
mail -s "这是邮件标题" whale < /var/log/messages

2.0 系统痕迹查看

w

查看系统中正在登陆的用户信息:命令查看的其实就是/var/run/utmp 文件

# 查看系统中目前在线的用户信息
w

who

简洁地显示目前登陆在线的用户:命令查看的其实就是/var/run/utmp 文件

# 显示目前系统在线的用户信息
who

last

查看系统所有登陆过系统的用户信息,记录了登陆前和登陆后的用户信息:命令查看的其实就是/var/log/wtmp 文件

# 查看系统登陆过系统的用户信息
last

lastlog

查看系统中用户最后一次登陆系统的时间:查看的其实就是/var/log/lastlog 文件

# 查看系统中用户最后一次登陆系统的时间
lastlog

lastb

查看错误登陆的信息:查看的其实就是/var/log/btmp 文件

# 查看错误登陆的信息
lastb

2.1 其他命令操作

echo

打印字符和回显

# 在命令行打印hello world
echo hello world
# 将内容追加到test.txt文件中(文件不存在时会自动创建该文件)
echo "hello world">>test.txt
# 将内容覆盖到test.txt文件中
echo "whale! hello world">test.txt
# 在命令行打印有颜色的hello world(红色)
echo -e "\033[31m hello world \033[0m"

df

磁盘分区查询

# 以人类可读的形式显示磁盘分区大小
df -h
# 查看所有文件系统的使用情况
df -ah
# 查看inode使用情况
df -i
# 只显示本机的文件系统使用情况
df -lh
# 强制使用1000查看使用情况,而非1024
df -H
# 查看使用文件系统信息前先进行同步动作
df --sync -h

du

查看文件在磁盘中的使用量

# 查看当前目录下各文件夹大小占比
du -sh *
# 查看当前目录下所有文件的大小量
du -ah *