linux之shell常用命令介绍

时间:2024-07-16 13:03:38

一、cd    切换目录

cd /etc  切换到/etc目录下              cd ~       切换到主目录下

cd  ..      返回上级目录                     cd ../..  返回上两级目录

cd  -       返回进入此目录之前所在的目录

二、echo    输出

echo "this is a test!"        显示普通字符串:

echo -e "\n"         输出一行空行,-e 开启转义

echo `date`          显示命令执行结果

三、chmod    授予使用权限

chmod abc file    基本格式

其中a,b,c各为一个数字,分别表示User、Group、及Other的权限,权限可分为:r=4 表示可读取,w=2 表示可写入,x=1 表示可执行。

若要rwx属性则4+2+1=7;

若要rw-属性则4+2=6;

若要r--属性则为4。

四、cat   查看文件

1)打印文件内容:

cat cat1.txt    打印单个文件内容

cat cat1.txt cat2.txt    打印多个文件内容,将文件内容拼接在一起

echo "Test" | cat - cat1.txt    将标准输入和文件内容拼接在一起

在上面的代码中 - 被作为stdin文本的文件名

2)打印文件内容时常用参数:

cat -n cat3.txt    打印文件内容及行号,会为空白行加上行号

cat -b cat3.txt    打印文件内容及行号,跳过空白行

cat -s cat3.txt    压缩相邻的空白行

3)从键盘创建一个文件:

cat > cat4.txt    只能创建新文件,不能编辑已有文件

4)将几个文件合并为一个文件:

cat cat1.txt cat2.txt cat3.txt > cat5.txt

五、sed    文本编辑文本

1)局部替换:

sed 's/world/sed/' sed1.txt​

仅替换每行的第一个匹配者,不会修改源文件

sed 's/world/sed/2' sed1.txt​​

替换每行的第2个匹配者​

2)全局替换:

sed 's/world/sed/g' sed1.txt

替换文件中的所有匹配者

3)替换的字符串使用正则表达式:

sed 's/^hello.*/sed/g' sed1.txt

4)分界符/可以替换成# ; *等字符

sed 's*world*sed*g' sed1.txt

5)删除字符:

sed '/^$/d'  sed1.txt    删除sed1.txt中的空行

6)如果操作的字符串中包含变量,要将变量再次用单引号引起来:

b="sed"

sed 's/world/'$b'' sed1.txt​

否则变量名直接当做字符串处理

7)直接操作源文件:​

sed -i 's/world/sed/' sed1.txt​

8)一次性替换多个:​

sed -e 's/hello/this is/g' -e 's/sed/the sed/g' sed1.txt​

9)替换动作包含在文件中:​

vim ./test.sed

s/hello/this is/g​

s/sed/the sed/g​

sed -f test.sed sed1.txt​ > sed2.txt   --保存在新的文件中

sed -i -f test.sed sed1.txt​   --直接作用在源文件中

六、read    接受键盘数据和读取文件

1)read接受从键盘的输入:

read -p "Enter your name: " name

echo "Hello $name"

如果不指定变量,那么read命令会将接收到的数据放置在环境变量REPLY中:

read -p "How old are you? "

echo "I'm $REPLY"

2)接受多个数据:​

​read -p "Enter your name and age: " name age

echo "My name is  $name, and I'm $age."

3)计时输入:​

​   read -t 3 -p "Enter your name: " name

4)默读:

read -s -p "Enter your password: " password

echo "Your password is $ password "

输入的密码不会显示在屏幕上。

5)读文件:​

vim ./test.txt

first

second

third

vim ./read4.sh

cat -n test.txt | while read line

do

echo $line

done

七、awk    高级文本处理

1)基本结构介绍:

awk 'BEGIN{ commands }  { commands }  END{commands }' file

awk命令也可以从stdin中读取:

echo | awk 'BEGIN{ commands }  { commands }  END{ commands }'

awk脚本通常由3部分组成:BEGIN,语句块,EDN,3部分都是可选项,在脚本中可省略任意部分。

其中BEGIN和END关键字必须大写,awk的脚本内容要包含在单引号或者双引号内,awk脚本使用print输出。

所有的commands之间用分号隔开。

2)awk工作原理:​

(1)执行BEGIN{ commands }​语句

(2)从文件或者stdin中读取一行,然后执行{ commands },重复这个过程,直到文件全部读取完毕

(3)当读至输入流末尾时,执行END{ commands }中的语句

3)从文件中读取行:​

awk 'BEGIN{ print "start" } { print } END{ print "end" }' awk1.txt

语句块中使用不带参数的print时,它会打印从stdin或者文件中读取到的当前行。

4)从标准输入中读取行:​

echo -e "line1\nline2" | awk 'BEGIN{ print "start" } { print } END{ print "end" }'

