linux命令行与shell脚本编程大全复习总结<1> 3-10章

这本书从大三开始看,引导我入门linux,当时买不起原版,只能花了40块大洋打印了400多页,分为上下两本,上本讲述了shell命令,其中夹杂着一些linux原理,下本讲述了shell高级脚本编程,从sed,gawk批处理到简单图形界面,脚本实战,在使用linux时和Redhat面试工作时也有很大的作用,对linux入门来说是一本非常不错的书。到现在,这本书已经翻来覆去看了三遍,有40页的纸质总结,书也在大学毕业后传承给学弟了,同时送出的也有一本APUE,一本UNP(我有两套,一套是传承来的,另一套原版花了300大洋)。如果能把<linux命令行与shell脚本编程><APUE><UNP IPC> <UNP Socket><鸟哥私房菜>都吃完,linux就算是入门了吧。

学习linux的时候希望多试试linux系统,ubuntu,centos,Fedora,rhel,自己找内核源码编译一下,在那些连inode,孤儿进程,会话,域套接字都不知道的“大神”面前(面试时也敢写熟悉linux系统),我只能笑笑,不敢在说什么,可能他们装linux系统快的一笔。

话不多说,趁放星期一天内搞定吧。这shell只是个工具,学习的时候别忘了与linux内核的关系。

第三章:

启动shell 脚本:/etc/bash.bashrc   /etc/profile

用户shell 脚本:~/.profile   ~/.bashrc  可增加自己的shell函数,PATH增加路径,别命名命令

shell提示符:PSI="[\t][\u]\s"  PSI变量可在脚本里自行更改。

ls -sail  s->size  a 隐藏文件  i->文件inode节点信息 (可以思考:linux文件树的构成,系统如何根据一个文件名找到磁盘中的文件地址,两个进程打开相同的文件,进程表项中的文件描述符指向的结构体包含什么信息-->打开文件权限,文件偏移等)

cp -l 硬链接  cp -s 软链接 ln -S 软链接。 -R 递归

(思考:对比源文件和链接文件的inode节点是否一致,链接个数,文件大小区别,尤其是软链接文件的大小和源文件地址的字节大小对比,源文件和链接文件是否可以在不同的文件系统-->关键inode节点和文件系统的关系,当源文件删除,软链接的导致的指向丢失)

touch    rm -rf  强制删除  mkdir  rmdir

linux 与 windows 换行的不同 LF->linux  CRLF->windows

思考:windows与linux的文件系统的不同(linux 万物皆文件)

第四章:

ps -ef       ps  aux  查看进程  aux更详细,展示了进程状态

挂载媒体mount : mount -t  type  /dev/sda /mnt              修复模式下: mount -o rw,remount /    根目录可读写挂载  (思考:内核文件initrd.img在构建文件树之前为什么要先构建虚拟文件系统,关键在于SCSI硬盘与IDE硬盘模块区别)

root下blkid命令查看UUID号,写入/etc/fstab  开机默认挂载

df -h 查看已挂载磁盘的使用情况

du -chs  查看一个目录文件的大小, du -ch  详细查看子目录。

sudo apt-get install htop       安装htop

htop或者top命令实时检测电脑信息。

随机生成UUID   sudo apt-get install uuid         执行uuid随机生成

sort 默认字符排序   sort -n 数字排序  sort -M  识别三字符的月,按月排序

sort  -t  ':' -k 3  -n /etc/passwd    -t  分割符, -k  位置    按照UID排序

grep -v  输出不匹配  -n 行号  -c总匹配行数   -e A  -e B  匹配A或B

grep -rn “xxx“ .  匹配字符串

各种grep的用法:https://blog.csdn.net/zengxx1989/article/details/52837517

bzip2 格式压缩:bzip2 file    bunzip  file解压  bzip2 -d file 也可以解压

gzip2 : gzip file  gunzip file

zip: zip file  unzip file

tar归档文件

tar -cvf  test.tar test1  test2  归档test1与test2到test.tar

