Linux 新手的学习笔记
系统分区:
MBR分区(主分区不超过4个,单个分区不超过2TB)
fdisk -l
fdisk /dev/sdb
n(添加一个分区)p(添加一个主分区,主分区)e(添加一个扩展分区)l(添加一个逻辑分区,从5开始)d(删除一个分区)w(保存分区)
GPT分区(yum install parted)
parted
select /dev/sdb
mklable msdos(gpt)
print (all)
mkpart
Partition name? []?
File system type? [ext2]?
Start? 1 从第1M开始,避免出现对齐问题,提高硬盘性能
End?到第几M结束
或者 mkpart test(名称,不能省略) 2000 3000
rm (分区编号)
unit GB (用G做单位)
quit
格式化
mkfs.ext3 /dev/设备名 或者 mkfs -t ext4 /dev/设备名
SWAP分区
>>建立一个普通的linux分区
>>修改分区类型的16进制编码 t(),分区编号,L(查看所有进制)w(保存)
>>格式化交换分区 mkswap /dev/设备名
>>启用交换分区 swapon /dev/设备名 swapoff /dev/设备名为停止使用swap
free查看是否已经启用成功
目录处理:
mkdir -p (新建文件用touch)
cd 目录 (~ 代表家目录 - 代表上一次目录)
pwd
rmdir
rm -rf (-r代表删除目录,-f标识强制)
cp [源文件或目录] [目标目录](-r 代表目录 -p 连带文件属性一起复制,比如时间 -d 如果文件是链接文件,则复制链接属性 -a 等同于-pdr)
ll (ls -l的别名,查看隐藏文件请用ls -a)
mv [源文件或目录] [目标目录] (既是剪切,也是重命名)
ln -s [源文件] [目标文件]
硬链接:拥有相同的i节点和block块,不能跨分区,不能针对目录使用
软连接:类似windows快捷方式,软连接拥有自己的i节点和block块,修改一个另外一个也改变,删除源文件软链接不能再使用
搜索命令
文件搜索:locate [文件名] (新建的文件搜索不到,只是搜索后台数据库文件/var/lib/mlocate,这个数据库一天已更新,如实时更新,需updatedb),如果没有此命令,yum install mlocate,/etc/updatedb.conf配置文件配置规则
命令搜索命令: whereis和which(whereis搜索命令所在路径及帮助文档所在位置 -b只查找命令文件 -m之查找帮助文档,which除了搜索命令的路径 还会列出命令的别名)
文件搜索:find [搜索范围] [搜索条件] (文件名是精确匹配,可以使用通配符,*?[])
-name 、-inname(不区分大小写)、-user root(按照所有者搜索)、-nouser(查找没有所有者的文件)、 -mtime|atime|ctime+10(10天前修改的文件 -10为10天内 10为10天当天)、-size +25k、-inum 1000(i节点是1000的文件)、-a(逻辑and)、-o(逻辑or)、-exec|-ok命令{} \(对搜索结果进行操作)
字符串搜索命令:grep [选项] 字符串 文件名 (选项:-i忽略大小写 -v排除指定字符串)
帮助命令
man命令(如果没有,择yum install man) -f(相当于whatis命令,查看级别) -k(相当于apropos命令 ,查看和包含关键字命令相关的所有帮助)
其他帮助命令
--help
压缩命令(http://www.cnblogs.com/yejianfei/p/3351626.html)
zip [文件名.zip] [文件名或目录名] (-r 压缩目录)
unzip [文件名.zip]
gzip [文件名](源文件会消失)
gzip -c 源文件 > 压缩文件 (源文件保留)
gzip -r [目录] (压缩目录下的所有子文件,但是不压缩目录)
gzip -d [压缩文件] (解压缩)
gunzip [压缩文件] (解压缩)
bzip2 [源文件](源文件会消失)
bzip2 -k [源文件](源文件保留)
bzip2 -d [压缩文件](解压缩)
bunzip2 [压缩文件](解压缩)
tar -zcvf [打包文件名.tar.gz] [源文件](-c 打包,-v显示过程,-f指定打包后的文件名)
tar -zxvf [打包文件名.tar.gz] (-C 指定解压缩的位置)
tar -ztvf [打包文件名.tar.gz] (不解压,只查看内容)
tar -jcvf [打包文件名.tar.bz2] [源文件]
tar -jxvf [打包文件名.tar.bz2]
关机与重启命令
shutdown [选项] [时间] (选项:-c 取消前一个关机命令 -h 关机 -r 重启)
shutdown -r 05:30(占用终端)
shutdown -r 05:30 &(放在后台执行,不占用终端)
其他关机命令:halt、poweroff、init 0
其他重启命令:reboot、init 6
退出登录:logout
修改登录级别:/etc/inittab (centos7:ln -sf /lib/systemd/system/multi-user.target /etc/systemd/system/default.target)
查看登录级别:runlevel
挂载命令
mount 查看系统中已经挂载的设备
mount -a 根据配置文件 /etc/fstab的内容,自动挂载
mount [-t 文件系统] [-o 特殊选项] 设备文件名 挂载点
mount -o remount,noexec /home
挂载光盘 mount -t iso9660 /dev/sr0 /mnt/cdrom/
挂载U盘 mount -t vfat /dev/sdb1 /mnt/usb/
umount [挂载点或设备名]
用户登录查看命令
w (系统当中已经登录的用户,tty1位本机终端,pts/0为远程终端,LOGIN@为登录时间,IDLE为闲置时间,JCPU和PCPU为进程占用cpu时间,WHAT为当前正在执行的命令)
who
su命令(切换登陆用户)
last(读取/var/log/wtmp文件,查询当前登录和过去登录的用户信息)
lastlog(读取/var/log/lastlog文件,查看所有用户的最后一次登录时间)
SHELL命令
查看当前shell echo $SHELL
/etc/shells,子shell,退出用exit
echo命令
-e(支持反斜线控制的字符转换)
\e[1;31m开启颜色 \e[0m关闭颜色 31m为红色
#!/bin/bash
脚本执行
>>chmod 755 文件名,然后执行
>>bash 文件名
命令别名
alias (查看别名)
alias ls='ls --color=never'(设定别名)
vi ~/.bashrc
unalias (删除别名)
快捷键
ctrl+(c 强制终止当前命令 ,l 清屏,a 光标移到命令行首,e 光标移到命令行尾,u 从光标所在位置删除到行首,z 把命令放到后台,r 在历史命令中搜索)
历史命令
history(-c 清空命令 -w 把缓存的历史命令写入到~/.bash_history中)
上次注销成功后保存的命令存储在~/.bash_history里
历史命令默认保存1000条,可以在环境变量/etc/profile文件中配置
上下箭头可以调用历史命令;!n 调用第几条历史命令;!! 重复执行上次命令;!字符串 重复执行最后一条以该字串开头的命令
输入时tab键补全
输出重定向
标准输出重定向(命令 >文件 已覆盖的方式把命令的正确输出输出到指定的文件或设备上,命令 >>文件 以追加的方式)
标准错误输出重定向(错误命令 2>文件 已覆盖的方式,错误命令 2>>文件 以追加的方式)
正确输出和错误输出同时保存(命令 >文件 2>&1 已覆盖的方式 同 命令 &>文件,命令 >>文件 2>&1 已追加的方式 同 命令 &>>文件,命令>文件1 2>>文件2 正确的输出到文件1,错误的输出到文件2,命令 &>/dev/null 不输出)
输入重定向
wc [选项] [文件名] (-c 统计字节数,-w 统计单词数,-l 统计行数)ctrl+d
管道符
多命令顺序执行(;多个命令执行 命令之间没有任何逻辑,&& 前一个命令正确后边的命令才会执行,|| 前一个命令不正缺后边的命令才会执行)
命令 && echo yes || echo no(用来检测一个命令是否正确执行)
命令1 | 命令2 (命令1的正确输出作为命令2的操作对象)
通配符(*?[])
VI编辑器(yum install vim)
vi编辑器的操作模式(命令模式、输入模式、底行模式)
vim 文件名(vim + 文件名 打开文件光标定位到最后一行,vim +n 文件名 打开文件光标定位到第n行,vim +/字符串 文件名 打开文件光标定位到字符串第一次出现的行 用n跳转下一个位置,vim aa bb cc 一次创建多个文件,用:n切换下一个 :N上一个)
底行模式(:w,:q,:q!,:wq,:ls,:n,:N,:数字,/字符串 想后搜索,?字符串 向前搜索)
命令模式(h,j,k,l,ctrl+f,ctrl+b,ctrl+d,ctrl+u,dd,o,yy,p,P)
磁盘管理
df(-l 仅显示本地磁盘,-a 显示所有,-h 以1024进制用合适单位显示,-H 以1000进制用合适单位显示,-T 显示磁盘分区类型,-t 显示指定类型文件系统的磁盘分区,-x 不显示指定类型文件系统的磁盘分区)例:df -lhT -t ext4
du(-b 以byte为单位统计,-k以KB为单位统计,m以MB为单位统计,-h,-H,s指定统计目标 )例:du -sh *.zip
查看各目录所占用量du . --max-depth=1 -h
用户管理
/etc/group 存储所有用户组的信息
Group: X : 123 :abc,def,xyz
组名称 组密码占位符 组编号 组中用户名列表
编号1-499是为安装软件提供的用户组,用户手动创建的用户组是从500开始的
/etc/gshadow 存储用户组的密码信息
Group: * : :abc,def,xyz
组名称 组密码 组管理者 组中用户名列表
/etc/passwd 存储所有用户的信息
user : X : 123 : 456 : ****** :/home/user : /bin/bash
用户名 密码占位符 用户编号 用户组编号 用户注释信息 用户目录 shell类型
/etc/shadow 存储所有用户的密码信息
user : **** : : : : :
用户名 密码
用户和用户组的基本命令
groupadd 组名
groupmod -n 新组名 原组名
groupmod -g 组编号 组名称
groupdel 组名称
useradd -g 组名 -G 附属组1,附属组2 -d 目录名 用户名
usermod -c 备注内容
usermod -l 新用户名 原用户名
usermod -g 新组名 用户名
userdel -r 用户名 (-r 删除用户名根目录)
touch /etc/nologin (阻止用户登录)
用户和用户组的进阶命令
passwd -l 用户名 (锁定用户)
passwd -u 用户名 (解锁用户)
passwd -d 用户名 (去掉密码,无密码登陆)
gpasswd -a 用户名 附属组名(给用户添加附属组)
gpasswd -d 用户名 附属组名 (给用户去掉附属组)
newgrp 附属组名 (需要输入组密码,临时切换用户至附属组)
gpasswd 组名 (更改用户组密码)
其他用户和用户组命令
su 用户名(切换到其他用户,需输入密码)
whoami
id 用户名
groups 用户名
chfn 用户名 (设置用户详细资料)
finger 用户名 (显示用户详细资料)
网络管理
应用层、表示层(解码转换成二进制、加密)、会话层(判断是本地存储还是网络传输)、传输层(写入发送与接收端口号,选择传输协议,流控)、网络层(封装ip,选路)、数据链路层(封装mac地址,成帧)、物理层(比特流传输)
IP地址配置
ifconfig临时配置ip地址 例:ifconfig eth0 192.168.0.2 netmask 255.255.255.0
setup永久配置ip地址(yum install setuptool、yum install ntsysv、yum install system-config-securitylevel-tui、yum install system-config-network-tui、yum install system-config-keyboard)
修改网络配置文件
网卡文件
vi /etc/sysconfig/network-scripts/ifcfg-eth0
主机名文件
vi /etc/sysconfig/network(修改hostname需重新启动计算机,查看hostname用hostname命令)
DNS配置文件
vi /etc/resolv.conf
图形界面配置文件
重启网络服务 service network restart
修改UUID
>>删除ifcfg-eth0中的mac地址行
>>删除网卡和mac地址绑定文件 rm -rf /etc/udev/rules.d/70-persistent-net.rules
>>重启系统
虚拟机网络参数配置
桥接(占用一个真实网段的ip地址)
NAT,Host-only(不能与局域网的其他电脑通讯)
网络命令
网络环境查看命令
ifconfig
ifup 启用网卡
ifdown 禁用网卡
netstat(-t 列出TCP协议端口,-u 列出UDP协议端口,-n 不使用域名与服务名 使用ip与端口,-l 仅列出在监听状态的网络服务,-a 列出所有的网络连接,-r 列出路由列表 同route)例:netstat -tuln
route命令 (-n 列出路由列表)route add default gw 192.168.0.1 临时设定网关
nslookup 域名对应的IP
网络测试命令
ping 域名或ip(-c 次数)
telnet 域名或ip 端口(用来做端口探测)
traceroute [选项] 域名或ip (-n 使用ip,不使用域名,速度更快)
wget 下载链接
tcpdump (-i 指定监听网卡,-nn 将数据包中的域名与服务转为ip和端口,-X 以十六进制和ascii显示数据包内容,port 指定监听端口)
远程登录工具
ssh原理
对称加密与非对称加密
ssh 用户名@ip(下载公钥到当前用户目录下,保存为.ssh文件)
scp 用户名@ip:文件路径 本地路径(下载文件 -r 代表目录)
scp 本地文件 用户名@ip:上传路径(上传文件 -r 代表目录)
软件安装
rpm
rpm 包默认安装位置
/etc/、/usr/bin、/usr/lib、/usr/share/doc、/usr/share/man
rpm包安装完后的启动方式
/etc/rc.d/init.d/httpd start
service httpd start(radhat 专有)
rpm 包全名(-i 安装,-v显示详细信息,-h显示进度,--nodeps不检测依懒性)
rpm -Uvh 包全名(升级)
rpm -e 包名(卸载)
rpm -q 包名
rpm -qa (查询所有已安装的包)
rpm -qip(-i 查询软件信息,-p查询未安装软件信息)
rpm -ql(-l 列表)
rpm -qf 系统文件名(查询系统文件属于哪个软件包)
rpm -qR(-R 依懒性)
yum
vi /etc/yum.repos.d/CentOs-Base.repo([base] 容器名称,name 容器说明,mirrorlist 镜像站点,baseurl yum源服务器地址,enabled 此容器是否生效,gpgcheck RPM证书是否生效,gpgkey 数字证书公钥的保存位置)
光盘搭建yum源
挂载光盘 mount /dev/sr0 /mnt/cdrom
使网络yum源失效 mv CentOs-Base.repo CentOs-Base.repo.bak
使光盘yum源生效 vi /etc/yum.repos.d/CentOs-Media.repo 修改baseurl为file:///mnt/cdrom,enabled=1\
yum list
yum search 关键字
yum -y install 包名
yum -y update 包名
yum -y remove 包名
yum grouplist
LANG=zh_CN.utf8
LANG=en_US
永久修改语言,vi /etc/sysconfig/i18n
yum groupinstall 软件组名
yum groupremove 软件组名
源码安装
源码包安装位置(源码安装一定要指定安装路径,因为源码安装没有类似rpm的卸载命令)
/usr/local/软件名
源码安装后的启动方式
/usr/local/apache2/bin/apachectl start
安装过程
安装c语言编译器
下载源码包
tar -zxvf
cd
./configure --prefix=
make(如果报错,需要make clean,清除一下)
make install(如果出错,不止make clean,还要删除安装目录)
卸载(直接删除安装目录即可)
脚本安装 (需关闭selinux与防火墙)
权限管理
文件基本权限
-rw-r--r--(1 文件类型 d 目录 l 链接文件,2-4 所有者u,5-7 所属组g,8-10 其他人o)
chmod [选项] [模式] 文件名
选项:-R 递归
模式:
[ugoa][+-=][rwx] 多个用逗号隔开
755(r=4 w=2 x=1)
权限对文件的作用
r(cat,more,head,tail)
w(vi,echo)写权限不包括删除权限,想要删除文件,需要对目录具有w权限
x(可执行)
权限对目录的作用
r(ls)
w(touch,rm,mv,cp)
x(cd)
chown 用户名 文件名 chown 用户名:用户组 文件名
chgrp 组名 文件名
文件默认权限
umask 0022(临时修改)
vi /etc/profile(永久修改)
文件的默认权限
文件默认最大权限为666即rw-rw-rw-,umask为0022即----w--w-,相减得rw-r--r--即644
目录的最大权限
目录的最大权限为777
ACL权限
针对所有者,所属组,其他人三种类型过于简单的附加,使区别于这三种类型的用户具有文件或目录的权限
查看是否开启 dumpe2fs -h /dev/sda2(-h 只显示超级块中的信息,而不显示磁盘块组的详细信息)
开启acl权限 mount -o remount,acl /
查看acl权限 getfacl 文件名
设定acl权限 setfacl [选项] 文件名
选项:(-m 设定acl权限,x 删除指定的acl权限,-b 删除所有的acl权限,-d 设定默认acl权限,-k 删除默认acl权限,-R 递归设定acl权限)
例:setfacl -m u(g):用户名或组名:权限 /文件或目录
setfacl -x u:用户名 目录名
setfacl -b 目录名
最大有效权限mask(赋予的权限与mask逻辑与,得到的权限才是真正的权限)
setfacl -m m:权限 目录
递归acl权限
setfacl -m u:用户名:权限 -R 目录
默认acl权限
setfacl -m d:u:用户名:权限 -R 目录
sudo权限
visudo(实际上修改的是/etc/sudoers文件)
root ALL=(ALL) ALL
用户名 被管理主机的地址=(可使用的身份) 授权命令(绝对路径)例子:user1 ALL=(ALL) /sbin/shutdown -r now ;user1 ALL=/usr/sbin/useradd
%wheel ALL=(ALL) ALL
用户组
sudo -l (查看可用的sudo命令)
sudo 命令
文件特殊权限
SetUID(SUID)
只有可执行的二进制程序才能设定
命令执行着要对该程序具有X权限
命令执行者在执行该程序时获得该程序文件的属主身份
chmod 4755 文件名
chmod u+s 文件名
SetGID(SGID) 最典型的例子是 /usr/bin/locate命令
对执行文件和目录都起作用
chmod 2755 文件名
chmod g+s 文件名
Sticky BIT(SBIT) 设置后只能新建或删除自己的文件,最典型的例子是/tmp文件夹
只对目录起作用
目录需要有w和x权限,也就是说把目录给其他人赋予7最大权限
chmod 1755 文件名
chmod o+s 文件名
chmod 0777 文件名(取消)
chmod o-s 文件名(取消)
不可改变位权限
chattr [+-=] [选项] 文件名或目录名
i:对文件设置后,不允许对文件删除改名添加修改,对目录设置后,允许修改目录下的数据,不允许添加和删除
a:对文件设置后,只能在文件中添加数据,不能修改和删除,对目录设置后,只允许在目录中建立和修改文件,但不允许删除
服务管理
crontab
crontab -l (查看当前用户的crontab文件的详细信息)
service crond status
安装cron
yum install vixie-cron
yum install crontabs
crontab -e (编辑当前用户的crontab文件) tail -f 文件名(一直显示文件的后几行)
第1列分钟1~59 第2列小时1~23(0表示子夜)第3列日1~31 第4列月1~12 第5列星期0~6(0表示星期天)第6列要运行的命令
Shell基础
变量
引用变量需要加$符号
变量叠加:a= "$a"123(+号不具有运算作用,想要求和,需$(($a+$b)))
set (查看系统运行的所有变量)
-u(不会输出不存在的变量)
unset 变量名(删除变量)
环境变量(本shell和所有子shell中均可以查看,用户自定义变量只能 本 shell查看)
pstree(查看进程树)
设置环境变量
export 变量名= 变量值
env(查看系统运行的环境变量)
PATH环境变量
echo $PATH
PATH= "$PATH":/root/sh
修改完修改完成后,source /etc/profile生效
PS1环境变量
\d 显示日期,\H 显示完整的主机名,\t 显示24小时制 "HH:MM:SS",\A 显示24小时制"HH:MM",\u 显示当前用户名,\w 显示当前所在目录的完整名称,\W 显示当前所在目录的最后一个目录,\$ 如果为root则显示#,普通用户显示$
PS2环境变量
\ 定义换行符
locale环境变量(系统中所有语系)
LANG (定义系统主语系的变量)
LC_ALL(定义整体语系的变量)
Linux中文支持(安装好中文字体和中文语系)
第三方远程工具,只要设置好语系,就能支持中文
纯字符界面,必须使用第三方插件(zhcon等)
位置参数变量
./canshu.sh 11 22(./canshu.sh为$0,11为$1,22为$2)
$n(n代表第几个参数),$* 、$@ (返回所有参数,$*把参数看成一个整体,$@把每个参数分区对待,可以用for循环来检验,for i in "$*"),$@(返回参数个数)
预定义变量
$?(最后一次命令的返回值),$$(当前进程的进程号),$!(后台运行的最后一个进程的进程号)
接受键盘输入
read [选项] 变量名(-p 提示信息,-t 等待时间,-n 接受指定字符数执行,-s 隐藏输入的数据)
read -p "please input your name" -t 30 -s -n 5 name
echo $name
运算符
declare [+/-] [选项] 变量名
-给变量设定类型,+取消变量的类型,-a数组型,-i整型,-x环境变量(export也是调用的declare命令,只是简化版),-r只读变量,-p显示变量的类型
定义数组
array[0]=value1
declare -a array[1]=value2
查看数组 echo ${array[0]}
数值运算方法
方法1 declare -i a=$b+$c
方法2 expr或let工具 a= $(expr $b + $c)
方法3 a= $(($b+$c))
正则表达式
字符截取命令
cut命令(-f 第几列;-d 分隔符,默认是tab) 例:cut -d ":" -f 1,3 /etc/passwd
printf '输出类型 输出格式' 输出内容
-%ns 输出字符串 n代表几个字符;-%ni 输出整数;-%m.nf 输出浮点数 %8.2f代表6位整数2位小数
\a 输出警告声音;\b 输出退格键;\f清除屏幕;\n 换行;\r 回车;\t 水平输出退格键,也就是tab键;\b 垂直输出退格键,也就是tab键
例: printf '%s' $(cat /etc/passwd) 读取文件内容
print命令会自动在每行结束后加换行符,而printf不会自动加
awk '条件1{动作1}条件2{动作2}...' 文件名 FS也就是分隔符,默认是空格;BEGIN 第一行内容存入$1时,先执行这个动作
例:awk 'printf $2 "\t" $1 "\n"' /etc/passwd ($0为文件名,$1是第一个字段,$2是第二个字段...)
df -h | grep "/dev/sda1" | awk '{print $5}' | cut -d '%' -f 1(获取磁盘已用百分比)
cat /etc/passwd | grep /bin | awk '{FS=":"}{print $1 "\t" $3}'
sed命令 轻量级流编辑器,文本选区,替换,删除,新增
sed [选项] '[动作]' 文件名
选项
-n 一般sed命令会把所有数据全都输出都屏幕,如果加入此选项,则会把经过处理的行输出到屏幕
-e 允许对输入数据应用多条sed命令编辑
-i 用sed的修改结果直接修改读取数据的文件,而不是由屏幕输出
动作
a 追加 在当前行后添加一行或多行
c 行替换
i 在当前行前添加一个或多行
d 删除指定行
p 打印 输出指定航
s 字符替换,用一个字符串替换另外一个字符串。格式为 “行范围s/旧字串/新字串/g”
例子:sed -n '2p' /etc/passwd (打印文件第二行)
sed '2,4d' /etc/passwd (删除第二行到第四行的数据,但不修改数据本身)
sed -e 's/a/b/g;s/c/d/g' /etc/passwd
字符串处理命令
sort [选项] 文件名
-f 忽略大小写
-n 以数字型排序,默认一字符串型排序
-r 反向排序
-t 指定分隔符 默认分隔符是tab
-k n[,m] 按照指定的字段范围排序
例: sort -t ":" -k 3,3 /etc/passwd
Shell编程之流程控制和条件判断
按照文件类型判断
-d 是否存在并且是否是目录
-e 是否存在
-f 是否存在并且是否是普通文件
-L 是否存在并且是否是链接符号
-s 当file存在文件大小大于0时返回真
按照文件权限判断
-r 是否存在并且是否拥有读权限
-w 是否存在并且是否拥有写权限
-x 是否存在并且是否拥有执行权限
-u 是否存在并且是否拥有SUID权限
-g 是否存在并且是否拥有SGID权限
-k 是否存在并且是否拥有Sbit权限
两个文件之间的比较
文件1 -nt 文件2 文件1的修改时间是否比文件2新,如果新则为真
文件1 -ot 文件2 文件1的修改时间是否比文件2旧,如果旧则为真
文件1 -ef 文件2 文件1是否和文件2的Inode号一致,可以理解为两个文件是否为同一个文件。是判断硬链接很好的方法。
两个整数之间的比较
-eq 是否相等
-nq 不相等
-gt 大于
-lt 小于
-ge 大于等于
-le 小于等于
字符串判断
-z 字符串 判断字符串是否为空,为空返回真
-n 字符串 判断字符串是否非空,非空为真
字串1 == 字串2
字串1 != 字串2
多重条件判断
判断1 -a 判断2 逻辑与
判断1 -o 判断2 逻辑或
! 逻辑非,使原始的判断式取反
流程控制语句
if [ 条件判断式 ];then
...
fi
if [ 条件判断式 ]
then
...
fi
if [ 条件判断式 ];then
...
else
...
fi
if [ 条件判断式1 ];then
...
elif [ 条件判断式2 ];then
...
else
...
fi
case $变量名 in
"值1")
...
;;
"值2")
...
;;
esac
for 变量 in 值1 值2 值3
do
...
done
for ((初始值;循环控制条件;变量变化))
do
...
done
while [ 条件判断式 ]
do
...
done
until [ 条件判断式 ]
do
...
done
附录:
查看文件大小的命令
ls -lht (-t 按时间进行文件的排序 -l列出文件的详细信息,如创建者,创建时间,文件的读写权限列表等等。)
du -sh * (-s 就是summary, 显示该目录占用空间的总和)
w命令查看所有登录的pts
pkill -kill -t pts/0杀掉pts/0这个登录端
Linux 新手的学习笔记的更多相关文章
- Linux进程间通信IPC学习笔记之同步二(SVR4 信号量)
Linux进程间通信IPC学习笔记之同步二(SVR4 信号量)
- Linux进程间通信IPC学习笔记之同步二(Posix 信号量)
Linux进程间通信IPC学习笔记之同步二(Posix 信号量)
- Linux进程间通信IPC学习笔记之消息队列(SVR4)
Linux进程间通信IPC学习笔记之消息队列(SVR4)
- Linux进程间通信IPC学习笔记之有名管道
基础知识: 有名管道,FIFO先进先出,它是一个单向(半双工)的数据流,不同于管道的是:是最初的Unix IPC形式,可追溯到1973年的Unix第3版.使用其应注意两点: 1)有一个与路径名关联的名 ...
- Linux进程间通信IPC学习笔记之管道
基础知识: 管道是最初的Unix IPC形式,可追溯到1973年的Unix第3版.使用其应注意两点: 1)没有名字: 2)用于共同祖先间的进程通信: 3)读写操作用read和write函数 #incl ...
- Linux防火墙iptables学习笔记(三)iptables命令详解和举例[转载]
Linux防火墙iptables学习笔记(三)iptables命令详解和举例 2008-10-16 23:45:46 转载 网上看到这个配置讲解得还比较易懂,就转过来了,大家一起看下,希望对您工作能 ...
- linux基础命令学习笔记(二)
linux基础命令学习笔记(二) 1.kill :终止进程 kill pid (唯一标示一个进程) kill -9 强制终止 kill -15 命令未结束不能终止 # ps aux 查看所有进程 ...
- 兄弟连Linux运维学习笔记
最新经典linux运维兄弟连Linux运维学习笔记... --------------- 全程1.5倍播放.加油我一定可以学完Linux----------------------Unix与Linux ...
- Linux shell 菜鸟学习笔记....
20171123 Linux shell 基础学习笔记1. shell 的开始 一般是 #!/bin/bash 通过 #! 来唯一指定使用的shell路径 其他的 # 都表示注释.2. shell 的 ...
随机推荐
- js的replace函数入参为function时的疑问
近期在写js导出excel文件时运用到replace方法,此处详细的记录下它各个参数所代表的的意义. 定义和用法 replace() 方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式 ...
- Windows环境下的NodeJS+NPM+Bower安装配置
npm作为一个NodeJS的模块管理,之前我由于没有系统地看资料所以导致安装配置模块的时候走了一大段弯路,所以现在很有必要列出来记录下.我们要先配置npm的全局模块的存放路径以及cache的路径,例如 ...
- python爬虫学习(7) —— 爬取你的AC代码
上一篇文章中,我们介绍了python爬虫利器--requests,并且拿HDU做了小测试. 这篇文章,我们来爬取一下自己AC的代码. 1 确定ac代码对应的页面 如下图所示,我们一般情况可以通过该顺序 ...
- Holographic Remoting Player
https://developer.microsoft.com/en-us/windows/holographic/holographic_remoting_player http://www.cnb ...
- 高级查询---嵌套and分页
高级嵌套语句: 子查询: 语句: select * from 表名 where 列名= ( 子查询语句 ) 注意:子查询语句必须放在小括号呢 可以使用< >=等运算符号,sql serve ...
- redis键命令
1.ping命令用于检测redis是否启动 成功返回pong表示链接成功 2.在远程redis服务上执行命令 Redis-cli -h host -p port -a password 如果是连接本机 ...
- spring3 循环依赖
循环依赖就是循环引用,就是两个或多个Bean相互之间的持有对方,比如CircleA引用CircleB,CircleB引用CircleC,CircleC引用CircleA,则它们最终反映为一个环.此处不 ...
- 继承AppCompatActivity的Activity隐藏标题栏
继承了AppCompatActivity的Activity无法通过调用requestWindowFeature(Window.FEATURE_NO_TITLE)来隐藏标题栏. public class ...
- PHP环境的搭建(Apache)
一,下载XAMPP集成软件包. 二,Apache的安装配置: Apache的安装就点击下一步下一步,默认路径在系统的C盘. 三,在star Apache的时候,出现了端口号80冲突(被占用),解决 ...
- 唯物 VS 唯心
对于唯物和唯心,我了解的并不多.我所知道的那点皮毛,也只是源于教课书.只是近来恋上了阳明大哥,而在某年的高考模拟题中,阳明竟被作为唯心主义的代表,供考生们批判.这一批搞得我着实不爽,决定要为他平反 ...