5)省略BEGIN:

awk '{ print } END{ print "end" }' awk1.txt

6)再省略END:

awk '{ print }' awk1.txt

7)省略语句块:

awk 'BEGIN{ print "start" } END{ print "end" }' awk1.txt

8)语句块工作原理:

从文件或者标准输入读入有'\n'换行符分割的一条记录,然后将该条记录  按指定的分隔符划分字段,$0则表示该条记录所有字段,$1表示该条记录第一个字段,$n表示该条记录第n个字段。默认分隔符是"空白键" 或 "[tab]键"。

9)其它一些特殊变量:

NR:表示记录数量,在执行过程中对应于当前行号。

NF:表示字段数量,在执行过程中对应于当前的字段数。

举例:

awk '{ print $0 }' awk2.txt   --打印全部的文本内容

awk '{ print NR,NF,$3 }' awk2.txt  --打印每行第3列的文本内容

awk 'END{ print NR }' awk2.txt      --统计文件中的行数

awk 'END{ print NF }' awk2.txt      --统计文件中的列数

awk -F ';' '{ print $2 }' awk3.txt      --输出第二个字段

八、ssh    linux之间远程登录

ssh remote_username@remote_ip     终端远程登录到目标机器

ssh remote_username@remote_ip  "command; command;…"

远程登录目标机器执行各种shell命令,命令之间用分号隔开

九、scp    Linux之间复制文件和目录

1、从本地复制到远程

scp -r local_folder remote_username@remote_ip:remote_folder

scp -r local_folder remote_ip:remote_folder

2、从远程复制到本地

scp -r remote_username@remote_ip:remote_folder local_folder

十、重定向

command > filename      ">" 表示标准输出到filename中,如果文件不存在,则创建文件,已存在,则覆盖文件中原有的内容

command >> filename    ">>" 表示标准输出到filename中,如果文件不存在,则创建文件,已存在,追加到原有文件的后面

command >> filename 2>&1     “2>&1”是将错误输出重定向到标准输出,这里的标准输出已经重定向到了filename ,即将错误输出也重定向到filename文件中

十一、rm    删除文件和目录

1)删除文件:

rm rm1.txt   删除rm1.txt

rm rm2.txt rm3.txt  依次删除指定的两个文件

2)删除目录:

rm -r dir1      通过-r参数删除目录

注意:上面方法删除文件或目录都会询问用户是否删除,如果想直接删除,通过指定参数-f

rm -f rm4.txt   直接删除文件rm4.txt

rm -rf dir2        直接删除目录dir2

3)显示执行过程信息:

rm -vf  rm5.txt   直接删除文件rm5.txt ,并显示执行过程信息

rm -vrf dir3         直接删除dir3目录,并显示执行过程信息

4)使用正则表达式:

rm -vf *.log    删除当前目录下的所有.log文件

rm -vrf *rm*  删除所有名字中包含rm字符的文件和目录

十二、cp    复制文件和目录

1)复制文件:

cp cp1.txt cp2.txt        当前目录下复制文件

\cp cp1.txt cp2.txt      当目标文件已存在,通过\cp强制复制

cp cp1.txt /root/cp2.txt    跨目录复制文件

2)复制文件、目录到新的目录(新的目录必须已经存在):

cp cp1.txt dir1  复制一个文件到目录dir1中

cp cp1.log cp2.txt dir1     复制多个文件到目录dir1下

cp -r dir2 dir1   复制目录dir2到目录dir1中

3)使用正则表达式

cp *.log dir3     把当前目录下所有的.log文件复制到dir3目录下

cp -r dir1/ * dir3     复制dir1下的所有文件以及目录到dir3中

4)常用参数:

cp -v cp1.txt cp3.txt    显示执行过程信息

cp -i cp1.txt cp3.txt     如果目标文件已存在,复制前先询问用户

十三、free    检查内存的使用情况:

-b 、 -k 、 -m     以Byte、 KB、 MB为单位显示内存使用情况

-s<间隔秒数>  持续观察内存使用状况

十四、mkdir    创建目录

mkdir dir   仅可创建普通的不含有子目录的目录

mkdir -p dir /dir1    可创建含有子目录的目录

注意:指定的目录名不能是当前目录中已有的目录

十五、let     对变量进行数值计算

a=1       let "a+1"      echo &a       输出结果为2

十六、ls    列出目标目录中所有的子目录和文件

ls /root  列出/root目录下的内容

也可以先cd命令进入到/root目录下,然后执行ls:

cd /root

ls  -lh     #列出文件详细信息,文件大小以KB为单位,每行只列出一个文件信息

十七、df    检查文件系统的磁盘空间占用情况

df -h    根据目前磁盘空间的使用情况 以更易读的方式显示

十八、mv    文件和目录重命名、移动

