首页 > 代码库 > linux学习:特殊符号,数学运算,图像与数组与部分终端命令用法整理

linux学习:特殊符号,数学运算,图像与数组与部分终端命令用法整理

一:特殊符号用法整理

算术比较
-eq 等于
-ne 不等于
-gt 大于
-lt 小于
-ge 大于或等于
-le 小于或等于
-a 逻辑与 and &&
-o 逻辑或 or ||
[ $var -eq 0 ]    #当$var等于0时,返回真
[ $var -ne 0 ]    #当$var为非0时,返回真
[ $var1 -ne 0 -a $var2 -gt 2 ]
[ $var1 -ne 0 -o $var2 -gt 2 ]

字符串比较
[[ $str1 = $str2 ]]     #当str1等于str2时,返回真。注意:=号前后各有一个空格,如果忘记加空格,则当成赋值处理
[[ $str1 == $str2 ]]
[[ $str1 != $str2 ]]
[[ $str1 > $str2 ]]
[[ $str1 < $str2 ]]
[[ -z $str1 ]]   #如果str1包含的是空字符串,则返回真。
[[ -n $str1 ]]   #如果str1包含的是非空字符串,则返回真。

文件系统相关条件标志
[ -f $var ]     #如果给定的变量名包含正常的文件路劲或文件名,则返回真。
[ -x $var ]    #如果给定的变量包含的文件可执行,则返回真。
[ -d $var ]    #如果给定的变量包含的是目录,则返回真。
[ -e $var ]    #如果给定的变量包含的文件存在,则返回真。
[ -c $var ]    #如果给定的变量包含的是一个字符设备文件的路劲,则返回真。
[ -b $var ]    #如果给定的变量包含的是一个块设备文件的路劲,则返回真。
[ -w $var ]   #如果给定的变量包含的文件可写,则返回真。
[ -r $var ]    #如果给定的变量包含的文件可读,则返回真。
[ -L $var ]   #如果给定的变量包含的是一个符号链接,则返回真。
----------------------------------
fpath="/etc/passwd"
if [ -e $fpath ]; then
echo File exists;
else
echo Dones not exist;
fi
----------------------------------

重定向符号 ">" 和">>"
echo "This is a sample text 1" > temp.txt    #输出重定向到文件并清空文件原本的内容
echo "This is a sample text 2" >> temp.txt  #输出重定向到文件不清空文件原本的内容
pwe >> temp.txt

字段分隔符与迭代器
-----------------------------------
eg1:
data="http://www.mamicode.com/name,sex,rollno,location"
oldIFS=$IFS   #IFS是存储定界符的环境变量
IFS=,now,
for item in $data;
do
echo Item: $item
done
IFS=$oldIFS

eg2:
#!/bin/bash
line="root:x:0:0:root:/root:/bin/bash"    #/etc/passwd 的用户信息
oldIFS=$IFS;
IFS=":"
count=0
for item in $line
do
[ $count -eq 0 ] && user=$item;
[ $count -eq 6 ] && shell=$item;
let count ++
done;
IFS=$oldIFSecho $user\‘s shell is $shell
-----------------------------------

 二:数学运算,图像与数组

let 直接执行基本的算数操作
let result=nol+nol2
let no1++
let no1--
类似
result=$[ no1 + no2 ]
result=$[ $no1 + 5 ]
result=$(( no1 + 50 ))

expr 用于基本算数运算操作
result=`expr 3 + 4`
result=$(expr $no1 +5)

bc 支持浮点数的高级数学运算工具
echo "4 * 0.56" | bc
------------------------------
no=54;
result=`echo "$no * 1.5" | bc`
echo $result
------------------------------

