lunixshell基础常用整理


1 ps -ef 显示正在运行的进程,pid 等信息
UID PID PPID C STIME TTY TIME CMD root 1 0 0 03:45 ? 00:00:02 init [5] root 2 1 0 03:45 ? 00:00:00 [migration/0] root 3 1 0 03:45 ? 00:00:00 [ksoftirqd/0] root 4 1 0 03:45 ? 00:00:00 [events/0] root 5 1 0 03:45 ? 00:00:00 [khelper] root 6 1 0 03:45 ? 00:00:00 [kthread] root 9 6 0 03:45 ? 00:00:00 [kblockd/0] root 10 6 0 03:45 ? 00:00:00 [kacpid]

2 df -h 可读显示磁盘空间 M是兆 Filesystem Size Used Avail Use% Mounted on /dev/sda2 18G 5.0G 12G 31% / /dev/sda1 289M 16M 258M 6% /boot tmpfs 506M 0 506M 0% /dev/shm
3 借助df命令,可以方便地了解磁盘是否已空间不足,系统管理员需要了解空间不足时该怎么办。 我们可以使用du命令 ,du命令显示特定目录的磁盘使用情况,这是判断系统是否存在磁盘占用大户的快捷方法。 du , du -h(显示M,G单位) ,du -c (汇总),du -s(汇总所有,只显示一个) du [ -a | -s ] [ -k ] [ -m ] [ -g ][ -l ] [ -r ] [ -x ] [ -H | -L ][ File ... ]
8.0K ./test_flume/.flumespool 24K ./test_flume 8.0K ./mnt 58M ./awk 28K ./shell 18M ./spark 76M .
4 sort (排序) sort file.txt
默认按字符排序数字排序 sort -n file.txt sort -n file2 0 2 3 5 6 7 9 17
sort -M file3.txt (按照月份排序)
sort -t ':' -k 3 -n /etc/passwd 按指定分隔符':" 第三个字段进行排序 按数字排序的
du -sh * | sort -nr 按空间占用从大到小 排序 包括文件夹和文件 r是指降序排列
5 gzip :用于压缩文件
gzip 2.sh gzip file* gzip -r test1 test2 压缩2个文件

tar -cvf my.tar my.sh tar压缩 tar -xvf my。tar tar解压
tar -zxvf filename.tgz
7 打印环境变量 printenv
bash test=testing echo $test
7 finger llisc
/usr/sbin/groupadd shared
/usr/sbin/usermod -G shared test
文件权限表 755

chmod o+r newfile 将条目读取添加到任何人
chmod u-x newfile 将条目山下湖用户拥有的执行权限 chmod u+x newfile
chown 修改用户文件拥有者 和所在组

9 shell
rpm -qa | sort | more
echo $?

if 表达式 返回0 执行成功 then fi

if test [ condition ]

for var in Li72 Alibaba taobao Newbatilr do echo the state $test done

使用转移字符反斜杠符合来转移单引号使用双引号来定义单引号的值

#!/bin/bash for file in /home/bigdata/test/* /home/li75/ do if [ -d "$file" ] then echo "$file is a directory " elif [ -f "$file" ] then echo "$file is a file " fi done

#!/bin/bash for(( i=1; i<= 10; i++)) do echo " The next number is $i" done

#!/bin/bash var1=10 while [ $var1 -gt 0 ] do echo $var1 var1=$[ $var1 - 1 ] done

#!/bin/bash var1=100 until [ $var1 -eq 0 ] do echo $var1 var1 =$[ $var1 -25 ] done

#!/bin/bash for((a =1; a<=3; a++)) do echo "starting loop $a:" for((b=1;b<=3;b++)) do echo " inside loop: $a*$b " done done

break contince

#!/bin/bash for(( a=1; a<4 ;a++)) do echo "Outer loop :$a" for((b=1;b<100;b++)) do if [ $b -gt 4 ] then break 2 fi echo "Inner loop :$b" done done > test.txt 重定向到一个文件 | sort 排序

参数 位置参数 $0 为为程序名称 $1 为第一个参数 $2 为第二个参数 $3 为第三个参数

#!/bin/bash factorial=1 for((number =1;number<= $1;number++)) do factorial=$[ $factorial * $number ] done echo The factorial of $1 is $factorial

name =` basename $0` 获取运行shell 脚本名称

