• 我和linux的第二十二天


      这几天学校的事情比较多,空闲时间也有,但没有利用起来。前些天听国学课,发觉自己心性还是不很成熟,以前自觉遇到君子应用君子的方法相处,遇到小人用小人的方法对待,老师一句话,疏清了自己。当我们用小人的方法对待小人时,有一天,你和小人打了一架,很多时候,我们就不能再去以君子之心来对待君子了。什么事都是一样的,自己应该主宰自己,不应因外界的改变去改变自己。继续吧,坚持下去。

    命令别名alias、unalias:

    新创一个新命令,可以直接执行该命令。例如:alias lm=’ls -l | more’。alias查看设置别名,unalias取消命令别名。

    历史命令history:

    history [参数],n数字,要列出最近的n条命令行的意思、-c将目前的shell中所有history内容全部清除。

    !number:执行第n条命令;!command由最近的命令向前搜寻命令串开头为command的那个命令,并执行;!!执行上一个命令。

    命令运行的顺序:

    1.以相对/绝对路径执行文件;

    2.由alias找到该命令来执行;

    3.由bash内置的(builtin)命令来执行;

    4.通过$PATH这个变量的顺序找到的第一个命令来执行。

    bash的登录和欢迎信息:/etc/issue,/etc/motd

    登录界面信息写在/etc/issue中,issue内的变量代码意义:d本地端的日期、 本地端的时间、l显示第几个终端机接口、m显示硬件等级(i686,x84_64...)、s显示操作系统名称、 显示系统版本、 显示主机网络名称。

    /etc/issue.net这个是提供给telnet远程登录程序用的,当我们使用telnet连接到主机时,主机的登录界面就会显示/etc/issue.net而不是/etc/issue。

    /etc/motd这个是让普通用户登录后取得的信息。

    bash的环境配置文件:

    login shell:取得bash时需要完整的登录流程的,称为login shell。例如:由tty1~tty6登录,需要输入用户账号与密码,此时的bash就称为login shell。

    non-login shell:取得bash接口的方法不要重复登录的举动,例如:你以X window登录后,再以X的图形界面启动终端机,此时那个终端接口没有需要再次输入账号和密码,此时bash环境称为non-login shell。

    login shell读取两个配置文件:

    /etc/profile:系统整体的设置,最好不要修改这个文件;

    ~/.bash_profile或~/.bash_login或~/.profile:属于用户个人设置,可修改自己的数据。其实bash的login shell设置只会读取上面三个文件中的一个,而读取的顺序是依照上面的顺序。

    non-login shell读取配置文件:

    ~/.bashrc:帮我们定义三方面数据,1.依据不同的UID规定umask的值;2.依据不同的UID规定提示符(PS1变量);3.调用/etc/profile.d/*.sh的设置。

    source:读入环境配置文件命令

    source(.) 配置文件名,将新设置的内容读进目前的环境中。

    其它配置文件:

    /etc/man.config:规定了使用man的时候man page的路径到哪里寻找。

    ~/.bash_history:历史命令的记录文件。

    ~/.bash_logout:记录了当我注销bash后系统再帮我做完什么操作后才离开。

    终端机环境设置:stty,set

    ctrl+c中止目前命令、ctrl+d输入结束(EOF)、ctrl+m就是Enter、ctrl+s暂停屏幕的输出、ctrl+q恢复屏幕的输出、ctrl+u在提示符下,将正行命令删除、ctrl+z暂停目前命令。

    bash环境中的通配符:

    wKioL1SFwSjjGNd9AAD3qC1M9iQ632.jpg

    特殊符号:文件名进来不要使用到下述字符

    wKioL1SFwU-yEHDBAAJq6z28Au0918.jpg

    数据流重定向(redirect):

    standard output与standard error output,标准输出指的是命令执行所回传的正确的信息,而标准错误输出可理解为命令执行失败后,所回传的错误信息。

    传送所用的特殊字符分别如下:

    标准输入(stdin):代码为0,使用<或<<;

    标准输出(stdout):代码为1,使用>或>>;

    标准错误输出(stderr):代码为2,使用2>或2>>。

    1>:以覆盖的方法将正确的数据输出到指定的文件或设备上;

    1>>:以累加的方法将正确的数据输出到指定的文件或设备上;

    2>:以覆盖的方法将错误的数据输出到指定的文件或设备上;

    2>>:以累加的方法将错误的数据输出到指定的文件或设备上。

    <:将原本需要由键盘输入的数据改为文件内容来代替;

    <<:可以终止一次输入。

    /dev/null垃圾桶黑洞设备

    标准输出和标准错误输出一同输出在一个文件夹使用2>&1或&>,例如:find /home -name .bashrc 2>&1 test,正确输出和错误输出一同写入test中。

    以下情况下使用数据流重定向:

    屏幕输出的信息很重要,我们需要将它保存下来;

    后台执行中的程序,不希望我它干扰屏幕正常的输出结果时;

    一些系统例行命令(如卸载/etc/crontab中的文件)的执行结果,希望它可以保存下来时;

    一些执行命令可能已知错误信息时,想以“2>/dec/null”将它丢弃时;

    错误信息与正确信息需要分别输出时。

    命令执行的判断依据,一次输入多重命令:

    cmd;cmd,不考虑命令相关性的连续命令执行;

    $?命令回传码,若前一个命令执行结果正确,在linux下面会回传一个$?=0的值。

    wKiom1SFwNyibRtAAAEETOPwKIQ482.jpg

    command1 && command2 || command3:cmd1正确执行,则执行cmd2,cmd2正确执行不执行cmd3;cmd2错误执行开始执行cmd3;cmd1错误执行不执行cmd2,执行cmd3。

    管道命令pipe(|):command1 | command2 | command3,管道命令“|”仅能处理经由前面一个命令传来的正确信息,也就是standard output的信息,对于standard error并没有直接处理的能力。

    选取命令:cut,grep

    cut:提取某一段信息,以“行”为单位。-d接分隔符与-f使用、-f依据-d的分隔字符将一段信息切割成为数段,接数字、-c以字符(characters)的单位取出固定字符区间。

    grep:分析一行信息,grep [参数] ‘查找字符串’ filename,-a将二进制(binary)文件以text文件的方式查找数据、-c计算找到‘查找字符串’的次数、-i(ignore)忽略大小写的不同、-n输出行号、-v反向选择,即显示出没有‘查找字符串’的一行。

    排序命令:sort,wc,uniq

    sort:sort [参数] file or stdin,-f忽略大小写、-b忽略最前面的空格符部分、-t分隔符,默认以[Tab]键来分隔、-k以哪个区间来进行排序。

    uniq:将重复的行删除掉只显示一行,uniq [参数],-i忽略大小写,-c进行计数。

    wc:计算输出数据的整体数据。

    双向重定向:tee

    可以将数据流送与文件和屏幕(screen);而输出到屏幕的,其实就是stdout,可以让下个命令继续处理。tee [参数] file,-a以累加(append)的方式,将数据加入file中。

    字符转换命令:tr,col,join,paste,expand

    tr:用来删除一段信息当中的文字,或者进行文字信息的替换。tr [参数] set1...,-d删除信息当中set1这个字符串、-s替换掉重复字符串。

    col:col [参数],-x将tab键转换成对等的空格键。 

    join:处理两个文件之间的数据,主要是将两个文件当中有相同数据的那一行加在一起。

    paste:对比两行相关性,直接将两行粘在一起,中间以tab键隔开。

    expand:将tab键转换成空格键。-t接数字,一个tab键代表多少个字符。

    切割命令:split

    将大文件切割成小文件。split [参数] file prefix,-b接欲切割文件大小,单位b,k,m等、prefix代表前导符,可作为切割文件的前导文字。

    参数代换:xargs

    产生某个命令的参数,很多命令其实不支持管道命令,因此我们可以通过xargs来提供该命令引用standard input之用。

    1.在linux上可以找到哪些shell(举出三个)?哪个文件记录可用的shell是什么?而linux默认的shell是什么?

    A.cat /etc/shells查看可用的shell,有/bin/sh、/bin/bash、/sbin/nologin;linux默认shell是bash。

    2.在shell环境下,有个提示符(prompt),他可以修改吗?要改什么?默认的提示符内容什么?

    A.不可以,$提示符如果是root时提示符为#,否则就是$。默认提示符内容PS1=[u@hW]$即[账户名称@主机名,用户所在文件夹]提示符。

    3.如何显示HOME这个环境变量?

    A.echo $HOME。

    4.如何得知目前的所有变量与环境变量的设定值?

    A.env或export查看环境变量,set查看所有变量(包括环境和自定义变量)。

    5.我是否可以设定一个变量名称3myhome?

    A.不可以,变量的首字符必须为字母。

    6.在这样的练习中:“A=B”且“B=C”,若我执行“unset $A”,则取消的变量是A还是B?

    A.取消的是B。unset $A相当于unset B。

    7.如何取消变量与命令别名的内容?

    A.unset $available;unalias filename。

    8.如何设定一个变量名称为name内容为It's my name?

    A.name=“It’s my name”。或name=It’s my name。

    9.bash环境配置文件主要分为哪两种类型的读取?分别读取哪些重要文件?

    A.一类登录login shell的读取,分别读取/etc/profile系统整体设置文件,~/.bash_profile或~/.bash_login或~/.profile个人用户设置文件。第二类非登录non-login shell的读取,仅读取~/.bashrc。

    10.CentOS 5.x的man page的配置文件是什么?

    A./etc/man.config。

    11.试说明', ", 与`这些符号在变量定义中的用途?

    A.单引号改变字符属性,仅为一般字符的现实类型,双引号内仍可保持变量内容。反单引号,作为外部输入信息。

    12.转义符号有什么用途?

    A.定义内容中含有特殊字符时可用/进行转义,成为一般字符。

    13.连续命令中,;, &&, ||有何不同?

    A.;不考虑命令的相关性,&&执行完A正确继续执行,错误不再执行,||执行完A正确不再执行,错误继续执行。

    14.如何将last的结果中,独立出帐号,并且印出曾经登录过的帐号?

    A.last | cut -d ‘ ‘ -f 1。 

    15.请问foo1 && foo2 | foo3 > foo4,这个命令串当中,foo1/foo2/foo3/foo4是命令还是文件?整串命令的意义是什么?

    A.foo1、foo2、foo3是命令,foo4为文件。foo1 && foo2的标准输出结果作为foo3标准输入通过foo3命令写入文件foo4中。

    16.如何列出在/bin目录下任何以a开头的文件文件名的详细数据?

    A.ls -l /bin/a*。

    17.如何列出/bin目录下,文件名为四个字符的文件?

    A.ls -l /bin/????。

    18.如何列出/bin目录下,文件名开头不是ad的文件?

    A.ls -l /bin/[^a-d]*。

    19.我想要让终端机接口的登录提示符修改成我自己喜好的模样,应该要改哪里? (filename)

    A.vim /etc/issus;vim /etc/motd。

    20.承上题,如果我是想要让使用者登入后,才显示欢迎信息,又应该要改哪里?

    A.vim /etc/motd。

  • 相关阅读:
    SpringBoot 断点调试无效问题解决
    oracle数据库入门
    IPFS入门
    Spring安全参考
    什么是内存泄漏?该如何检测?又该如何解决?
    coredump
    同一个程序在一个系统中可以跑起来,在另外一个系统上跑不起来
    dpkg 强制安装deb文件
    日志文件丢失
    文件句柄资源
  • 原文地址:https://www.cnblogs.com/dyllove98/p/4152865.html
Copyright © 2020-2023  润新知