• Linux的常用用法


    Linux 的常用用法#

    1. 永久修改PATH变量##

    • 直接在shell中修改PATH变量

        jackson@jackson-virtual-machine:~/bin
        $PATH="$PATH:/home/jackson/bin"
      

      但是这种修改只对当前的会话有效,退出或者注销系统都会失效

    • 修改/etc/profile文件

      添加你想要添加的PATH路径

    • 修改~/.bash_profile文件

      添加你想要添加的PATH路径

      ps: /etc/profile是每个用户登录时都会运行的环境变量设置,~/.bash_profile是只针对当前用户有效。

    2. 修改linux的提示符PS1##

    • 为什么叫PS1,主要是 Prompt Sign 提示符号的简写。

      $ echo $PS1
      [u@h W]$
      

      可以在~/.bashrc中修改变量,也可以/etc/bashrc中修改

      ps: ~/.bashrc是对当前用户有效,/etc/bashrc是对所有用户有效。

    • PS1变量的命名规则:

      d: 显示日期。格式是 Weekday Month Date, eg: Mon Jan 19
      H: 显示完整的主机名。
      h: 显示主机名的第一个名字。
      : 显示时间, 24小时制
      T: 显示时间, 12小时制
      u: 当前使用者的账号名称
      v: 当前使用的BASH版本
      w: 完整的工作目录。home目录会用~替代
      W: 利用basename获取当前工作的目录名称,所以会获取最后一个目录名。
      $: 提示操作符,root的时候为 #,非root为$

    • PS2PS3PS4的比较

      (1)PS2: 在shell中输入长命令的时候,可以在末尾加是其分行显示。

      $ echo "hello" 
      > "world"
      hello world
      

      默认的情况下,换行提示符是,这个换行提示符就是由PS2定义的。

      $ PS2="-->"
      
      $ echo "hello" 
      -->"world"
      hello world
      

      (2)PS3: Shell脚本中使用select时的提示符

      $ cat test.sh 
      select i in a b exit
      do
      	case $i in 
      		a) echo "Apple";;
      		b) echo "Banana";;
      		exit) exit;;
      	esac
      done
      
      $ sh test.sh 
      1) a
      2) b
      3) exit
      #? 
      

      其中这里的#?就是由PS3定义的

      $ export PS3="Select one option(1-3):"
      
      $ sh test.sh 
      1) a
      2) b
      3) exit
      Select one option(1-3):
      

      (3)PS4: “set -x"用来修改跟踪输出的前缀

      $ echo $PS4
      +
      
      $ echo "hello world"
      +echo 'hello world'
      hello world
      
      $ PS4="-->"
      
      $ echo "hello world"
      -->echo 'hello world'
      hello world
      

      可以在脚本中,将PS4定义为[$0.$LINENO],其中$0是程序的名字,$LINENO是行号。

      $ cat test.sh
      PS4='[$0_$LINENO]'
      set -x
      echo "hello"
      echo "world"
      set +x
      
      $ sh test.sh 
      [test.sh_3]echo hello
      hello
      [test.sh_4]echo world
      world
      [test.sh_5]set +x
      

    3. Linux中修改hostname##

    • 怎么看hostname

    (1) hostname命令

    $ hostname
    

    (2)看proc文件系统

    $ cat /proc/sys/kernel/hostname
    
    • 修改hostname

    (1) 通过hostname命令(暂时)

    $ hostname newname
    

    执行完后,通过上面看hostname的两种方式,发现hostname已经修改过来了。
    但是,机器重启后又会回到以前的hostname。所以这种修改hostname的方式是暂时的。

    (2)永久的修改hostname

    The host name is usually set once at system startup in /etc/rc.d/rc.inet1 or /etc/init.d/boot (normally by reading the contents of a file which contains the host name, e.g. /etc/hostname).

    可见hostname是在开机的时候由开机启动脚本,读取/etc/hostname里的信息,注意,redhat系统的机器中没有/etc/hostname这个文件,是读取/etc/sysconfig/network,因此永久改变hostname,只需要修改这配置文件就好了。

    $ cat /etc/sysconfig/network
    NETWORKING=yes
    HOSTNAME=oldname
    NETWORKING_IPV6=no
    PEERNTP=no
    GATEWAY=x.x.x.x
    
    • hostname/etc/hosts 的关系

    两者常常让人会混淆,以为改hostname需要去修改/etc/hosts文件,其实不然。hosts文件提供的相当于dns解析的服务,以前机器比较少,单个hosts文件足以存放所有联网计算机的ip hostname映射关系,随着计算机越来越多,就渐渐产生了分布式的dns服务。

    在dns域名解析的时候,会首先查询/etc/hosts文件,看里面是否有相应的记录。/etc/hosts的文件格式为 ip hostname alias

    4.'sudo echo xx >'的权限不够##

    $ ll test.sh 
    -rw-r--r-- 1 root root 46 Jan 23 18:13 test.sh
    

    在非root用户下对其操作如下:

    $ sudo echo "exit" > test.sh 
    bash: test.sh: Permission denied
    

    这是因为重定向符号 “>” 也是 bash 的命令。sudo 只是让 echo 命令具有了 root 权限

    解决方案有:

    (1) 通过sh -c将执行命令作为一个字符串输入

    sudo sh -c "echo "exit" > test.sh"
    

    (2) 通过tee

    sudo echo "exit" | tee test.sh
    

    5. 通过shell脚本,切换当前目录##

    http://www.2cto.com/os/201107/96714.html

  • 相关阅读:
    关于PDF.NET开发框架对Mysql Sqlite PostgreSQL数据库分页支持的个人看法
    【山外转载】如何高效的学习技术
    【山外笔记-四级计算机网络】第1章 网络技术基础
    【山外笔记-云原生】《Docker+Kubernetes应用开发与快速上云》读书笔记-2020.04.25(六)
    【山外笔记-数据库】Memcached教程详解
    【山外问道】什么是UUID
    【山外问道】Linux UUID的查询方法
    【山外笔记-SVN命令】svnlook命令详解
    【山外笔记-SVN命令】svn命令详解
    【山外笔记-工具框架】SVN版本控制系统
  • 原文地址:https://www.cnblogs.com/zk47/p/4709146.html
Copyright © 2020-2023  润新知