linux命令学习

这是我看了《linux命令行与shell脚本编程大全》这本书的学习记录,加强一下自己的印象,也方便以后查找。

第一章:初始Linux shell

linux的四个组成部分:

linux内核:

                系统内存管理:虚拟内存(不存在的)、物理内存、交换空间。内核不断的在交换空间和物理内存之间反复交虚拟存的内容,这使得系统认为它用于比物理内存更多的可用内存。

             软件程序管理:内核创建第一个进程(init进程)来启动系统,一般系统开机自启动的进程在/etc/inittab或者/etc/init.d目录下,这些脚本通过/etc/rcX.d目录下的entry启动。X代表运行级(run level),运行级:有5个,1:单用户模式。3:大多数应用软件,比如网络支持,都会启动,5:用户可以通过图形化桌面登陆系统。

                 硬件设备管理:设备文件,字符型设备文件、块设备文件、网络设备文件。系统为每个设备都创建了成为节点的特殊文件。

               文件系统管理

GNU工具:处理文件的工具、操作文本的工具、管理进程的工具,shell:linux系统默认的发行版本是bash shell,shell的版本常见的有:ash、korn、tcsh、zsh(高级shell)

图形化桌面环境

应用软件

linux命令学习

第二章:走进 shell

这章主要讲了,shell的常见三种终端,以及终端页面菜单栏的介绍。

第三章:基本的bash shell 命令(最基础部分)

/etc/passwd 文件包含了所有系统用户账户列表即每个用户的基本信息。

man  xterm (man 命令) 查询帮助文档

Linux手册的内容区域有9的,默认的提供的是最低编号内容。

man 7 hostname (man section topic)

hostname -help | hostname --help |hostname help

cd /user/bin 绝对目录

pwd 显示当前的路径

cd 跳回主目录

单点符(.):表示当前目录

双点符(..):表示父目录

文件列表: ls   -F(显示出是不是目录) -a(显示出隐藏文件(以点开头的)) -l(显示权限的列表,长列表)

linux命令学习

过滤输出表: ls -l my_scr?pt   (?:代表一个字符,*:代表0或者多个字符,【ai】选择一个)

常见文件:touch newfile 

复制文件: cp 源文件 目标文件  cp test test1 (复制文件名为test1)  cp test test3/  (复制文件到test3的目录下) cp -R scripts/  mod_scripts (把文件scripts下的文件都复制到mod_scripts下)

tab键自动补全

链接文件:(比如需要多个备份) 分为硬链接、符号链接

符号链接:它是一个实实在在的文件,通过这个->连接在一起,内容不同  ln -s data_file sl_data_file (原始文件data_file 必须存在)

硬链接:是虚拟文件,从根本而言是同一个文件, ln code_file h1_code_file(但必须是是同一存储媒体)

重命名(moving)文件: mv fall fzll  | mv fzll picture/    重命名文件的时间戳和inode编号,并不会改变。

删除文件(remove): rm  -i fall (-i 询问是否删除这个文件,这是个好习惯,要保存)

创建目录: mkdir new_dir | ls -ld new_dir (d:表示目录) | mkdir -p new_dir/sub_dir/under_dir  (-p:表示创建多个文件夹)

删除目录:rm -ri my_dir (不能保证目录是不是为空的,所以这样最好,以次询问) | rm -rf my_dir (不询问了)

目录结构: tree  my_dir

 查看文件类型: file my_file| file new_dir

查看整个文件: cat test1 (cat 命令一点运行我们无法终止) | more test1(先显示一页的内容)| less test1(先显示一页,支持上下翻页,less is more 即是more的高级)

查看部分文件: tail log_file(尾部开始) | head log_file (头部开始)

第四章:更多的bash shell 命令

监测进程

process(进程) ps命令

ps -ef (显示所有的进程)

linux命令学习


结束进程: kill -9 PID

实时监测进程:top(不熟悉)

