博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
linux命令行与shell脚本编程大全复习总结<1> 3-10章
阅读量:4072 次
发布时间:2019-05-25

本文共 4874 字,大约阅读时间需要 16 分钟。

这本书从大三开始看,引导我入门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的用法:

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=testecho $testtest=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         ==>ABecho ${mytest[1]}      ==> CDecho ${mytest[*]}      ==> AB CD EFunset mytest[1]eccho ${mytest[*]}   ==> AB EFecho ${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/passwduseradd -b HOME   |   -s   shell  type  |   -g  GIDuserdel -r  删除HOME目录,mail 目录passwd usernamepasswd -e username  强制下一次修改usermod  -L 锁住用户  -U 解锁  -p 修改密码  -l  修改名chpasswd  < /file  批量修改chsh -s /bin/bash username  修改shell创建组:/usr/sbin/groupadd sharedusermod -G shared username 1  -g会修改用户的默认组修改组名groupmod -n new_groupname  old_groupname文件权限umask  ==》 0002    root下0022new file  666&(-mask)   ==》 644new dir   777&(-umask)  ==》 755umask 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;whoSun Oct 14 14:23:33 CST 2018sholck   tty7         2018-10-12 13:52sholck   pts/0        2018-10-14 10:41 (:0.0)#!/bin/bashdatewhochmod u+x newfileecho A BC D   ==> A BC Decho "A BC' D"  ==> A BC' Decho  '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=10var2=testingvar3="still more testing" 脚本自动决定变量的数据类型字符串赋值var2=testingvar4=$var2   对var4=var2   错反引号testing=` date  `today=` date +%y%m%d `  ==> 181014touch log.$testing     错误,因为变量中有空格touch log.$today   对重定向echo > test6追加echo >> test6input 重定向wc < test6  ==> 行  词  字节数管道 将上条命令的输出作为输入rpm -qa > rpm.listrpm -qa | sort | more > rpm.list执行数学运算# expr 1 + 23#expr 5 \* 210shell scriptvar1=10var2=20var3=` expr   $var2  /  $var1  `echo The result is $var3  ==> The result is 2使用方括号   在方括号的符号认定不为通配符#var1=$[1+5]#echo $var1    ==> 6# var2=$[$var1*2]# echo $var2    ==> 12bash shell只支持整数运算var1=100var2=45var3=$[$var1/$var2]echo $var3  ==>  2浮点问题  bc计算器bc -q3.44/50scale=43.44/5.688012*5.464.8var1=10var1*440var2=var1/5var2*12.0000print var22.0000quit脚本内使用bc计算器var=` echo "options: expression" | bc `  模板var1=` echo "scale=4; 3.44/5" | bc `echo $var1  ==> .6880脚本中使用内联  内联中需要$来标识变量,无法使用外部变量var=` bc << EOFscale=4a1=($var1 * $var2)b1=($var3 * #var4)a1+b1EOF`expr 数学运算 加空格bc 内 不需要加空格 不需要 $bc 内联中 需要$来标识变量退出脚本$?   退出状态脚本中以最后一个命令的退出状态码退出也可以通过exit x 指定退出码退出码最大 255若 exit 300echo $?  44

 

转载地址:http://sbgji.baihongyu.com/

你可能感兴趣的文章
剑指_栈的压入弹出序列
查看>>
剑指_复杂链表的复制
查看>>
服务器普通用户(非管理员账户)在自己目录下安装TensorFlow
查看>>
星环后台研发实习面经
查看>>
大数相乘不能用自带大数类型
查看>>
字节跳动后端开发一面
查看>>
CentOS Tensorflow 基础环境配置
查看>>
centOS7安装FTP
查看>>
FTP的命令
查看>>
CentOS操作系统下安装yum的方法
查看>>
ping 报name or service not known
查看>>
FTP 常见问题
查看>>
zookeeper单机集群安装
查看>>
do_generic_file_read()函数
查看>>
Python学习笔记之数据类型
查看>>
Python学习笔记之特点
查看>>
Python学习笔记之安装
查看>>
shell 快捷键
查看>>
VIM滚屏操作
查看>>
EMC 2014存储布局及十大新技术要点
查看>>