一、Linux的登陆流程

login:

  用户名:每个用户名都有一个用户ID(用户标识符),计算机处理的就是用户ID(数字)而不是用户名(字符),。

  认证机制:Authentication,比如密码或者其他生物识别技术

  授权:Authorization,资源访问的权限授权。但是授权不代表权限可以滥用,因此需要审计。

  审计:Audition(通过日志)。

  登陆成功后,进入prompt,命令提示符界面,因此需要输入命令来执行程序。这些命令既可以是二进制程序也可以是脚本文件。对于内核而言,严格区分两者不同。一般情况,一个可执行程序文件,必须有程序的执行入口。一般这个二进制文件开始处,有几个特殊字符,我们称为程序的magic number(魔数)。

二、命令                                                              

1、命令格式

  command  options arguments

  选项是用来修改命令的执行特性,它有两种格式:短选项和长选项。其中,短选项可以合并。而且,有些选项是可以带参数的。  

  参数指定命令的作用对象。

2、命令类型

  内置命令(shell内置):bash内部的基本实现管理功能的命令,不同的shell内置不同的命令,一般都有cd 等。

  外部命令:在文件系统的某个路径下有一个与命令名称相对应的可执行文件,比如ls,su等。虽然执行命令都应该指定其所在路径,但是由于环境变量的存在,所以不必指定其路径,直接去PATH中查找路径下,是否拥有该条命令,因此直接使用ls su就可以了。当然,如果执行一条命令就去查找环境变量,会特别慢,因此第一次查找后,会在内存的缓存中保存该命令和其路径,使用hash命令可以查看,hash保存的键值对,查找时间复杂度O(1)。

  可以用type来显示指定命令属于哪种类型。

hao@hao:~$ which ls
/bin/ls
hao@hao:~$
which su
/bin/su
hao@hao:~$
which cd

  这里的3,1,1表示命中的次数

hao@hao:~$ hash
?戒腑 ?戒护
/usr/bin/which
/usr/bin/sudo
/usr/bin/printenv

3、常用命令:

  ls:显示文件目录及属性(在文件及目录专门讲)

  pwd:显示当前目录

root@hao:/home/hao# pwd
/home/hao

  cd:change directory切换目录。家目录(Home Directory),也叫主目录,

    cd ,不加参数可以直接回到家目录,家目录用~表示.

    cd ~ username,可以直接回到某个用户的家目录。

    cd - 在当前目录和前一次所在目录来回切换

root@hao:/home/hao# ls /
bin cdrom etc initrd.img lost+found mnt proc run selinux sys usr vmlinuz
boot dev home lib media opt root sbin srv tmp var
root@hao:/home/hao# cd /usr
root@hao:/usr#

root@hao:/home/hao# cd /usr
root@hao:/usr# cd
root@hao:~# pwd
/root
root@hao:~# cd ~hao
root@hao:/home/hao#

  date:显示当前时间

4、环境变量

  环境变量是命名的内存空间,变量声明的过程就是向内存请求空间的过程,向内存空间放置数据的过程叫做赋值。

hao@hao:~$ printenv
SHELL=/bin/bash
TERM=xterm
XDG_SESSION_COOKIE=42b11f1fd75eaec16fec907e00000020-1413373884.792806-
HUSHLOGIN=FALSE
USER=hao
LS_COLORS=rs=:di=;:ln=;:mh=:pi=;:so=;
。。。
MAIL=/var/mail/hao
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
PWD=/home/hao
LANG=en_US
SHLVL=
HOME=/home/hao
LANGUAGE=zh_CN:zh
LOGNAME=hao
LESSOPEN=| /usr/bin/lesspipe %s
LESSCLOSE=/usr/bin/lesspipe %s %s
_=/usr/bin/printenv

5、使用帮助

  对于内部命令,可以使用help command

  对于外部命令,可以使用command --help 获取简要帮助信息。

  当然无论内部还是外部命令,可以通过man命令查看命令使用手册,比如man ls,可以打开命令使用手册。对于内部命令,不是man的内部命令,而是man的这个内部命令所属的shell,如man cd,会显示bashell的,因此内部命令很少使用man命令。

  man:分章节,8个章节。默认显示第一个出现的章节(不一定是第一章),可以通过whatis command 来查看命令出现的章节。

hao@hao:~$ whatis ls
whatis: can't set the locale; make sure $LC_* and $LANG are correct
ls () - list directory contents
root@hao:~# whatis read
read () - read from a file descriptor

  1:用户命令 (/bin,/usr/bin,usr/local/bin)2:系统调用 3:库调用  4:设备文件 5:文件格式(解释被指文件的语法) 6:游戏 7:杂项

  8:管理命令(/sbin,/usr/sbin,/usr/local/sbin)

DATE()                                              User Commands                                              DATE()

NAME
date - print or set the system date and time SYNOPSIS
date [OPTION]... [+FORMAT]
date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]] DESCRIPTION
Display the current time in the given FORMAT, or set the system date. -d, --date=STRING
display time described by STRING, not `now' -f, --file=DATEFILE
like --date once for each line of DATEFILE
...

  如/etc/passwd文件保存的是用户的情况,man 5 passwd 便可以看该文件的语法。

root@hao:~# cat /etc/passwd
root:x:::root:/root:/bin/bash
daemon:x:::daemon:/usr/sbin:/bin/sh
bin:x:::bin:/bin:/bin/sh
...
root@hao:~# man passwd

  

最新文章

  1. 洛谷 P1026 统计单词个数 Label:dp
  2. VPN帐号(每1小时自动断开及更新密码)
  3. 赴美工作常识(Part 5 - 绿卡优先级)
  4. Hibernate中saveOrUpdate()和merge()的区别
  5. Hive Experiment 2(表动态分区和IDE)
  6. 用jQuery.ajaxWebService请求WebMethod,Ajax处理实现局部刷新
  7. ECS 安装redis 及安装PHPredis的扩展
  8. matlab中矩阵和向量的创建
  9. 960 grid 使用
  10. POJ 1155 - TELE 树型DP(泛化背包转移)..
  11. git使用教程之git基础
  12. Linux 下 fcitx 崩溃
  13. Spring AOP 的实现机制
  14. 【转】JAVA解压.TAR.Z及.ZIP文件
  15. linux快速搭建
  16. MySQL——安装、配置、启动服务、
  17. Leetcode 350.两个数组的交集|| By Python
  18. <转载>ford-fulkerson算法
  19. 学习Struts2经验总结
  20. Introducing Makisu: Uber’s Fast, Reliable Docker Image Builder for Apache Mesos and Kubernetes

热门文章

  1. TemplateBinding与Binding区别,以及WPF自定义控件开发的遭遇
  2. java 整型相除得到浮点型
  3. 程序运行的cpu时间
  4. BZOJ4355: Play with sequence(吉司机线段树)
  5. JS性能优化的那点事
  6. HTTPS的加密流程(通俗易懂,不可错过)
  7. ElasticSearch 5学习(5)——第一个例子
  8. linux 命令——40 wc (转)
  9. codeforces 599D Spongebob and Squares
  10. 什么是SAD,SAE,SATD,SSD,SSE,MAD,MAE,MSD,MSE?