博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linux的常用用法
阅读量:4654 次
发布时间:2019-06-09

本文共 2826 字,大约阅读时间需要 9 分钟。

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: 显示主机名的第一个名字。
    \t: 显示时间, 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 exitdo    case $i in         a) echo "Apple";;        b) echo "Banana";;        exit) exit;;    esacdone$ sh test.sh 1) a2) b3) exit#?

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

    $ export PS3="Select one option(1-3):"$ sh test.sh 1) a2) b3) exitSelect 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.shPS4='[$0_$LINENO]'set -xecho "hello"echo "world"set +x$ sh test.sh [test.sh_3]echo hellohello[test.sh_4]echo worldworld[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/networkNETWORKING=yesHOSTNAME=oldnameNETWORKING_IPV6=noPEERNTP=noGATEWAY=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脚本,切换当前目录

转载于:https://www.cnblogs.com/zk47/p/4709146.html

你可能感兴趣的文章
树状数组求区间最大值
查看>>
从面试官角度来告诉大家,哪些人能面试成功
查看>>
以我的亲身经历为例,告诉大家写简历和面试的技巧(面向高级开发和架构师)...
查看>>
一个简单的PHP网站结构
查看>>
Redis 学习之简介及安装
查看>>
jsp简单的学习
查看>>
[LeetCode][JavaScript]Number of 1 Bits
查看>>
[LeetCode][JavaScript]Plus One
查看>>
C语言-06复杂数据类型-01数组
查看>>
同余方程 2012年NOIP全国联赛提高组
查看>>
vue 图片预览插件
查看>>
深入解析:分布式系统的事务处理经典问题及模型
查看>>
python的2种字符串格式化输出
查看>>
Netsharp快速入门(之14) 销售管理(报表A 热销滞销品统计)
查看>>
配置 SQL Server Email 发送以及 Job 的 Notification通知功能
查看>>
线上应用bug跟踪查找-友盟统计
查看>>
07 数据结构
查看>>
docker学习(一)
查看>>
django.db.migrations.exceptions.InconsistentMigrationHistory django报错
查看>>
linux shell编程指南第十八章------控制流结构
查看>>