tar -tf test.tar   展示其中的归档文件

tar -xvf  test.tar  提取归档文件

.tar.gz  与tgz格式是一样的,解压提档 tar -zxvf   test.tgz

第五章:

printenv 显示全局环境变量

set  显示该shell进程下的变量

test=test
echo $test
test=a b c    错误
test='a b c'
export tt将变量设为全局
局部变量不继承,子进程不可见
unset test 删除变量
若删除全局变量,则只作用当前进程
PATH=$PATH:/home/user
登录shell
/etc/profile  ->  /etc/profile.d
                      ^
启动式shell            |
 ~/.bashrc  -> /etc/bashrc

数组 shell中类型为弱变量
mytest=(AB CD EF)
echo $mytest         ==>AB
echo ${mytest[1]}      ==> CD
echo ${mytest[*]}      ==> AB CD EF
unset mytest[1]
eccho ${mytest[*]}   ==> AB EF
echo ${mytest[1]}    ==> 空

别名
alias -p   别名列表
alias vi='vim'
若想成为全局变量使用 在 $HOME/.bashrc下别命名

第6章

增删改用户

/usr/sbin/useradd -D 查看设置用户帐号默认参数

home目录模板文件/etc/skel

当创建新用户HOME目录时,将/etc/skel下的文件复制放到HOME中

useradd -m test  强制创建HOME目录
创建用户时制定参数,细节可浏览/etc/passwd
useradd -b HOME   |   -s   shell  type  |   -g  GID
userdel -r  删除HOME目录,mail 目录

passwd username
passwd -e username  强制下一次修改

usermod  -L 锁住用户  -U 解锁  -p 修改密码  -l  修改名

chpasswd  < /file  批量修改

chsh -s /bin/bash username  修改shell

创建组:
/usr/sbin/groupadd shared

usermod -G shared username 1  -g会修改用户的默认组

修改组名

groupmod -n new_groupname  old_groupname

文件权限

umask  ==》 0002    root下0022

new file  666&(-mask)   ==》 644
new dir   777&(-umask)  ==》 755

umask 026 指定新值  umask在/etc/profile中设置

chmod a+x  u 用户 g 组 o 其他 a 所有  + 增  -移 =设置
X 若为目录,赋予执行权限
s 运行时重新设置UID和GID,赋予root权限
t 保留文件或目录
u 设置权限和属主一样

改变所属关系

chown dan newfile  属主
chown  dan.shared  new file   主+组
chown .rich newfile  组 -R 递归改
chown test. newfile  主+组相同 -h 改变该文件的all符号链接文件的所属关系
chgrp shared newfile  修改默认属组

共享文件

SUID  程序以属主权限调用
SGID 以默认属组权限调用

需了解当进程使用文件时,对权限检测的步骤

第10章  shell 入门

#date;who
Sun Oct 14 14:23:33 CST 2018
sholck   tty7         2018-10-12 13:52
sholck   pts/0        2018-10-14 10:41 (:0.0)

#!/bin/bash
date
who

chmod u+x newfile

echo A BC D   ==> A BC D
echo "A BC' D"  ==> A BC' D
echo  'A "BC" D'  ==>  A "BC" D
若字符串中有引号,用另一种引号圈起来

脚本中
echo -n "The time and date are: "
date
输出:The time and date are: Sun Oct 14 14:27:31 CST 2018

变量:
echo "User is $USER"
echo UID: $UID
要显示美元符号,需要反斜线转义

val1=10
var2=testing
var3="still more testing" 脚本自动决定变量的数据类型

字符串赋值
var2=testing
var4=$var2   对
var4=var2   错

反引号
testing=` date  `
today=` date +%y%m%d `  ==> 181014

touch log.$testing     错误,因为变量中有空格
touch log.$today   对

重定向
echo > test6
追加
echo >> test6

input 重定向
wc < test6  ==> 行  词  字节数

管道 将上条命令的输出作为输入
rpm -qa > rpm.list
rpm -qa | sort | more > rpm.list