if [ -n "$1" ] 判断有没有传入参数
if [ $# <5 ] 判断传入参数个数
获取最后一个参数的值 params =$#
echo parm : $params 或者 The last paramer ${!#}

$* 把所有的参数当作一个参数 $@ 把所有参数当作字符串 分开处理

#!/bin/bash while [ -n "$1" ] do case "$1" in -a) echo "Found the -a option" ;; -b) echo "Found the -b option" ;; -c) echo "Found the -c option";; *) echo "$1 is not an option";; esac shift done

#!/bin/bash echo -n 'Enter your name :" read name echo "Hello $name, welcome to my prorram ."

#!/bin/bash read -p "Please enter your age :" age days =$[ $age * 365 ] echo " That makes you over $days days old !"
ls -al test test22 test3 badtest &>test7
#!/bin/bash echo "This is an error " >&2 echo "This is normal output "
#!/bin/bash exec 1>testout echo "This is a test of redirting all output" echo "without having to redirect every line "
#!/bin/bash exec 2>testerror
echo "This is the start of the script" echo "now reidirecting all output to another " exec 1>testout2
echo "This putput should go to the " echo "but shis should go to testerror file >&2

#!/bin/bash exec 0<testfile2 count=1 while read line do echo "Line #$count :$line" count=$[ $count +1 ] done
lsof -a -p $$ -d 0,1,2
重定向到空文件 ls -al >/dev/null
cat /dev/null > testfile
同时记录文件和打印到屏幕
date | tee testfile
追加数据
date | tee -a testfile
kill -9 进程id

#!/bin/bash trap "echo HaHa " SIGINT SIGTEERM echo "THis is a test program " count=1 while [ $count -le 10 ] do echo "Loop #$count" sleep 10 count=$[ $count +1 ] done echo "This is the end of test program "

把命令在后台运行用 &
sh 37.sh &
ps au
有时需要从终端启动会话,然后让脚本在结束之前以后台模式运行,即使退出终端会话有时如此可以用nohup
jobs jobs -r jobs -s jobs -l
nice 设置优先级
nice -n 10 sh 38.sh >test4out &

at 命令 batch 命令 cron 表格

#!/bin/bash time=`date +%T` echo "This script ran at $time " echo "This is the end of the script">&2

corn 表格使用特殊格式制定作业的时间。
15 10 * * * command
查看登陆用户配置的定时任务
crontab -l
编辑任务 corntab -e

#!/bin/bash function func1 { echo 'This is an example of a function" } count=1 while [ $count -le 5 ] do func1 count=$[ $count +1 ] done echo "This is the end of the loop" func1 echo "Now this is the end of the script "
函数的返回值 $?
#!/bin/bash func1(){ echo "trying to display a non" ls -ls 41.sh } echo "testing the function:" func1 echo "The exit status is :$?"
#!/bin/bash function db1 { read -p "Enter a value :" value echo "doubling the value " return $[ $value * 2 ] } db1 echo "The new value is $?"

函数返回值
#!/bin/bash function db1{ read -p "Enter a value :" value echo $ [ $value *2 ] }
result='db1' echo 'The new value is $result"

提供函数文件 可以用source 命令或称(点操作符)将现有的库函数引进.bashrc中
source /home/li72/libraries/myfuncs . /home/li72/libraries/myfuncs

function addem { echo $[ $1 +$2 ] }
function multem { echo $[ $1 * $2 ] }
function divem { if [ $2 -ne 0 ] then echo $[ $1 /$2 ] else echo -1 fi }

#!/bin/bash . ./myfuncs
result=`addem 10 16` echo "The result is $result"
.bashrc 每次启动shell 都会检查该文件 ,在已有文件的末尾添加自定义函数
. /home/bigdata/test/shell/myfuncs
文本处理 sed luinx 编辑替换
gawk

echo "This is a test " | sed 's/test/big test/'
cat>dog.txt The quick brown fox jumps over the lazy dog . The quick brown fox jumps over the lazy dog . The quick brown fox jumps over the lazy dog . The quick brown fox jumps over the lazy dog . The quick brown fox jumps over the lazy dog .
sed 's/dog/cat/' dog.txt The quick brown fox jumps over the lazy cat . The quick brown fox jumps over the lazy cat . The quick brown fox jumps over the lazy cat . The quick brown fox jumps over the lazy cat . The quick brown fox jumps over the lazy cat .

sed -e ' > s/brown/green/ > s/fox/elephant/ > s/dog/cat/' dog.txt
The quick green elephant jumps over the lazy cat . The quick green elephant jumps over the lazy cat . The quick green elephant jumps over the lazy cat . The quick green elephant jumps over the lazy cat . The quick green elephant jumps over the lazy cat .
从文件读取编辑器命令 cat>script s/brown/green/ s/fox/elephant/ s/dog/cat/

sed -f script dog.txt
The quick green elephant jumps over the lazy cat . The quick green elephant jumps over the lazy cat . The quick green elephant jumps over the lazy cat . The quick green elephant jumps over the lazy cat . The quick green elephant jumps over the lazy cat .

cat>script2 {print $5 "'s userid is " $1 }
添加用户
useradd xuhui 修改密码 usermod -p xuhui xuhui
查看密码文件 tail -l /etc/shadow

cd - 返回上一个访问的目录
查找文件命令
find [路径] [选项] [操作]

find . -name 'test*' 查找 文件名称为 test开头的

find . -mtime -90 -print 查找更改时间在90天内的文件
grep [选项] [模式] [文件]

在wodl.txt 找World单词 grep -w 'World' wodl.txt

相关内容