练习 3:Bash:Shell、.profile、.bashrc、.bash_history。
来源:互联网 发布:推广淘宝网站 编辑:程序博客网 时间:2024/05/29 14:39
当使用 CLI(命令行界面)来使用 Linux 时,你正在与一个名为 shell 的程序进行交互。所有你输入的都传递给 shell,它解释你输入的内容,执行参数扩展(这有点类似于代数中的花括号扩展),并为你执行程序。我们将使用的 Shell 称为 Bash,它代表 Bourne Again Shell,而 Bourne Again Shell 又是一个双关语。现在我将使用纯中文,向大家介绍一下 bash 的工作方式:
- 你
- 登入 Linux 虚拟机
- 你的身份由用户名(
user1
)和密码(123qwe
)确定。 - Bash 执行了。
- Bash
- 从你的配置中读取并执行首个命令,它定义了:
- 命令提示符是什么样子
- 使用 Linux 时,你会看到什么颜色
- 你的编辑器是什么
- 你的浏览器是什么
- ...
- 读取首个命令后,Bash 进入循环
- 没有通过输入
exit
或者按下<CTRL+D>
,来要求退出的时候:- 读取一行
- 解析这一行,扩展花括号
- 使用扩展参数执行命令
- 没有通过输入
- 从你的配置中读取并执行首个命令,它定义了:
我重复一下,你输入的任何命令都不会直接执行,而是首先扩展,然后执行。例如,当你输入ls *
时,星号*
将扩展为当前目录中所有文件的列表。
现在你将学习如何修改你的配置,以及如何编写和查看你的历史记录。
这样做
1: ls -al 2: cat .profile 3: echo Hello, $LOGNAME! 4: cp -v .profile .profile.bak 5:
echo 'echo Hello, $LOGNAME!' >> .profile
6:
tail -n 5 .profile
7:
history -w
8: ls -altr 9:
cat .bash_history
10: exit
你会看到什么
user1@vm1's password:Linux vm1 2.6.32-5-amd64 #1 SMP Sun May 6 04:00:17 UTC 2012 x86_64The programs included with the Debian GNU/Linux system are free software;the exact distribution terms for each program are described in theindividual files in /usr/share/doc/*/copyright.Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extentpermitted by applicable law.Last login: Thu Jun 7 12:03:29 2012 from sis.siteHello, user1!user1@vm1:~$ ls -altotal 20drwxr-xr-x 2 user1 user1 4096 Jun 7 12:18 .drwxr-xr-x 3 root root 4096 Jun 6 21:49 ..-rw-r--r-- 1 user1 user1 220 Jun 6 21:48 .bash_logout-rw-r--r-- 1 user1 user1 3184 Jun 6 21:48 .bashrc-rw-r--r-- 1 user1 user1 697 Jun 7 12:04 .profileuser1@vm1:~$ cat .profile# ~/.profile: executed by the command interpreter for login shells.# This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login# exists.# see /usr/share/doc/bash/examples/startup-files for examples.# the files are located in the bash-doc package.# the default umask is set in /etc/profile; for setting the umask# for ssh logins, install and configure the libpam-umask package.#umask 022# if running bashif [ -n "$BASH_VERSION" ]; then # include .bashrc if it exists if [ -f "$HOME/.bashrc" ]; then . "$HOME/.bashrc" fifi# set PATH so it includes user's private bin if it existsif [ -d "$HOME/bin" ] ; then PATH="$HOME/bin:$PATH"fiecho Hello, $LOGNAME!user1@vm1:~$ echo Hello, $LOGNAME!Hello, user1!user1@vm1:~$ cp -v .profile .profile.bak`.profile' -> `.profile.bak'user1@vm1:~$ echo 'echo Hello, $LOGNAME!' >> .profileuser1@vm1:~$ tail -n 5 .profile# set PATH so it includes user's private bin if it existsif [ -d "$HOME/bin" ] ; then PATH="$HOME/bin:$PATH"fiecho Hello, $LOGNAME!user1@vm1:~$ history -wuser1@vm1:~$ ls -altrtotal 28-rw-r--r-- 1 user1 user1 3184 Jun 6 21:48 .bashrc-rw-r--r-- 1 user1 user1 220 Jun 6 21:48 .bash_logoutdrwxr-xr-x 3 root root 4096 Jun 6 21:49 ..-rw-r--r-- 1 user1 user1 741 Jun 7 12:19 .profile.bak-rw------- 1 user1 user1 308 Jun 7 12:21 .bash_history-rw-r--r-- 1 user1 user1 697 Jun 7 12:25 .profiledrwxr-xr-x 2 user1 user1 4096 Jun 7 12:25 .user1@vm1:~$ cat .bash_historyls -alcat .profileecho Hello, $LOGNAME!cp -v .profile .profile.bakecho 'echo Hello, $LOGNAME!' >> .profiletail -n 5 .profilehistory -wls -altruser1@vm1:~$ exitlogout
不要害怕,所有命令都会解释。行号对应“现在输入它”的部分。
解释
打印当前目录中的所有文件,包括隐藏的文件。选项
-al
告诉ls
以long
格式打印文件列表,并包括所有文件,包括隐藏文件。.profile
和.bash_rc
是隐藏文件,因为它们以点.
开头。以点开头的每个文件都是隐藏的,这很简单。这两个特殊文件是 shell 脚本,它们包含登录时执行的指令。打印出你的
.profile
文件。只是这样。告诉你的 shell,你这里是 bash,输出一个字符串
Hello, $LOGNAME!
,用环境变量`$LOGNAME
替换$LOGNAME`,它包含你的登录名。将
.profile
文件复制到.profile.bak
。选项-v
让cp
详细输出,这意味着它会打印所有的操作。记住这个选项,它通常用于让命令给你提供比默认更多的信息。在
.bash_rc
配置文件中添加一行。从现在开始,每次登录到vm1
时, 都将执行该命令。注意,>>
代表向文件添加了一些东西,但>
意味着使用一些东西来替换文件。如果你不小心替换了.profile
而不是向它添加,则命令cp -v .profile.bak .profile
会向你返回旧的
.profile
文件。从
.profile
文件中精确打印出最后 5 行。将所有命令历史写入
.bash_history
文件。通常这是在会话结束时完成的,当你通过键入exit
或按<CTRL> + D
关闭它。打印当前目录中的文件。选项
-tr
表示文件列表按时间反向排序。这意味着最近创建和修改的文件最后打印。注意你现在有两个新的文件。打印出保存命令历史记录的文件。注意你所有的输入都在这里。
关闭会话
- 练习 3:Bash:Shell、.profile、.bashrc、.bash_history。
- 登录shell 非登录shell /etc/bash.bashrc /etc/profile ~/.bashrc ~/.profile
- shell的初始化文件:/etc/profile和/etc /bashrc(bash.bashrc)
- shell的初始化文件:/etc/profile和/etc/bashrc(bash.bashrc)
- shell的初始化文件:/etc/profile和/etc/bashrc(bash.bashrc)
- ubuntu 系统 /etc/profile, ~/.profile, ~/.bashrc, ~/.bash_logout,~/.bash_history 文件的内容及解析
- 关于Debian中的/etc/.profile, /etc/bash.bashrc, ~/.bashrc, ~/.profile,
- Linux中的~/.profile,~/.bashrc,/etc/profile,/etc/bash.bashrc
- shell登录时的环境是如何配置的呢?—— bashrc、profile、bash.bashrc关系
- /etc/bash.bashrc、/etc/profile、终端 设置
- Bash: about .bashrc, .bash_profile, .profile, /etc/profile, etc/bash.bashrc and others
- 详解/etc/profile、/etc/bash.bahsrc、~/.profile、~/.bashrc的用途
- 详解/etc/profile、/etc/bash.bahsrc、~/.profile、~/.bashrc的用途
- 启动文件rc.local、/etc/bash.bashrc、~/bashrc、/etc/profile、~/.profile【转载from joyride】值得了解
- Bash初始化文件/etc/profile .bash_pro-file .bash_login .profile .bash_logout /etc/bashrc .bashrc
- Linux 配置文件 启动文件rc.local、/etc/bash.bashrc、~/bashrc、/etc/profile、~/.profile加载顺序
- 启动文件rc.local、/etc/bash.bashrc、~/bashrc、/etc/profile、~/.profile【转载from joyride】值得了解
- 启动文件rc.local、/etc/bash.bashrc、~/bashrc、/etc/profile、~/.profile【转载from joyride】值得
- com.github.pagehelper.PageHelper cannot be cast to org.apache.ibatis.plugin.Interceptor和oracle不识别
- **统计学相关系数(1)___Spearman Rank**
- 对称加密的对称密钥分发
- php命名空间:非限定名称、限定名称、完全限定名称实例详解
- codeforces 869c(组合数)
- 练习 3:Bash:Shell、.profile、.bashrc、.bash_history。
- 【LibUIDK界面库系列文章】使用RichEdit制作QQ聊天记录控件
- 朴素贝叶斯(未完待续......)
- Session和Application
- RTL8192EU 无线网卡Ubuntu16.04安装驱动
- python3中input输入浅谈
- dubbo源码分析-consumer端5-Filter
- CSS强制换行和超出隐藏
- Linux日志管理以及备份与恢复