Linux相关命令、Vi、shell编程

来源:互联网 发布:flac mac 播放 编辑:程序博客网 时间:2024/04/29 19:42

一、 系统用户、系统组管理

1、useradd

一个用户可以属于多个组,主组只有一个

useradd -c /-d /-D / -g/ -G/ -m/ -s/ -r/ -u

-c 密码提示

-d 指定目录

-D 显示默认值

-g 指定组

-G 指定辅助组

-m 创建一个跟新用户同名的家目录

-s 指定用户的默认shell,否则系统指定默认的shell(即bash)

-r 创建一个UID小于100的系统账号

-u 指定用户的UID

示例:sudo useradd –c “taozhen” –d /home/trevor –g root –G trevor –s /bin/bash –r trevor007

验证:pwd id vipw finer –l

2、userdel 斩草除根参数 –r

3、usermod

参数跟useradd差不多

4、sudo passwd user 设置密码

5、vipw 查看设置

6、组 groupadd、groupdel、groupmod

二、补充:——ln命令:

创建 软链接——和Windows中的快捷方式类似

硬链接——一个文件的入口,一个文件默认只有一个入口,如果用ln命令添加一个硬链接,那么这个文件就多一个入口,这时我们删掉任何一个入口都不会对这个文件的存在有影响,最新的Windows7开始引用这一技术。硬链接犹如为只有一扇门的房间又开了一道门,这样关闭任何一道门都不影响进入这个房间。

三、网络管理命令:

1、ifconfig eth0 192.168.0.168 /255.255.255.0 设置网卡eth0的ip地址

2、ifconfig 查看网络信息

3、route 设置网关

4、ftp/lftp lftp从用户出发,易于使用

5、ssh(加密通道) 代替telnet,使用密文传输

Sudo apt-get install ssh

Sudo shh user@192.168.0.168

6、sftp 基于ssh协议的ftp

四、Linux将计算机的资源全部视为文件

分类:字符设备文件(键盘、鼠标、显示器等)、块设备文件(硬盘、优盘等)、普通文件、目录、套接口文件、符号链接文件

计算机从键盘输入,从显示器输出,从Linux角度来看,只是从键盘这个字符设备文件输入的数据通过CPU处理,将结果输出到显示器这个字符设备文件而已,所以我们让Linux等输出结果不输出到默认的显示器字符设备文件而是输出到到一个文本文件,这对于系统而言,没有差别,就如同我们左手到右手那么易如反掌,更没有什么奇怪,因为在系统看来字符设备文件很系统中的文本文件都是文件。

五、shell中的管道和重定向

管道:用一个命令的输出作为另一个命令的输入,command | command

输出重定向:command>output 输入,清空后添加

command>>output 输入,插入文件末端

command

六、vi与vim

1、Vi的三种工作模式:命令模式(初试状态)(编辑模式或末行模式下按“Esc”进入)

编辑模式(在命令模式下输入i、o、r、a(不分大小写)进入)

末行模式(在命令模式下输入:或/或?进入)

2、从Ubuntu6.06开始,Ubuntu将默认的编辑器设置为VIM-tiny,其用法与经典的VI有很大差异,所以得重新安装VIM,sudo apt-get install vim

3、 命令模式下ZZ保存退出,ZQ不保存退出

末行模式 w 保存文件

wq 保存并退出

q 没有被修改,可以退出

q! 强行退出vi,不保存修改的内容

4、 vi example光标定在第一行第一列

vi + example光标定在最后一行第一列

vi +N example光标定在第N行第一列

vi +/string example光标定在文件中第一次出现string的行首列

5、 set number 显示行号

set nonumber 不显示行号

Set ai 自动缩进

Set noai 取消自动缩进

Syntax on 语法高亮

Set all 显示vi各选项的设置情况

Sh 切换到shell

!cmd 执行shell命令cmd

f 显示当前文件及工作缓冲区状况

ctrl+g 同f

可以先备份/etc/vim/vimrc文件,然后直接编辑,这样就可以永久保存这些设置,还可以保存文件在其他地方使用(去掉双引号即可打开相应设置,没有的自己添加)。

6、光标的移动:↑- k,↓- j,← h,→ i,0 到行首,$ 到行尾,+或回车符 下行首,- 上行首。

7、X,x,nX,nx 命令模式下删除当前字符/当前开始的n个字符

8、 块复制 v-y-p

块移动 v-d-p

行复制 yy-p

行移动 dd-p

9、”.” 重复上次执行的命令

u 撤销上条

U 撤销所有

Ctrl+r 恢复/重做(与u相反)

10、/string 从当前位置向后检索字符串string,并将光标定位在该串起始位置(向后循环检索)(*)

?string 从当前位置向前检索字符串string,并将光标定位在该串起始位置(向后循环检索)(*)

