之前一直以为Linux和Windows差不多,但是学习了Linux基础入门之后才发现两种操作系统之间差距非常大。
Linux只是在硬件之上的内核和系统调用,就连我们在Windows里习以为常的图形界面都是Linux上的软件。在使用Linux的时候,我们都习惯于使用终端和命令行进行操作,而不是像Windows那样的图形界面里的鼠标键盘的共同操作。物理机系统可通过[Ctrl]+[Alt]+[F1]~[F6]切换6个纯命令行界面的终端,通过[Ctrl]+[Alt]+[F7]从终端切换回图形界面。而且学习之后我才知道,Linux里面一切皆文件,相对于Windows里的文件后缀名区分文件类型,Linux不通过后缀名区分文件类型,可以通过file命令查看文件类型。
大数据Linux资料分享群119599574
在使用Linux的时候,我们不直接和系统打交道,而是通过Shell(命令解析器)。Shell就像一个壳隐藏了操作系统的底层操作。通俗来讲,Shell就是可以接受用户输入命令的程序。在UNIX/Linux中比较流行的常见的Shell有bash,zsh,ksh,csh等等,Ubuntu终端默认使用的是bash,默认的桌面环境是 GNOME或者Unity(基于 GNOME)。
在Linux系统中有很多十分方便的快捷命令。
-
Tab:可以用来补全命令、目录、或者命令参数,连续按两次还可显示所有能匹配到的结果;
-
[Ctrl+C]:用来终止当前程序并且不退出终端;
-
[Ctrl+d]:键盘输入结束或者退出终端;
-
[Ctrl+s]:暂定当前程序,暂停后按下任意键恢复运行;
-
[Ctrl+z]:将当前程序放到后台运行,恢复到前台命令为fg;
-
[Ctrl+a]:将光标移至行头,相当于home,[Ctrl+e]相当于[end];
-
[Ctrl+k]:删除从光标所在位置到行末;
-
[Alt+backspace]:向前删除一个单词;
-
[shift+pgup]:将终端显示向上滚动,[shift+pgdn]向下滚动。
在Linux中,通配符主要是“*”和“?”,可用来对字符串进行模糊匹配,终端里的通配符由Shell完成。
Linux中还有一部分特别重要的命令:
- man命令:man命令是Linux中一个十分重要的帮助指令,内容包括计算机程序(库和系统的调用),正式的标准和惯例,抽象的概念,通过执行man命令调用手册页。man命令手册比较重要的是前三个:1.一般命令;2.系统调用;3.库函数,涵盖了C标准函数库。man命令如果加上数字参数,可以指定从哪本手册中搜索帮助。数据Linux资料分享群119599574
- ls命令:用于显示当前目录下的文件,可以通参数[-a]显示隐藏文件(Linux下隐藏文件皆以‘.’开头)。
- cd命令:Linux下一切皆文件,因此在终端中[cd]命令就显得尤为重要。这个命令可以通过绝对路径或者相对路径进入到你想进去的目录中。
- cp命令:用于终端中文件或目录的复制操作。
- rm命令:用于终端中文件或目录的删除操作。
- cat命令:用于正序打印文件内容到终端,与之相反的tac命令倒序打印问价内容到终端。
- declare命令:用于声名一个变量,用‘=’号赋值,用echo和$命令读取变量的值。
Shell中运行的大部分命令都将以审理了的子进程的方式运行。环境变量有3种:1.当前Shell进程私有用户自定义变量,只在当前Shell中有效;2.Shell本身内建的变量;3.从自定义变量导出的环境变量。
以下是部分实验的截图:
banner截图
figlet截图
给用户添加用户组并通过sudo命令获得root权限
黑客帝国
实验过程中遇到的问题以及解决:
1、运行hello_shell.sh脚本文件时候报错,原来是for之后少了一个空格,之后才知道Linux脚本文件里面的空格不像C语言里面的一样能随便增删。
2、使用mv命令移动两个文件时,其中一个文件名输错,再次执行移动命令时,说另一个文件不存在,之后发现另一个文件已经移动到目的目录中。从而知道了使用mv命令移动两个文件时,其中一个文件名输错,不会影响其他文件的移动。