首页 > 系统相关 >Linux与Shell 第2天 实操、软件包管理、Shell编程

Linux与Shell 第2天 实操、软件包管理、Shell编程

时间:2024-04-17 16:15:21浏览次数:33  
标签:文件 Shell grep echo 实操 Linux array my

传送门

Linux与Shell 第0天 阿里云安装Ubuntu22.04以及桌面
Linux与Shell 第1天 文件目录、VIM、网络配置、系统管理、远程登录
Linux与Shell 第2天 实操、软件包管理、Shell编程

实操

菜鸟教程 Linux命令大全

文件目录

输入 作用
ls -a 显示隐藏文件
ls -lh 详细信息
cd - 回到上一次所在目录
cd -P 跳转到实际物理路径,而非快捷方式路径
mkdir/rmdir 创建/删除空目录
cp -r 递归复制
mv 移动
touch 新建文件,已存在则更新时间戳
cat/more/less 查看
head/tail -n (数字) 查看头部/尾部(数字)行
ln -s 文件路径 链接快捷方式名 “创建快捷方式”
history -c 清楚history里的记录

关于查看文件
cat 命令会将整个文件的内容一次性输出到屏幕上,适合查看较小的文本文件
more 命令也用于分页显示文件内容,但与 cat 不同,它会逐页显示文件内容,而不是一次性显示整个文件,空格查看下一页
less 允许向前和向后浏览文件内容,支持搜索、跳转等操作

输出重定向

ls -l > a.txt # 列表的内容写入文件 a.txt 中(覆盖写)
ls -l >> a.txt # 列表的内容写入文件 a.txt 中(末尾追加)
cat 文件1 > 文件2 #将文件1的内容覆盖到文件2

在 ll -lh 命令输出中
-rwxrw-r--
第一个字符指示文件类型:- 表示普通文件。d 表示目录。l 表示符号链接(symlink)。c 表示字符设备文件。b 表示块设备文件。s 表示套接字(socket)。p 表示命名管道(FIFO)
接下来的九个字符表示文件权限,按顺序分为所有者、所属组、其他用户

日期时间

输入 作用
date "+%s" 时间戳 秒级别
date "+%s%3N" 时间戳 毫秒级别 %3N是取纳秒部分的前三位作为毫秒
date "+%Y-%m-%d %A %H:%m:%S" 格式化显示 2024-03-20 星期三 16:03:24
cal 显示日历

用户管理

调整允许root登录

sudo vim /etc/ssh/sshd_config

PermitRootLogin no

sudo systemctl reload sshd
输入 作用
useradd 用户名 添加用户
userdel -r 用户名 删除用户,以及home下的文件夹
id 用户名 用户信息
groupadd 组名 新增组
groupdel 组名 删除组
groupmod -n 新组名 旧组名 新增组
usermod -g 组名 用户名 把用户改到组下
getent group | grep 组名 查看组信息

文件权限

chmod三个数字对应 所有者、所属组、其他用户
0-无权限、1-执行(x)、2-写入(w)、3-执行+写入(wx)、4-读取(r)、5-执行+读取(rx)、6-执行+读取(wr)、7-全部(rwx)

赋权对象
u: 所有者 (user) 默认是这个
g: 所属组 (group)
o: 其他用户 (others)
a: 所有用户

chmod -R 递归赋权文件夹下的内容

chown username \home\a.txt 改变所有者
chgrp usergroup \home\a.txt 改变所属组

搜索查找

find 目录 -name/user/size 文件名 | 按照名称/所属用户/文件大小 在目录下搜索文件 文件名*匹配多个?匹配单个
grep -A 10 "XXXXXXXX" httpClient.log 查日志内容前后十行

压缩

# 压缩单个文件
tar -zcvf nginx.tar.gz nginx.conf
# 压缩多个文件
tar -zcvf nginx.tar.gz nginx.conf nginx.conf2
# 解压文件
mkdir tmp
tar -zxvf nginx.tar.gz -C tmp/

磁盘分区

查看磁盘容量 df -h
查看文件占用磁盘块大小 du -h

进程线程

ps aux | grep XXX
ps -ef | grep XXX
pgrep -f "xx" 找某个进程的pid

