linux基本操作
pwd、cd
mkdir、touch
cp、mv //拷贝 移动
rmdir、rm //删除目录 删除文件
chown、chgrp //chown 改变文件的所有这或者群组 //chgrp 改变用户所属组
Chmod //改变文件或目录权限
ln 符合连接和硬连接 //-s创建 软连接
当 我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在某个固定的目录,放上该文件,然后在其它的 目录下用ln命令链接(link)它就可以,不必重复的占用磁盘空间。例如:ln -s /bin/less /usr/local/bin/less
find、which、locate、whereis
gzip、bzip2 两种文件压缩
tar打包和解包
查看Linux的根目录,列出Linux系统根目录下的主要目录,并说明目录的用途。
// #cd … #ls-l
在/tmp目录下新建文件myfile。// #Touch /tmp/myfile
查看文件myfile属性等详细信息。// #ls -lh
将上题myfile的权限更改为对所有人均可读写。// #chmod 666 myfile
将文件/var/log/syslog(如该文件不存在,换为其他任意文本文件)拷贝到/tmp目录下,且命名为syslogbak。
// #cp /var/log/secure /tmp/syslogbak
查看文件/tmp/syslogbak的内容,请比较查看文本文件内容的命令有哪些?各有何特点?
// #cat /tmp/syslogbak 由第一行开始显示档案内容
// #vim /tmp/syslogbak 编辑文本
// #tac 从最后一页开始显示
//#more 一页一页的显示档案内容
//#less 往前翻页
//#tail 只看尾巴几行
//#head 只看头几行
//#nl 显示的时候顺道输出 行号
//#od 以二进制显示
在/tmp目录下新建目录mydir。
//#mkdir /tmp/mydir
将文件/tmp/ syslogbak移动至目录/tmp/mydir。
//#mv /tmp/syslogbak /tmp/mydir
删除文件/tmp/mydir/syslogbak。//#rm /tmp/mydir/syslogbak
删除目录/tmp/mydir。//#rm -rf /tmp/mydir
在整个文件系统中查找名为sudo的文件(find)。 //#find -name sudo
在整个文件系统中查找名字中包含sudo的文件。//#Find -name ‘sudo’
//# find -name ‘sudo*’ //#find -name ‘*name’
在整个文件系统中查找名为sudo的命令。//#which sudo
在目录/tmp下新建目录testdir,并在该新建目录下新建文件testfile,然后将文件testfile复制两份,分别命名为testfile2和testfile3。
//# Mkdir /tmp/testdir #touch testfile #cp testfile /tmp/testdir/testfile2
根据题目14,将目录/tmp/testdir打包为一个.tar文件。
//#tar cvf testfile.tar testdir
根据题目15,将生成的tar文件进行压缩,生成后缀为.tar.gz的压缩文件。
//#tar -zcvf testfile.tar testfile.tar.gz
在文件系统中查找一个链接文件(find)。 //#find -ls //#ls -il 当前目录下
分别创建一个文件的软链接和硬链接文件,修改文件内容后,观察链接文件的内容和属性等信息。//# ln -s 文件名 连接名 软连接 //#ln 文件名 连接名 硬链接
理解umask命令的作用,重新设置umask的值,将新建文件的默认权限设置为所有人可读写。//# umask u=rw,g=rw,o=rw 用来设置接下来创建的文件的权限
新建一个文件,查看其所属者和所属组,然后修改其所属者和所属组。
//# ls -l 查看所有者和所属组 #chown mxl myfile #chgrp mxl myfile
找出/etc目录下,文件大小介于50kB和60kB之间的文件,同时将文件详细信息列出(find)。//#find . -type f -mtime -1 -size +50k -size -100k -ls
找出/etc目录下,文件大小大于50kB且文件所有者不是root的文件,同时将文件详细信息列出(find)。 //#find /etc -not -user root -size +50k |xargs ls -l
找出/etc目录下,文件容量大于1500kB及容量等于0的文件(find)。
//#Find /etc -size +1500k -size 0k |xargs ls -l
比较命令(1)cd (2)cd ~ (3)cd … (4)cd -的异同。
//#cd 目录 是进入目录 //#cd ~ 是退出所有的 //#cd … 是退出当前目录
//#cd - 退出当前目录并且输出当前目录
比较命令(1)rm (2)rm -r (3)rmdir的异同
//#删除文件 //删除目录 //rmdir 删除目录
比较命令whoami、who am i、who的异同。
目录/root下有哪些隐藏文件?
//#. … //#ls -d .*
假如系统中已存在2个普通用户(user1和user2,注:此处用户名只是举例,真正用户名以个人系统上为准),首先使用root用户在/tmp目录下新建目录mydir,将其所属组改为user1,权限更改为drw-r-x–x,然后分别使用普通用户user1和user2登录系统,分别进入目录/tmp/mydir下和新建文件,结果是什么?为什么?//User1可读 user2什么也干不了
接上题,如何才能使user1和user2成功进入/tmp/mydir目录,并能新建文件?//#更改目录权限
查看文件/etc/hostname的访问时间、修改时间和改变时间(stat)。
//#Stat /etc/hostname
查看目录/etc所占的空间大小(du)。//# du /etc
查看当前系统挂载的磁盘有哪些(df)。//#df
为虚拟机添加一个5个G的磁盘,并对该磁盘进行分区和格式化(ext4),并挂载磁盘到/mnt/web目录。
查询系统已经安装的软件(dpkg)//dpkg适用于ubunt //rpm -qa 是centos的
用apt工具安装chrome浏览器软件。 centos 要修改yum 源/etc/yum.repos.d/目录下新建文件google-chrome.repo 向里面添加内容
[google-chrome]
name=google-chrome
baseurl=http://dl.google.com/linux/chrome/rpm/stable/$basearch
enabled=
gpgcheck=
gpgkey=https://dl-ssl.google.com/linux/linux_signing_key.pub
Yum install google-chrome-stable
查看系统当前登录的用户账号。 //w
查看系统当前运行的进程。 //ps -eFH , ps -aux
查看系统当前的系统负载。 //top
先在tty1中使用vi新建文件/tmp/testfile2并编辑内容(内容任意,编辑完之后保存,不要退出),同时在tty2下使用ps命令查看vi的进程号,并使用kill命令强制终止vi进程,之后再进入tty1使用vi打开文件/tmp/testfile2,观察出现的问题,并解决。
在系统中创建用户testuser1、testuser2、testuser3、testuser4。 //useradd testuser1 //userdel testuser1
在系统中创建组group1、group2。 //Groupadd group1 //groupdel group1
根据题目4和5,将用户testuser1和testuser2加入用户组group1,将testuser3和testuser4加入用户组group2。//删除时使用 userdel –rf 用户名 不会出现警告 // useradd –g 用户组 用户名
新建组group3,在第6题基础上,将用户testuser1再加入用户组group3。
// usermod –g 用户组 用户名 //用id 用户名 查看用户名所属的组
在系统中新建普通用户testuser5,并设置密码,然后使用该账号登录,之后再删除该用户。//useradd testuser5 //passwd testuser5 密码至少8位 //userdel –rf 用户名 登录用户时候要先退出root 因为root 权限可以直接登录 而不需要密码
使用一个普通用户(根据自己系统上的设置)执行命令“cat /etc/shadow”
// cat etc/shadow。
使用man查看groups命令帮助 //man –a group。
新建用户test,要求:
设置其全名为linuxtestuser, // useradd test
设置其不能登录shell,//usermod -c linuxtest -s /bin/false –m test
设置其无需个人主目录。
新建用户test2,在其个人主目录里创建3个文件,然后更改其个人主目录为其他目录,同时将其个人主目录的内容复制到该目录。
// mv /home/test2/file{1…3} /home/test
如何查看某个用户都位于哪些组?找出两个命令。 //cat /etc/passwd //id 用户名
如何修改某个文件/目录所属用户组?//chgrp group1 test2 //ls –l
如何临时限制某个用户登录系统?(注:不将该用户从系统中删除)//usermod –L test2 –L L必须大写
自学vimtutor中文版,见附件,熟悉Vim环境,完成如下题目。
将光标定位至第10行第10个字符。
将光标定位至第1行。
#H
将光标定位至最后一行。
#G
不使用左右上下箭头键,如何进行光标的上下左右移动?
#hjkl
在文件中搜索字符串root。
删除第6行。
#6gg
#dd
撤销删除第6行。
将第1-5行复制到文件末尾。
光标移动到起始行,输入ma
光标移动到结束行,输入mb
光标移动到粘贴行,输入mc
然后输入:'a,'b, co 'c 把co换成m就是剪切
若要删除多行,则输入:'a,'b de
撤销如上5行的复制。
#u
删除第6行的前5个字符。
#6gg
#5x
将字符串ftp替换为abc。
#1,$s/ftp/abc/g
s/vivian/sky/ 替换当前行第一个 vivian 为 sky
:s/vivian/sky/g 替换当前行所有 vivian 为 sky
:n, s / v i v i a n / s k y / 替 换 第 n 行 开 始 到 最 后 一 行 中 每 一 行 的 第 一 个 v i v i a n 为 s k y : n , s/vivian/sky/ 替换第 n 行开始到最后一行中每一行的第一个 vivian 为 sky :n, s/vivian/sky/替换第n行开始到最后一行中每一行的第一个vivian为sky:n,s/vivian/sky/g 替换第 n 行开始到最后一行中每一行所有 vivian 为 sky
将文件不保存退出。
#:q!
重新以vim打开/tmp/passwd文件,将光标定位至第3行。
在第3行的下一行(第4行)开始编辑,插入内容“abcdefg”。
#o
切换至一般模式,将上题中的字符a替换为z。
#?/a/z/g
将文件保存退出。
#:wq
2. 理解Bash使用,完成如下题目
date
date
bash(孙子进程)
echo $var1 $var2
exit(返回子进程)
echo $var1 $var2
exit(返回父进程)
echo $var1 $var2
zhangsan
lisi
chmod 777 ex1
./ex1 f1 f2
查看并理解执行结果。
#!/bin/bash
cat $0 $1 $2
123
abc
8. Linux下环境文件有哪些?各有何作用?请总结并形成文档。
系统级:
/etc/profile 用户登录时操作系统指定用户环境时使用的第一个文件,应用在每个用户。该文件一般调用/etc/bash.bashrc
/etc/environment 登录时操作系统使用的第二个文件,系统在读取你自己的profile前,设置环境文件的环境变量。
用户级:
~/.profile 每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件。这里是推荐放置个人设置的地方
~/.bashrc 该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该该文件被读取。不推荐放到这儿,因为每开一个shell,这个文件会读取一次,效率肯定有影响。
~/.bash_profile or ~./bash_login:
~/.pam_environment:用户级的环境变量设置文件
9. 什么是shell脚本文件?请写出3-5个简单的脚本文件并运行。
shell脚本就是由Shell命令组成的文件,这些命令都是可执行程序的名字,脚本不用编译即可运行。它通过解释器解释运行,所以速度相对来说比较慢。
文件名 file.sh
10. 理解如下特殊变量的含义。
$# 参数总数
$? 执行上一个指令的返回值
$$ 这个程序的PID
$! 执行上一个背景指令的PID(后台运行的最后一个进程的进程ID号)
$- 显示shell使用的当前选项,与set命令功能相同
@ 跟 @ 跟 @跟类似,但是可以当作数组用
$ 这个程式的所有参数,词选项参数可超过9个
分析下列脚本的功能。
cat example1 (注意:假如脚本文件名为example1)
count=$#
cmd=echo
while [ c o u n t − g t 0 ] d o c m d = ” count -gt 0] do cmd=” count−gt0]docmd=”cmd $$count”
count=expr $count -l
done
eval $cmd
把输入的参数倒序输出
编写shell脚本,将第2个位置参数及其后的各个参数所指定的文件复制到第1个位置参数指定的目录中。
#!/bin/bash
dir=$1
shift
for var in $*
do
cp $var ${dir}/
done
利用for循环将当前目录下.c文件移到指定目录下,之后显示该指定目录下的内容。
#!/bin/bash
dir= 1 m y d i r = 1 mydir= 1mydir=PWD
files=ls $mydir/*\.c
for var in $files
do
cp $var $dir/
done
echo `ls $dir/
根据用户输入的用户名,查看系统中该用户是否登录。
用户输入一个1-10之间的数字,若不在该范围则输出信息“error”,否则输出信息“accept”。
#!/bin/bash
number=$1
case $1 in
[1-9])
echo accept
;;
echo accept
;;
*)
echo error
esac
6. 使用for循环在系统中成批添加10个用户,用户名分别是stu1~stu10。
#!/bin/bash
for ((i=1;i<=10;i++))
do
pass=“123456”
useradd stuKaTeX parse error: Expected 'EOF', got '&' at position 3: i &̲& "stui:$pass"|chpasswd
done
7. 任意设计一个shell程序,要求用到函数定义和调用。
#!/bin/bash
sum(){
n=expr $1 + $2
sum="$1+ 2 = 2= 2=n"
echo $sum
}
sum $1 $2
8. 分析的上网认证系统
(http://2.2.2.2/ac_portal/20170407143720/pc.html),通过wget发送post请求包完成网络的认证和注销。根据并分别完成两个shell脚本:
date +%Y%m%d_%H%M
.log &