// 重复上一条检索命令,但方向是向后检索

?? 重复上一条检索命令,但方向是向前检索

n 重复上一条检索命令,而不管其检索方向(*)

N重复上一条检索命令,但检索方向改变(*)

:g/string 检索字符串string,光标定位在第一次检索到的string所在的行首

* 搜索光标所在的word(*)

七、shell编程

1、Shell Scripts(Shell脚本)支持变量与简单的语法来完成批量工作(类似于Windows下面的.bat文件)

2、Shell脚本支持交互的方式,在执行的时从标准输入读取数据

3、有大量的系统工程都通过Shell脚本的方式来完成,例如系统开机,服务控制

4、Shell执行前,需要添加执行权限 sudo chmod u+x shell.sh

5、在脚本中,#开头表示该行被注释

6、脚本中可以采用shell(终端)下能使用的所有命令、变量、正式表达式

7、脚本的数据读取与写出:

①read input /*从标准输入读取数据为input变量赋值*/

②echo “output”或printf(“output”) /*输出output*/

8、运行shell脚本的三种方法:

①sh /路径/脚本名

②路径/脚本名

③. /路径/脚本名

9、Shell脚本的逻辑结构:①顺序结构②分支结构③循环结构

10、四种语句:

①条件判断语句if:

if 条件

then 动作

elif 条件

then 动作

else

动作

fi /*逆序*/

示例shell脚本程序(.sh):

#!/bin/bash

#Author:Trevor

echo "1:show 1 level of system filesystem"

echo "2:show 2 level of system filesystem"

read CHOICE

if [ $CHOICE = 1 ]

then tree -d -L 1 /|less

elif [ $CHOICE = 2 ]

then tree -d -L 2 /|less

else echo "Sorry,$CHOICE not recognized.Enter 1 or 2,please!"

fi

②条件判断语句case:

case 表达式 in

匹配值1)

动作;;

匹配值2)

动作;;

*)

动作;;

esac /*逆序*/

示例shell脚本程序(.sh):

#!/bin/bash

#Author:trevor

echo "1:show 1 level of system filesystem"

echo "2:show 2 level of system filesystem"

echo "3:show 3 level of system filesystem"

echo "Please enter your chioce:"

read CHOICE

case $CHOICE in

1)

tree -d -L $CHOICE /|less;;

2)

tree -d -L $CHOICE /|less;;

3)

tree -d -L $CHOICE /|less;;

*)

echo "Sorry,$CHOICE not recongnized.Enter 1 - 3,please!";;

esac

③循环控制语句select:

select 变量 in 数组

do

动作

done

④循环语句for:

for 变量 in 数组

do

动作

done

示例shell脚本程序(.sh):

#!/bin/bash

echo "Please Enter the first directory:"

read DIR1

echo "Please Enter the second directory:"

read DIR2

echo "Please Enter the third directory:"

read DIR3

echo "Please show style(1:more,2:less):"

read CHOICE

case $CHOICE

case $CHOICE in

1)

for SD in $DIR1 $DIR2 $DIR3

do

echo $SD

ls -lF $SD | more

done;;

2)

for SD in $DIR1 $DIR2 $DIR3

do

echo $SD

ls -lF $SD | less

done;;

*)

echo "Sorry,$SD not recognized.Enter 1 or 2,please!";;

esac

八、其他四个程序

#include

int main(void)

{

int i,j,k;

for(i=0;i<=3;i++)

{

for(j=0;j<=2-i;j++)

printf(" ");

for(k=0;k<=2*i;k++)

printf("*");

printf("/n");

}

for(i=0;i<=2;i++)

{

for(j=0;j<=i;j++)

printf(" ");

for(k=0;k<=4-2*i;k++)

printf("*");

printf("/n");

}

return 0;

}

#include

int main(void)

{

int day,x1,x2;

day=9;

x2=1;

while(day>0)

{

x1=(x2+1)*2;/*第1天的桃子数是第2天桃子数加1后的2倍*/

x2=x1;

day--;

}

printf("the tatal is %d/n",x1);

return 0;

}

#include

#define N 10

int main(void)

{

int i,j,min,tem,a[N];

/*input data*/

printf("please input ten num:/n");

for(i-0;i

{

printf("a[%d]",i);

scanf("%d",&a[i]);

}

printf("/n");

for(i=0;i

printf("%5d",a[i]);

printf("/n");

/*sort ten num*/

for(i=0;i

{

min=i;

for(j=i+1;j

if(a[min]>a[j]) min=j;

tem=a[i];

a[i]=a[min];

a[min]=tem;

}

/*output data*/

printf("After sorted /n");

for(i=0;i

printf("%5d",a[i]);

return 0;

}

原创粉丝点击