top
-p 通过指定进程ID来仅仅监控某个进程的状态
-i 使top不显示任何闲置或者僵死进程
top交互操作

  • P 以CPU使用率排序,默认就是此项
  • M 以内存的使用率排序
  • N 以PID排序
  • q 退出top
  • u 根据指定用户进行过滤
  • k 直接杀死

根据端口号查询进程
netstat -tlnp | grep 3658
根据进程ID查询端口号占用情况
netstat -nlp | grep 12564 | grep LISTEN

软件包管理

Ubuntu换源

cat /etc/apt/sources.list
# 可能有cloud-init干涉 会提示去/etc/apt/sources.list.d添加自定义的源
touch /etc/apt/sources.list.d/mylist.list

常用命令

# CentOS
yum list | grep firefox
yum remove firefox
yum -y install firefox
# Ubuntu
apt search firefox
sudo apt remove firefox
sudo apt install firefox

Shell编程

Shell是一个命令解释器,它接收应用程序/用户命令,然后调用操作系统内核。

还是用python吧,库多而且编程语法更简洁

执行

bash包含sh,现在默认都是使用bash

echo $SHELL

/bin/bash

chmod赋权

chmod +x helloworld.sh
# 等价于 chmod u+x helloworld.sh

变量

env查看系统变量,常用的系统变量有
HOME、PWD、SHELL、USER

  • 只包含字母、数字和下划线: 变量名可以包含字母(大小写敏感)、数字和下划线 _,不能包含其他特殊字符。
  • 不能以数字开头: 变量名不能以数字开头,但可以包含数字。
  • 避免使用 Shell 关键字: 不要使用Shell的关键字(例如 if、then、else、fi、for、while 等)作为变量名,以免引起混淆。
  • 使用大写字母表示常量: 习惯上,常量的变量名通常使用大写字母,例如 PI=3.14。
  • 避免使用特殊符号: 尽量避免在变量名中使用特殊符号,因为它们可能与 Shell 的语法产生冲突。
  • 避免使用空格: 变量名中不应该包含空格,因为空格通常用于分隔命令和参数。
# 赋值语句等号左右不能有空格
# 单引号不会解释 ${变量} 的值
new_var='1234'
# ${#string} 输出字符串的长度
# ${string:1:4} 截取字符串从索引位置1开始,取4个字符

# bash本身不支持浮点数,需要借助bc(Basic Calculator),或者用Python代替
echo "3.14 * 2.5" | bc

# 整型、普通数组、关联数组(Map)
# declare -i num
num=10

# declare -a my_array
my_array=(a b c d)
echo ${my_array[0]}
echo ${my_array[*]}
# ${#my_array[*]} 数组长度

# declare -ai my_int_array
my_int_array=(1 2 3 4 5)
my_int_array=(
    2
    3
    4
    5
    6
)

# declare -A associative_array
associative_array["name"]="John"
associative_array["age"]=30
# 全部value
echo ${associative_array[*]}
# 全部key
echo ${!associative_array[*]}

# $ 或者 ${} 都可以使用变量 当可能出现歧义时需要花括号
for skill in Ada Coffe Action Java; do
    echo "I am good at ${skill}Script"
done
# $(命令) 可以执行命令
# 注意循环和if的语法 if的[]内部也要有空格 且if-else分支下的内容不能为空
# [] 里的 -o || 代表or -a && 代表and
for file in $(ls ~/Desktop); do
	echo $file
done

if [ $a == $b ]; then
   echo "a 等于 b"
elif [ $a == $c ]; then
   echo "a 等于 c"
else
    echo "其他"
fi

# 只读变量,不可再被修改
readonly read_var
# 删除变量,只读变量无法删除
unset del_var



# 函数 如果return则return值必须0-255 没有return以最后一句作为return的内容(更灵活)

function add(){
        s=$[$1+$2]
        echo "sum结果是$s"
}
read -p "请输入第一个整数" a
read -p "请输入第二个整数" b
sum=$(add $a $b)
echo "sum=$sum"

可以使用 $1、$2 等来引用传递给脚本的参数,其中 $1 表示第一个参数,$2表示第二个参数,注意 $0 为执行的文件名

