Pre-Lesson 6

一、shell

1.概述

1.1概念

Linux 作为一个操作系统,称为 kernel,一般用户不能直接使用 kernel,而通过 kernel 的外壳程序 Shell 和 kernel 进行沟通。

Shell 作为外壳程序,包裹在 Linux 内核外层,是一个应用程序,通过一系列的 Linux命令对操作系统 发出相关治疗提供人际界面。它连接了用户和 Linux 内核,让用户更加高效、安全、低成本地使用 Linux 内核,这就是 Shell 的本质。bash 是 Shell 的一种。

Shell 命令的执行过程:

1.2常见的shell

  • Bourne Shell(/usr/bin/sh 或 /bin/sh)
  • Bourne Again Shell(/bin/bash)
  • C Shell(/usr/bin/csh)
  • K Shell(/usr/bin/ksh)
  • Shell for Root(/sbin/sh)

2.权限

2.1概念

权限是明确一件事情是否允许被特定的人做。Linux 权限能够指定谁可以对文件或目录执行什么操作。

Linux 下有两种用户,即超级用户和普通用户。超级用户(命令提示符是 #):可以在Linux系统下作任何事情,不受限制。普通用户(命令提示符是 $):在Linux下做有限的事情。

2.2权限管理

用户分类:文件拥有者User、文件所属者Group、其他Others

文件类型:

d:文件夹
-:普通文件(包括文本、各种静态库、可执行程序、源程序)
l:软链接(类似Windows的快捷方式)
b:块设备文件(例如硬盘、光驱等)
p:管道文件
c:字符设备文件(例如屏幕等串口设备)
s:套接口文件

2.3访问权限

r:read,对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限
w:write,对文件而言,具有修改文件内容的权限;对目录来说具有删除移动目录内文件的权限
x:execute,对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限

2.4权限的表示方法

(1)字符表示法
Linux表示说明
r--只读
-w-仅可写
--x仅可执行
rw-可读可写
-wx可写和可执行
r-x可读可执行
rwx可读可写可执行
---无权限

对于每一个文件来说,都有3种用户,且每种用户都有3种权限:

(2)八进制表示法
权限符号(读写执行)八进制二进制
r--4100
-w-2010
--x1001
rw-6110
-wx3011
r-x5101
rwx7111
---0000

使用ll -a,显示所有文件及其信息。

2.5权限的设置

root 不受任何权限限制,权限只限制普通用户。只有文件的拥有者和 root 可以设置文件的访问权限。

chmod 修改文件访问权限

chmod [参数] 权限 文件名

参数
+: 向权限范围增加权限代号所表示的权限
-: 向权限范围取消权限代号所表示的权限
=: 向权限范围赋予权限代号所表示的权限

2.6shell 编程注意事项

  • Shell 脚本名称命名一般为英文、大写、小写,后缀以 .sh 结尾
  • 不能使用特殊符号、空格
  • 首行需要 #!/bin/bash 开头
  • shell 脚本变量 不能以 数字、特殊符号开头,可以使用下划线 _ , 但不能用破折号 -
  • 设置变量,等号两侧不能有空格

二、Linux基础命令

用ifconfig或者ip addr查看ip地址,如果不能执行,会提示你安装相关软件。

点击XShell,打开后点击新建,输入名称和主机,点击连接,跳出是否保存密钥的提示,点击接受,然后设置账号与密码。

接通后切换到root账号,方便接下来的操作。

2.1文件相关

(1)查看文件夹大小

du -sh	# 查看当前文件夹大小
du -sh ./home	# 查看指定目录home大小

# du 增强版
ncdu

ncdu du的加强版,需要先安装一下,执行后直接打开新的窗口显示文件夹大小,按q退出。

(2)查看硬盘信息

df -h	# -h 以人类可读的方式来展示硬盘分区信息

(3)查看文件列表

ls	# 查看当前目录下的文件
ls -l # 以列表形式查看当前目录下的文件
ls -a	# 查看当前目录下所有文件,包括隐藏文件
ls -h	# -h 以人类可读的方式来展示硬盘分区信息
ls /	# 查看指定根目录下的文件
ls -R:递归显示子目录结构;
ls -ld:显示目录和链接信息;

ll	# alias ll='ls -alF'
ll -h	# -h 以人类可读的方式来展示硬盘分区信息

ctrl+r:历史记录中所搜命令(输入命令中的任意一个字符)
Linux 中以 .开头的文件是隐藏文件;
pwd:显示当前目录

2.2网络相关

(1)测试 IP

ping是一个网络诊断工具,用于测试计算机与目标主机之间的网络连接。它通过发送 ICMP(Internet Control Message Protocol)回显请求报文并等待回显应答报文来实现这一功能。

ping [options] <destination>

其中 <destination>`是目标主机的IP地址或域名。[options]是可选的参数,可以用来控制 ping 命令的行为。

  • -c <count>:指定发送的 ICMP 回显请求报文的数量。默认情况下,ping命令会一直发送报文,直到用户手动停止。
  • -i <interval>:指定发送 ICMP 回显请求报文之间的时间间隔(以秒为单位)。默认值通常为1秒。
  • -s <size>:指定 ICMP 回显请求报文的大小(以字节为单位)。默认值通常为64字节。
  • -t <ttl>:指定 ICMP 回显请求报文的生存时间(Time to Live,TTL)。TTL 是一个计数器,用于限制报文在网络中的寿命。每经过一个路由器,TTL 减 1,当 TTL 减为 0 时,报文被丢弃。默认值通常为 64。
  • -v:显示详细的输出信息。

ping 命令的输出包括以下信息:

  • 发送的 ICMP 回显请求报文的数量。
  • 接收到的 ICMP 回显应答报文的数量。
  • 丢失的 ICMP 回显请求报文的数量(即未收到回显应答报文的数量)。
  • 往返时间(Round-Trip Time,RTT)的最小值、平均值和最大值。

(2) 测试远程端口

nc

nc(netcat)是一个用于网络通信的工具,也可以用来测试端口是否可用。

nc -zv example.com 80

# 如果端口可用,将看到类似于以下的输出:
# Connection to example.com port 80 [tcp/http] succeeded!

# 如果端口不可用,您将看到类似于以下的输出:
# nc: connect to example.com port 80 (tcp) failed: Connection refused

# 注意,nc 命令在某些Linux发行版中可能需要单独安装。在Debian和Ubuntu系统上,可以使用以下命令安装 nc:
apt install netcat

# 在CentOS和RHEL系统上,可以使用以下命令安装 nc:
yum install nc

talnet

telnet 是一个用于远程登录的工具,也可以用来测试端口是否可用。

要使用telnet命令测试远程服务器的端口号,请按照以下格式输入命令:

telnet <remote_host> <port>

telnet example.com 80

# 如果端口可用,您将看到类似于以下的输出:
# Trying 93.184.216.34...
# Connected to example.com.
# Escape character is '^]'.

# 如果端口不可用,您将看到类似于以下的输出:
# Trying 93.184.216.34...
# telnet: Unable to connect to remote host: Connection refused

输入quit即可退出回到root下。

3.基本命令

arch 显示机器的处理器架构
uname -m 显示机器的处理器架构
uname -r 显示正在使用的内核版本
dmidecode -q 显示硬件系统部件 - (SMBIOS / DMI)
hdparm -i /dev/hda 罗列一个磁盘的架构特性
hdparm -tT /dev/sda 在磁盘上执行测试性读取操作
cat /proc/cpuinfo 显示CPU info的信息
cat /proc/interrupts 显示中断
cat /proc/meminfo 校验内存使用
cat /proc/swaps 显示哪些swap被使用
cat /proc/version 显示内核的版本
cat /proc/net/dev 显示网络适配器及统计
cat /proc/mounts 显示已加载的文件系统
lspci -tv 罗列 PCI 设备
lsusb -tv 显示 USB 设备
date 显示系统日期
cal 2007 显示2007年的日历表
date 041217002007.00 设置日期和时间 - 月日时分年.秒
clock -w 将时间修改保存到 BIOS
free 用于查看系统内存,虚拟内存(交换空间)的大小占用情况
dmesg 显示系统诊断信息、操作系统版本号、物理内存的大小以及其它信息
tee 允许用户从标准输入读取数据,并将其复制到标准输出以及一个或多个文件中
ll | tee list.log

4.文件和目录

cd /home 进入 '/ home' 目录'
cd .. 返回上一级目录
cd ../.. 返回上两级目录
cd 进入个人的主目录
cd ~user1 进入个人的主目录
cd - 返回上次所在的目录
pwd 显示工作路径
ls 查看目录中的文件
ls -F 查看目录中的文件
ls -l 显示文件和目录的详细资料
ls -a 显示隐藏文件
ls *[0-9]* 显示包含数字的文件名和目录名
tree 显示文件和目录由根目录开始的树形结构(1)
lstree 显示文件和目录由根目录开始的树形结构(2)
mkdir dir1 创建一个叫做 'dir1' 的目录'
mkdir dir1 dir2 同时创建两个目录
mkdir -p /tmp/dir1/dir2 创建一个目录树
rm -f file1 删除一个叫做 'file1' 的文件'
rmdir dir1 删除一个叫做 'dir1' 的目录'
rm -rf dir1 删除一个叫做 'dir1' 的目录并同时删除其内容
rm -rf dir1 dir2 同时删除两个目录及它们的内容
mv dir1 new_dir 重命名/移动 一个目录
cp file1 file2 复制一个文件
cp dir/* . 复制一个目录下的所有文件到当前工作目录
cp -a /tmp/dir1 . 复制一个目录到当前工作目录
cp -a dir1 dir2 复制一个目录
ln -s file1 lnk1 创建一个指向文件或目录的软链接
ln file1 lnk1 创建一个指向文件或目录的物理链接
touch -t 0712250000 file1 修改一个文件或目录的时间戳 - (YYMMDDhhmm)
file file1 outputs the mime type of the file as text
iconv -l 列出已知的编码
iconv -f fromEncoding -t toEncoding inputFile > outputFile creates a new from the given input file by assuming it is encoded in fromEncoding and converting it to toEncoding.
find . -maxdepth 1 -name *.jpg -print -exec convert "{}" -resize 80x60 "thumbs/{}" \; batch resize files in the current directory and send them to a thumbnails directory (requires convert from Imagemagick)
lsof(list open files)是一个列出当前系统打开文件的工具。
lsof -i tcp 列出所有 tcp 网络连接信息
lsof -i udp 列出所有 udp 网络连接信息
lsof -i :3306 列出谁在使用某个端口
lsof -i udp:55 列出谁在使用某个特定的 udp 端口
lsof -i tcp:80 列出谁在使用特定的 tcp 端口

5.文件搜索

find / -name file1 从 '/' 开始进入根文件系统搜索文件和目录
find / -user user1 搜索属于用户 'user1' 的文件和目录
find /home/user1 -name \*.bin 在目录 '/ home/user1' 中搜索带有'.bin' 结尾的文件
find /usr/bin -type f -atime +100 搜索在过去100天内未被使用过的执行文件
find /usr/bin -type f -mtime -10 搜索在10天内被创建或者修改过的文件
find / -name \*.rpm -exec chmod 755 '{}' \; 搜索以 '.rpm' 结尾的文件并定义其权限
find / -xdev -name \*.rpm 搜索以 '.rpm' 结尾的文件,忽略光驱、捷盘等可移动设备
locate \*.ps 寻找以 '.ps' 结尾的文件 - 先运行 'updatedb' 命令,此命令需要预先建立数据库,数据库默认每天更新一次,可用 updatedb 命令手工建立、更新数据库
whereis halt 显示一个二进制文件、源码或man的位置
which halt 显示一个二进制文件或可执行文件的完整路径

5.打包和压缩文件

bunzip2 file1.bz2 解压一个叫做 'file1.bz2'的文件
bzip2 file1 压缩一个叫做 'file1' 的文件
gunzip file1.gz 解压一个叫做 'file1.gz'的文件
gzip file1 压缩一个叫做 'file1'的文件
gzip -9 file1 最大程度压缩
rar a file1.rar test_file 创建一个叫做 'file1.rar' 的包
rar a file1.rar file1 file2 dir1 同时压缩 'file1', 'file2' 以及目录 'dir1'
rar x file1.rar 解压rar包
unrar x file1.rar 解压rar包
tar -cvf archive.tar file1 创建一个非压缩的 tarball
tar -cvf archive.tar file1 file2 dir1 创建一个包含了 'file1', 'file2' 以及 'dir1'的档案文件
tar -tf archive.tar 显示一个包中的内容
tar -xvf archive.tar 释放一个包
tar -xvf archive.tar -C /tmp 将压缩包释放到 /tmp目录下
tar -cvfj archive.tar.bz2 dir1 创建一个bzip2格式的压缩包
tar -xvfj archive.tar.bz2 解压一个bzip2格式的压缩包
tar -cvfz archive.tar.gz dir1 创建一个gzip格式的压缩包
tar -xvfz archive.tar.gz 解压一个gzip格式的压缩包
zip file1.zip file1 创建一个zip格式的压缩包
zip -r file1.zip file1 file2 dir1 将几个文件和目录同时压缩成一个zip格式的压缩包
unzip file1.zip 解压一个zip格式压缩包

6.查看文件内容

cat file1 从第一个字节开始正向查看文件的内容
tac file1 从最后一行开始反向查看一个文件的内容
more file1 查看一个长文件的内容
less file1 类似于 'more' 命令,但是它允许在文件中和正向操作一样的反向操作
head -2 file1 查看一个文件的前两行
tail -2 file1 查看一个文件的最后两行
tail -f /var/log/messages 实时查看被添加到一个文件中的内容

思维导图如下

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值