概述
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为$
和
PS2
,PS3
,PS4
的比较(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
转载于:https://www.cnblogs.com/zk47/p/4709146.html
最后
以上就是动人小笼包为你收集整理的Linux的常用用法Linux 的常用用法的全部内容,希望文章能够帮你解决Linux的常用用法Linux 的常用用法所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复