1)文件、目录重命名:

mv mv.txt new_mv.txt    文件重命名

mv dir new_dir       目录重命名

2)移动文件到目录中(目标目录必须已经存在):

mv new_mv.txt mv.log dir1    移动当前目录下多个文件到dir1中

mv dir1/new_mv.txt dir2     移动dir1目录下的new_mv.txt到dir2中

3)移动目录到新的目录中(新目录必须已存在):

mv dir1 dir2   将dir1移动到dir2中

4)使用正则表达式

mv dir2/*.txt dir3    把dir1里的所有.txt文件移动到dir3

5)常用参数 :

mv -f  dir3/new_mv.txt dir    当dir下已存在该文件时,直接强制覆盖

mv log1.txt -b log2.txt      先对log2.txt备份(名字为log2.txt~)再覆盖

mv -t dir2 log1.txt log2.txt   移动多个文件到dir2中,目标目录在前

十九、tr    字符操作(替换、删除、压缩等)

1)字符转换(替换):

echo "TEST" | tr 'A-Z'  'a-z'

echo  "abc adf" | tr 'abc' 'xyz'

这里是将"a"替换成"x","b"替换成"y","c"替换成"z",而不是将整个字符串"abc"替换成"xyz"

2)删除字符:

cat cat_tr.txt | tr -d  '0-9'

3)压缩字符

echo "tesssssssst" | tr -s 's'

4)摒除多余的空行:

cat cat_tr.txt | tr -s  '\n'

tr将多余的"\n"字符合并为单一的"\n"

二十、find    查找文件

1)基本格式:

find path -option [-print] [-exec -ok command] {} \;

-print 将查找到的文件输出到标准输出
    -exec command {} \;  对查到的文件执行command操作
    -ok 和-exec相同,只不过在操作前要询用户
2)常用的命令选项:​

-name   按照文件名查找文件
    -perm    按照文件权限来查找文件
    -user      按照文件所属用户来查找文件
    -group   按照文件所属的组来查找文件

-size       按照文件大小来查找文件

-type      查找某一类型的文件,诸如:b 块设备文件;d 目录;

c 字符设备文件;p 管道文件;l 符号链接文件;f 普通文件

-empty  查找空白文件、没有子目录的文件夹

3)举例:

find /root/linux-shell/find -name '*.txt'   --指定查找路径

find ./ -name '*dir1'     --查找当前目录下名字为dir1的文件或者目录

find ./ -name '*dir1' -type d    --查找名字为dir1的目录

find ./ -name '*dir1' -type f     --查找名字为dir1的普通文件

find ./ -perm 777        --按照文件权限查找文件或者目录

find . -user oscar         --查找所属用户为oscar的文件或者目录

find . -group oscar      --查找所属组为oscar的文件或者目录

find . -size +50k           --查找大于50k的文件

find . -size +50k -size -100k    --查找大于50k小于100k的文件

find . -empty         --查找空白文件或者空文件夹

find . -name '*.log' -exec cat {} \;   --查找文件并查看文件内容

find . -name '*.log' -exec cp {} new_find.log \;  --查找文件并复制

二十一、sar    系统性能分析工具之一

sar是一个Linux系统性能分析工具之一,基本格式:

sar [options] [t] [n]

t为采样间隔,n为采样次数,默认值是1

常用options:

-u:输出CPU使用情况的统计信息

-r:输出内存和交换空间的统计信息

-b:输出I/O和传输速率的统计信息

-d:输出每一个块设备的活动信息

-x:进程ID

sar -u 2 3   每2秒采样一次,连续采样3次,监控CPU 的使用情况

sar -r 2 3   每2秒采样一次,连续采样3次,监控内存和交换空间使用情况

sar -b 2 3   每2秒采样一次,连续采样3次,监控缓冲区的使用情况

sar -d 2 3   每2秒采样一次,连续采样3次,监控设备使用情况

sar -u 2 3 -x pid  每2秒采样一次,连续采样3次,监控pid的CPU 的使用情况

二十二、ps静态的结果输出某个时间点的程序运作情况

ps aux

ps -ef

两个命令均能查看目前所有正在内存当中的程序,不同点,第一个还包含程序的cpu、内存使用率。

ps -ef | grep oscar   查看含有oscar字符串的进程的使用情况

二十三、top动态输出程序的变化

1)top命令举例:

top -b -n 2 > /tmp/top.txt

top 批次的方式更新2次,并将结果信息存到 /tmp/top.txt文件中

top -d 3 -n 3   -p pid

每间隔三秒监控一次进程号为pid的进程使用情况,共更新3次

2)在 top 执行过程当中常用的按键指令:

P :以 CPU 的使用资源排序显示

M:以 Memory 的使用资源排序显示

N :以 PID 来排序