linux实验-基本指令1

LINUX实验课练习(每一题相对应的解释和分析,红色字为重点)
1、root帐号登录,查看/tmp目录,如果/tmp目录下没有子目录myshare,则建立该目录。

cd /tmp 

mkdir myshare

2、创建帐号testuser。

useradd testuser(最好用passwd设置个密码什么的)

3、把myshare目录及其目录下的所有文件和子目录的拥有者该为testuser,工作组改为users。

chown -R testuser:users myshare

4、切换至testuser帐号。进入/tmp/myshare目录,采用vim编辑器编写以上程序,程序名称为hello.sh:
#!/bin/bash
echo "app start"
echo -e
func (){
  echo "hello world!"
}
func
echo -e
echo "app end"

su - testuser

cd /tmp/myshare

vi hello.sh(按i/o/a/R进入Insert模式)

输入完代码后 按ESC回到命令模式 然后输入:wq保存并退出

可利用cat hello.sh查看是否输入正确

5、保存hello.sh后,给予hello.sh拥有者可读、可写和可执行的权限,同组可读可执行,其他人可执行权限。

r、w、x分别为4、2、1 还有ugo的知识 不懂的要自己搞懂 下面751分别对应ugo

chmod 751 hello.sh

6、输入./hello.sh,观察程序输出的效果。

./hello.sh

输出效果为linux实验-基本指令1_第1张图片

7、进入testuser的用户主目录,在这个目录下创建hello.sh的软链接,同时拷贝hello.sh到该目录下并改名为hello.sh.bak,要求拷贝时保留文件属性值。

根目录:cd / (只有一个)

主目录:cd ~ (HOME  不同用户根目录不同)

这题另外一个重点是软链接问题,要用绝对路径,否则会出现查看时软链接红色闪烁的问题,表示链接文件有问题,下面放一些颜色表,表示xshell中文件各种颜色代表的意思,挺有用的!!!

1、白色:普通文件   2、蓝色:目录   3、绿色:可执行文件   4、红色:压缩文件

5、浅蓝色:链接文件   6、红色闪烁:链接文件有问题   7、黄色:设备文件   8、灰色:其他文件

cd ~

ln -s /tmp/myshare/hello.sh myhello.sh(myshello.sh为自己建立的软连接的名字,可以随便起)

cp -p /tmp/myshare/hello.sh hello.sh.bak

错误


正确


如果用./myhello.sh和./hello.sh.bak运行后的结果与./hello.sh运行一样,表示正确

8、退出testuser帐号,回到root帐号,从/开始查找后缀名为.conf的所有文件,把输出结果重定向到testuser帐号的主目录下的output.txt文件。

重定向

1、>输出重定向控制符,指令格式为“> 文件”,作用是把命令的结果输出到文件,原文件内容被覆盖

2、>>输出重定向控制符,指令格式为“>> 文件”,作用是把命令的结果输出到文件,原文件内容不被覆盖,而是追加

3、<:输入重定向控制符,指令格式为“< 文件”,作用是命令需要的参数直接从文件输入

su - root(输入密码)

cd /(根目录)

find . -name "*.conf" > /home/testuser/output.txt

9、在上一步操作的.conf文件中找出文件容量最大的和最小那个,并把这两个文件的容量大小输出到output.txt文件中。

先说一下怎么输出最大最小的思路吧:(1)利用ls排序得最大内存那行 (2)把这行存在一个txt中 (3)利用cut得到大小重定向到指定文件中 (4)最小内存同理,但需要注意的一点是,在重定向时,先执行的命令是文件打开 比如:ls -lS | tail -1 > result.txt 此时先执行的是重定向符合右边内容,即打开文件,再执行ls和tail,由于result.txt是新建的,所以会导致这个文件最小,所以可能出现得到最小的文件是这个,这时可以先查看最小文件,然后在文件里加内容以增大它,要么就在查找内容时find用特定的语句指明查找文件(后面这个方法我还没用过,仅仅想法,我用的是前面那种)

mkdir test

find . -name "*.conf" -exec cp {} /test \;(把所有找到的.conf后缀全部文件or目录复制进test目录下)

cd /test(进入test后 可用ls -l | wc -l 查看有多少行 即“*.conf”文件有多少个)

ls -lrS | tail -1 > result.txt(从小到大排序,取最后一行,即最大文件那行,暂存在result.txt中)

cut -d" " -f5 result.txt >> /homt/testuser/output.txt(用空格分隔,取第五列,即容量大小那列,追加到文件中)

加点东西在result.txt中,增大它的大小,然后执行

ls -lS  | tail -1 > result.txt

然后再用vi修改result.txt,只留下最后加入的那行

cat result.txt | awk '{FS=" "} {print $5}' >> /home/testuser/output.txt

【awk】的原因是,cut -d" "这里识别的是一个空格字符,而awk可以识别多个空格字符

10、统计出系统中有多少个用户帐号,把数量输出到output.txt文件中。

查看/etc/passwd文件,里面放置着系统中所有用户相关信息

在该文件中,每一行用户记录的各个数据段用“:”分隔,分别定义了用户的各方面属性。各个字段的顺序和含义如下: 【注册名:口令:用户标识号:组标识号:用户名:用户主目录:命令解释程序 】

其中关注点在第三列,若UID>500则为以后建的用户,0为root,其余为系统用户

cat /etc/passwd | wc -l >> /home/testuser/output.txt

11、把output.txt文件转换为windows记事本可正规打开的格式。
*转换原因:WIN与LINUX存储文件时的换行符标志不同造成的。在DOS使用的换行符为 ^M$,我们称为CR与LF两个符号。而在Linux中,则仅有LF ($) 这个换行符。

win文件转到linux:dos2unix output.txt(文件名)

linux文件转到win:unix2dos output.txt(文件名)

有些电脑可能没有这两个command,我的就没有,所以需要下载,很快也很方便,用以下两个语句

yum install dos2unixyum install unix2dos

unix2dos output.txt(会出现成功转化的字样)

12、tar打包压缩testuser帐号主目录下的所有文件。

su - root(先回到root里)

cd ~

tar -cvf testuser.tar /home/testuser(用绝对路径)

13、用U盘把上一步打包压缩文件拷贝到U盘上。

这里没用u盘拷,而是用了xftp,很好用的一个软件,可以让win和linux互相很方便的传文件

14、执行userdel -r testuser,执行rm -fr myshare

userdel -r testuser

rm -fr myshare

你可能感兴趣的:(Linux)