监测磁盘空间

挂载(mounting):

linux命令学习


mount -t vfat  /dev/sdb1  /media/disk  ( mount -t type device directory)

卸载设备:umount [directory | device]   umount /home/rich/mnt

查询设备磁盘空间: df -h

查询文件目录空间使用情况: du -h

对于上述输出大量文件,要排序,可以利用管道重定向:du -sh * | sort -nr (按数字降序)

sort -t ':' -k 3 -n /etc/passwd (以冒号为分割的第三个关键字,按数字排序)

搜索数据: grep t file1 (在file1的文件里面搜索以t开头的文本)

压缩文件: gzip myprog (gzcat、gunzip)

归档数据(不太熟悉):最广泛用的归档工具: tar

linux命令学习

第5章:理解shell

在已有的shell终端:bash 命令创建子shell,通过exit 可以推出子shell, ps -f 可以显示出关系。 ps -- forest

进程列表就是通过一个子shell来运行的,是花括号括起来,;为分割的: {pwd;cd ..;pwd}  (进程列表、协程、管道都会用到子shell)

sleep 100& (&进入后台模式:)

显示后台作业信息: jobs

协程:coproc slleep 10 (在后台生成一个子shell,并且执行sleep 10) 相当于 sleep 10&

外部命令:通常位于 /bin 、 /user/bin 、 /sbin 、 /user/sbin中 可以使用 which(只显示外部命令)和type(显示每种命令的两种实现)命令找到它

which ps  | type -a ps  当执行外部命令的时候会创建一个子shell,所以说外部命令多少还是有代价的。

内建命令:type cd ,不需要使用子进程的。

查看最近使用的命令: history

命令别名:alias -p (显示当前的别名) alias li='ls -li'

第六章:使用Linux的环境变量(全局变量,局部变量,用户自定义变量)

显示全局变量:printenv  |printenv HOME | echo $HOME

set命令会显示出某个特定进程设置的所有环境变量。

自定义变量:my_variable="I am a student"

导出成全局变量:export my_variable 

在子shell中改变全局变量并不会影响父shell中变量值,即便是export。

删除环境变量:unset my_variable,同样的道理并不影响父进程的。

如果要用环境变量使用$,如果要操作环境变量则不需要使用$.printenv除外。

PATH环境变量:echo $PATH

增加环境变量:PATH=$PATH:/home/scripts

启动shell的三种方式:

登录时作为默认登录shell:启动shell从这几个文件里读取命令:/etc/profile 、 $HOME/.bash_profile 、 $HOME/.bashrc 、$HOME/.bash_login 、$HOME/.profile

作为非登录shell的交互式shell:启动shell只会检查 $HOME/.bashrc

作为运行脚本的非交互shell:调用变量 BASH_ENV,如果没有,则继承父shell的

通过以上这几个文件,想着把改动的PATH持久化

第7章:理解linux文件权限

关于用户登录的文件:/etc/passwd 

linux命令学习

linux命令学习

关于用户密码放在另一个文件里 /etc/shadow(只有特定的程序才能访问)

添加用户:useradd -m test

删除用户:userdel -r test

更改用户:usermod 

更改密码: passwd | chpasswd

组:/etc/group

添加组:groupadd

更改组:gropmod

linux命令学习



linux命令学习

linux命令学习

linux命令学习

改变权限: chmod 760 newfile

改变所属关系: chown  owner[.group] file

linux上共享文件就是创建组,大量共享文件:要利用以下字段(SUID,SGID,黏着位)

第8章文件管理系统:

linux文件系统:ext、ext2、日志文件系统(数据模式>有序模式>回写模式)、写时复制文件系统(COW copy on write 利用快照)

linux命令学习

linux命令学习

linux命令学习

linux命令学习

linux命令学习

第7章和第八章,整体而言,不太熟悉,也不太明白,只是大概的记录一下,方便查找。