标签:文件,Shell,grep,echo,实操,Linux,array,my
From: https://www.cnblogs.com/lazykingloveu/p/18140985

相关文章

  • Linux iowait详解
    1、概述Linux中,%iowait过高可能是个问题,严重的时候,它能使服务停止,但问题是,多高才算高?什么时候应该担心呢?本文将讨论iowait的含义、相关的统计数据、原理以及iowait的瓶颈问题。2、什么是iowaitLinux中的解释:ShowthepercentageoftimethattheCPUorCPUswere......
  • shell vi 文本替换字符串
     在shell中使用vi或vim编辑器进行文本替换可以通过以下步骤完成:打开终端。使用vi或vim命令打开目标文件,例如:vifilename.txt。进入替换模式,可以通过按:%s/old_string/new_string/g进行全局替换。 : 进入命令模式。% 表示文件中的所有行。......
  • linux puppeteer 截图提示缺少chrome-linux/chrome error while loading shared libra
    puppeteer/.local-chromium/linux-1002410/chrome-linux/chrome:errorwhileloadingsharedlibraries:libXdamage.so.1:cannotopensharedobjectfile:Nosuchfileordirectory按照错误对照进行安装执行,缺啥安啥......
  • linux目录结构
    /为根目录,根目录下有:bin、dev、home、lib64、media、opt、root、sbin、sys、usrboot、etc、lib、lost+found、mnt、proc、run、srv、tmp、var等目录/bin[常用](usr/bin、/usr/local/bin)是Binary的缩写,存放着最经常使用的命令/sbin[常用]s就是SuperUser的意思,存放......
  • Linux centos安装tesseract-ocr教程
    安装依赖依赖的包:autoconfautomakelibtoollibjpeg-devellibpng-devellibtiff-develzlib-develleptonica(1.67以上)(一下环境依赖,有则更新,无则安装)yuminstallautoconfautomakelibtoolyuminstalllibjpeg-devellibpng-devellibtiff-develzlib-develLeptonica库......
  • linux命令
    #磁盘测试ddbs=8kcount=4kif=/dev/vda1of=test.logconv=fdatasyncbs:每次读取或写入的大小,即一块的大小count:读写块的总数量4K次避免操作系统“写缓存”干扰测试成绩,使用sync、fsync、fdatasyncconv=fdatasync表示只把文件的“数据”写入磁盘conv=fsync表示把文件的“数......
  • 在Linux中,如何使用Wireshark进行网络协议分析?
    Wireshark是一个网络协议分析器,它能够实时捕获和分析网络流量,提供对网络协议的深入理解。Wireshark支持多种协议,并提供了强大的过滤和搜索功能,使得分析网络问题和学习网络协议变得更加容易。1.安装Wireshark在大多数Linux发行版中,你可以通过包管理器安装Wireshark:sudoapt-get......
  • Linux ab详解
    前言ab是apachebench命令的缩写,ab是apache自带的压力测试工具。ab非常实用,它不仅可以对apache服务器进行网站访问压力测试,也可以对或其它类型的服务器进行压力测试。比如nginx、tomcat、IIS等。ab的原理:ab命令会创建多个并发访问线程,模拟多个访问者同时对某一URL地址进行访问。......
  • 在Linux中,如何使用tcpdump和tshark进行实时数据包捕获?
    tcpdump和tshark是两个常用的网络分析工具,它们可以捕获网络接口上的数据包,并提供实时的网络流量分析。tcpdump是一个命令行工具,而tshark是Wireshark的命令行版本,提供了更多的功能和更详细的输出。1.使用tcpdump进行实时数据包捕获安装tcpdump:在大多数Linux发行版中,tcpdump已......
  • 在Linux中,如何使用Nmap进行网络发现和安全扫描?
    Nmap(NetworkMapper)是一个强大的网络扫描和安全审计工具,它可以用于网络发现、安全扫描、端口扫描、服务和版本检测等多种用途。以下是使用Nmap进行网络发现和安全扫描的基本步骤和选项:1.网络发现基本的Ping扫描:使用Nmap发送Ping请求来发现网络上的活动主机。nmap-sn192.1......