数组
array_var=(1 2 3 4 5 6)        #定义数组
array_var[6]=7;
echo ${array_var[6]}           #7
-----------------------------
index=5
echo ${array_var[$index]}   #6
-----------------------------
echo ${array_var[*]}          #1234567 打印所有值
echo ${array_var[@]}         #1234567
echo ${#array_var[*]}        #7 打印数组元素个数
--------------------------------------------------
declare -A ass_array            #单独将变量名声明为关联数组
ass_array=([index1]=var1 [index2]=var2)
ass_array[index3]=var3;
ass_array[index4]=var4;
--------------------------------------------------
echo ${!ass_array[*]}         #获取数组的索引列表
echo ${!ass_array[@]}        #同上

图像相关
要使用convert需要iamgemagick支持。sudo apt-get install imagemagick
convert image.png image.jpg      #将一种图像格式转换为另一种图像格式
convert image.png -resize 1024x768 image.png    #改变WIDTHxHEIGHT调整图像大小,WIDTH和HEIGHT必须至少提供一个
convert image.png -resize 1024x image.png         #提供了WIDTH,自动按照图像比例缩放
convert image.png -resize "50%" image.png         #使用百分比缩放图像

for i in *; do mencoder -oac mp3lame -lameopts vbr=3 -ovcxvid -xvidencopts fixed_quant=4 -of avi $i -o `echo $i | sed -e‘s/rmvb$/avi/‘`; done      #批量将rmvb转为avi
for i in *; do convert -resize 30%x30% $1 sm-$1; done            #批量缩小图片到30%
for i in *; do convert $i `echo $i | sed -e ‘s/jpg$/png/‘`; done   #批量转换jpg到png
for i in *; do inkscape $i –export-png=`echo $i | sed -e ‘s/svg$/png/‘`; done            #批量将svg转为png
find . -name *.jpg -exec wc -c {} \; | awk ‘{print $1}‘|awk ‘{a+=$1}END{print a}‘   #统计当前目录下所有jpg文件的尺寸

identify -verbose xxx.jpg        #去掉文件中的^M
cat filename | tr -d "^M" > newfile     #获取jpg的扩展信息(Exif)
sudo apt-get install abcde;abcde -o mp3 -b   #CD 抓轨为 mp3 (有损)
sudo apt-get install abcde;abcde -o flac -b     #CD 抓轨为 Flac (无损)

三:部分终端命令用法整理

终端信息
tput cols       #获取终端列数
tput lines             #获取终端行数
tput longname     #获取终端名
tput bold      #设置文本样式为粗体
tput setb no     #设置终端背景色 no为0到7
tput setf no      #设置终端前景色
tput cup 100 100 #定位光标

日期时间
date           #打印纪元时
date +%s           #打印此时的时间戳
cal             #显示日历
date -s mm/dd/yy     #设置日期
date -s HH:MM      #设置时间
hwclock –systohc      #将时间写入CMOS
hwclock –show      #查看CMOS时间
hwclock –hctosys     #读取CMOS时间
sudo ntpdate ntp.ubuntu.com    #从服务器上同步时间
sudo cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime   #设置电脑的时区为上海
sudo sed -ie ’s/UTC=yes/UTC=no/g’ /etc/default/rcS;sudo hwclock –systohc    #关闭UTC,将当前时间写入CMOS

开关机
sudo halt          #命令关机
sudo shutdown -h now      #现在关机
sudo shutdown -h 23:00   #晚上11点自动关机
sudo shutdown -h +60      #60分钟后关机
sudo reboot          #命令重启电脑
sudo shutdown -r now       #现在重启电脑
synclient touchpadoff=1    #关闭笔记本的触摸板
synclient touchpadoff=0    #开启笔记本的触摸板

用户登录信息
who      #获取当前登陆的用户信息
w      #同上
users    #列出当前登录主机的用户列表
uptime   #查看系统已经通电运行了多长时间
last      #获取前一次的启动及用户登录会话的信息
last user   #获取单个用户的会话信息
inotifywait -m -r -e create,move,delete,open,close,access,modify,attrib /data/test -q >> test.log     #监视/data/test目录的创建,移动,删除,打开,关闭,访问,修改,文件元数据被修改等事件。-m持续监视,-r递归监视目录,-e需要监视的时间列表,-q简化输出

系统信息
which ls         #输出作为参数的命令的所在位置
whereis ls      #输出作为参数的命令所在的位置和该命令手册的位置及源码的路劲
whatis ls    #输出作为参数的命令的简短的描述信息,这些信息来之该命令的手册
hostname    #输出系统的主机名
uname -n      #同上
uname -a       #打印Linux的内核版本、硬件架构等详细信息
uname -r       #打印内核发行版本
uname -m      #打印主机类型
cat /proc/cpuinfo     #打印cpu相关信息
cat /proc/meminfo   #打印内存的详细信息
cat /proc/meminfo | head -l    #打印系统可用内存总量
cat /proc/partitions    #列出系统的分区信息
cat /proc/5346/status    #查看PID为5346的进程的信息
cat /proc/cpuinfo | head -n 5 | tail -l    #打印处理器名称
fdisk -l                    #同上
lshw             #获取系统的详细信息
lsmod              #查看内核加载的模块
lspci             #查看PCI设备
lsusb -v            #查看USB设备
sudo lshw         #显示当前硬件信息
sudo fdisk -l         #查看硬盘的分区
sudo fdisk /dev/sda  #硬盘分区
sudo iostat -x 2    #查看硬盘当前读写情况
sudo mkfs.ext3 /dev/sda1    #硬盘格式化
ulimit -n 4096 或 echo 4096 > /proc/sys/fs/file-max   #增加系统最大打开文件个数

sleep 3              #延迟3秒再往下执行
more file           #分页查看文件内容
less file           #可控分页查看文件内容
sudo vim /etc/motd          #修改系统登录信息
logger LOG_MESSAGE      #向syslog中记录日志信息
alias install=‘sudo apt-get install‘    #别名:使用install来代替sudo apt-get install命令
export http_proxy=http://xx.xx.xx.xx:xxx    #终端设置代理
zenity --info --text "This is a message"    #用zenity创建一个信息框,上面显示文本“This is a message”
convmv -r -f cp936 -t utf8 –notest –nosmart *    #转换文件名由GBK为UTF8
iconv -f gbk -t utf8 $i > newfile    #转换文件内容由GBK到UTF8
sudo apt-get install python-mutagen;find . -iname ‘*.mp3′ -execdir mid3iconv -e GBK {} \;    #转换 mp3 标签编码

录制与回放终端会话
------------------------------------------------------------
script -t 2> timing.log -a output.session    #开始录制终端会话
type commands;    #要录制的会话命令
...
..
exit    #结束录制
scriptreplay timing.log output.session    #播放命令序列输出
------------------------------------------------------------
打开两个终端:T1和T2
在T1中输入命令:mkfifo scriptfifo
在T2中输入命令:cat scriptfifo
返回T1,输入:script -f scriptfifo
要接受会话的话就输入exit
------------------------------------------------------------

读取终端输入:read
read -n 5 var    #从输入中读取5个字符并存入变量var
read -s var       #用不回显的方式读取输入到变量var
read -p "Enter input:" var    #显示提示信息
read -t 5 var    #读取5秒内的输入到变量var
read -d ":" var     #用界定符“:”结束输入行
echo $var
--------------------------------------
输入密码时不显示:
#!/bin/sh
echo -e "Enter password:"
stty -echo
read password
stty echo
echo
echo Password read.
--------------------------------------

符号链接
ln -s /var/www ~/web    #在当前用户的home目录下创建名为web的符号链接。链接指向/var/www
ls -l web | awk ‘{ print $10 }‘       #/var/www
readlink web                 #/var/www
ls -l | grep "^l" | awk ‘{ print $8 }‘   #grep选出以l开头的行之后用awk打印出第8列。

环回文件与挂载
dd if=dev/zero of=loopbackfile.img bs=1G count=1    #创建一个环回文件,大小为1GB
mkfs.ext4 loopbackfile.img    #将文件格式化为ext4文件系统
sudo file loopbackfile.img      #检查文件系统
mount -o loop loopback.img /mnt/loopback    #将环回文件挂载到/mnt/loopback目录上(-o loop 用来挂载环回文件系统)
losetup /dev/loop1 loopback.img    #(1)
mount /dev/loop1 /mnt/loopback   #(2)将loopback.img 挂载到目录/mnt/loopback,这个环回文件连接到一个名为/dev/loop1的设备上
losetup -o 32256 /dev/loop2 loopback.img    #在lookback.img中创建分区并挂载第一个分区,-o表示偏移量。第一个分区自硬盘第32256字节之后起始的。
sudo umount /mnt/sda1    #卸载

快速定位
pushd /var/www    #将该目录压进栈,并切换到该目录
pushd /usr/src      #同上
dirs          #查看栈中的元素
pushd +2         #切换到栈中第3个元素存放的目录
popd +2       #移除栈中第3个元素存放的目录

软件包相关
aptitude search pakege    #查找软件库pakege中的软件
dpkg -S filename         #查找文件属于哪个包
dpkg -L xxx          #查看软件xxx安装内容
apt-cache search partitions  #使用正则表达式partitions查找软件库中的软件
apt-file search filename    #查找文件属于哪个包
apt-cache depends xxx    #查询软件xxx依赖哪些包
apt-cache rdepends xxx     #查询软件xxx被哪些包依赖
apt-cache show k3b      #显示包的信息
apt-cache pkgnames        #显示系统全部可用包的名称
apt-cache stats        #显示系统安装包的统计信息
sudo apt-cdrom add        #增加一个光盘源
sudo apt-get autoclean    #清理旧版本的软件缓存
sudo apt-get update
sudo apt-get dist-upgrade   #系统升级
sudo apt-get autoremove    #删除系统不再使用的孤立软件
lsb_release -a 或 cat /etc/issue    #查看Ubuntu版本
dpkg -l |grep ^rc|awk ‘{print $2}’ |sudo xargs dpkg -P    #清除已删除包的残馀配置文件
export GIT_SSL_NO_VERIFY=1    #系统不信任github网站时执行

 

linux学习:特殊符号,数学运算,图像与数组与部分终端命令用法整理