执行数学运算
# expr 1 + 2
3
#expr 5 \* 2
10

shell script
var1=10
var2=20
var3=` expr   $var2  /  $var1  `
echo The result is $var3  ==> The result is 2

使用方括号   在方括号的符号认定不为通配符
#var1=$[1+5]
#echo $var1    ==> 6
# var2=$[$var1*2]
# echo $var2    ==> 12

bash shell只支持整数运算
var1=100
var2=45
var3=$[$var1/$var2]
echo $var3  ==>  2

浮点问题  bc计算器
bc -q
3.44/5
0
scale=4
3.44/5
.6880
12*5.4
64.8

var1=10
var1*4
40
var2=var1/5
var2*1
2.0000
print var2
2.0000
quit

脚本内使用bc计算器
var=` echo "options: expression" | bc `  模板
var1=` echo "scale=4; 3.44/5" | bc `
echo $var1  ==> .6880

脚本中使用内联  内联中需要$来标识变量,无法使用外部变量
var=` bc << EOF
scale=4
a1=($var1 * $var2)
b1=($var3 * #var4)
a1+b1
EOF
`
expr 数学运算 加空格
bc 内 不需要加空格 不需要 $
bc 内联中 需要$来标识变量

退出脚本
$?   退出状态
脚本中以最后一个命令的退出状态码退出
也可以通过exit x 指定退出码
退出码最大 255
若 exit 300
echo $?  44

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
东南亚位于我国倡导推进的“一带一路”海陆交汇地带,作为当今全球发展最为迅速的地区之一,近年来区域内生产总值实现了显著且稳定的增长。根据东盟主要经济体公布的最新数据,印度尼西亚2023年国内生产总值(GDP)增长5.05%;越南2023年经济增长5.05%;马来西亚2023年经济增速为3.7%;泰国2023年经济增长1.9%;新加坡2023年经济增长1.1%;柬埔寨2023年经济增速预计为5.6%。 东盟国家在“一带一路”沿线国家中的总体GDP经济规模、贸易总额与国外直接投资均为最大,因此有着举足轻重的地位和作用。当前,东盟与中国已互相成为双方最大的交易伙伴。中国-东盟贸易总额已从2013年的443亿元增长至 2023年合计超逾6.4万亿元,占中国外贸总值的15.4%。在过去20余年中,东盟国家不断在全球多变的格局里面临挑战并寻求机遇。2023东盟国家主要经济体受到国内消费、国外投资、货币政策、旅游业复苏、和大宗商品出口价企稳等方面的提振,经济显现出稳步增长态势和强韧性的潜能。 本调研报告旨在深度挖掘东南亚市场的增长潜力与发展机会,分析东南亚市场竞争态势、销售模式、客户偏好、整体市场营商环境,为国内企业出海开展业务提供客观参考意见。 本文核心内容: 市场空间:全球行业市场空间、东南亚市场发展空间。 竞争态势:全球份额,东南亚市场企业份额。 销售模式:东南亚市场销售模式、本地代理商 客户情况:东南亚本地客户及偏好分析 营商环境:东南亚营商环境分析 本文纳入的企业包括国外及印尼本土企业,以及相关上下游企业等,部分名单 QYResearch是全球知名的大型咨询公司,行业涵盖各高科技行业产业链细分市场,横跨如半导体产业链(半导体设备及零部件、半导体材料、集成电路、制造、封测、分立器件、传感器、光电器件)、光伏产业链(设备、硅料/硅片、电池片、组件、辅料支架、逆变器、电站终端)、新能源汽车产业链(动力电池及材料、电驱电控、汽车半导体/电子、整车、充电桩)、通信产业链(通信系统设备、终端设备、电子元器件、射频前端、光模块、4G/5G/6G、宽带、IoT、数字经济、AI)、先进材料产业链(金属材料、高分子材料、陶瓷材料、纳米材料等)、机械制造产业链(数控机床、工程机械、电气机械、3C自动化、工业机器人、激光、工控、无人机)、食品药品、医疗器械、农业等。邮箱:market@qyresearch.com
完整版:https://download.csdn.net/download/qq_27595745/89522468 【课程大纲】 1-1 什么是java 1-2 认识java语言 1-3 java平台的体系结构 1-4 java SE环境安装和配置 2-1 java程序简介 2-2 计算机中的程序 2-3 java程序 2-4 java类库组织结构和文档 2-5 java虚拟机简介 2-6 java的垃圾回收器 2-7 java上机练习 3-1 java语言基础入门 3-2 数据的分类 3-3 标识符、关键字和常量 3-4 运算符 3-5 表达式 3-6 顺序结构和选择结构 3-7 循环语句 3-8 跳转语句 3-9 MyEclipse工具介绍 3-10 java基础知识节练习 4-1 一维数组 4-2 数组应用 4-3 多维数组 4-4 排序算法 4-5 增强for循环 4-6 数组和排序算法节练习 5-0 抽象和封装 5-1 面向过程的设计思想 5-2 面向对象的设计思想 5-3 抽象 5-4 封装 5-5 属性 5-6 方法的定义 5-7 this关键字 5-8 javaBean 5-9 包 package 5-10 抽象和封装节练习 6-0 继承和多态 6-1 继承 6-2 object类 6-3 多态 6-4 访问修饰符 6-5 static修饰符 6-6 final修饰符 6-7 abstract修饰符 6-8 接口 6-9 继承和多态 节练习 7-1 面向对象的分析与设计简介 7-2 对象模型建立 7-3 类之间的关系 7-4 软件的可维护与复用设计原则 7-5 面向对象的设计与分析 节练习 8-1 内部类与包装器 8-2 对象包装器 8-3 装箱和拆箱 8-4 练习题 9-1 常用类介绍 9-2 StringBuffer和String Builder类 9-3 Rintime类的使用 9-4 日期类简介 9-5 java程序国际化的实现 9-6 Random类和Math类 9-7 枚举 9-8 练习题 10-1 java异常处理 10-2 认识异常 10-3 使用try和catch捕获异常 10-4 使用throw和throws引发异常 10-5 finally关键字 10-6 getMessage和printStackTrace方法 10-7 异常分类 10-8 自定义异常类 10-9 练习题 11-1 Java集合框架和泛型机制 11-2 Collection接口 11-3 Set接口实现类 11-4 List接口实现类 11-5 Map接口 11-6 Collections类 11-7 泛型概述 11-8 练习题 12-1 多线程 12-2 线程的生命周期 12-3 线程的调度和优先级 12-4 线程的同步 12-5 集合类的同步问题 12-6 用Timer类调度任务 12-7 练习题 13-1 Java IO 13-2 Java IO原理 13-3 流类的结构 13-4 文件流 13-5 缓冲流 13-6 转换流 13-7 数据流 13-8 打印流 13-9 对象流 13-10 随机存取文件流 13-11 zip文件流 13-12 练习题 14-1 图形用户界面设计 14-2 事件处理机制 14-3 AWT常用组件 14-4 swing简介 14-5 可视化开发swing组件 14-6 声音的播放和处理 14-7 2D图形的绘制 14-8 练习题 15-1 反射 15-2 使用Java反射机制 15-3 反射与动态代理 15-4 练习题 16-1 Java标注 16-2 JDK内置的基本标注类型 16-3 自定义标注类型 16-4 对标注进行标注 16-5 利用反射获取标注信息 16-6 练习题 17-1 顶目实战1-单机版五子棋游戏 17-2 总体设计 17-3 代码实现 17-4 程序的运行与发布 17-5 手动生成可执行JAR文件 17-6 练习题 18-1 Java数据库编程 18-2 JDBC类和接口 18-3 JDBC操作SQL 18-4 JDBC基本示例 18-5 JDBC应用示例 18-6 练习题 19-1 。。。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值