shell学习

shell之前都是用着的时候查一下,觉得还是稍微简单学习一下

shell学习_第1张图片
shell——学习.png
在Linux的环境中, 『大小写字母是不一样的东西!』

显示日期的命令: date
显示日历的命令: cal

查阅资料:
man info /usr/share/doc/

数据同步写入磁盘: sync
惯用的关机命令: shutdown
重新启动,关机: reboot, halt, poweroff

-rw-r--r--   1    root   root     5661   Sep  4 18:25 install.log.syslog
[    1   ][  2 ][   3  ][  4 ][    5   ][     6     ][       7          ]
[  权限  ][连结][拥有者][群组][文件容量][  修改日期 ][      檔名
 
目录的x权限,不是执行,是cd到该目录下
拥有一个目录的权限,那么可以对目录下的文件进行操作

grep -c 统计行数

[Ctrl] + [f]    屏幕『向下』移动一页,相当于 [Page Down]按键 (常用)
[Ctrl] + [b]    屏幕『向上』移动一页,相当于 [Page Up] 按键 (常用)
  
   
0 或功能键[Home]    这是数字『 0 』:移动到这一行的最前面字符处 (常用)
$ 或功能键[End] 
移动到这一行的最后面字符处(常用)   

gg  移动到这个档案的第一行,相当于 1G 啊! (常用)
n    n 为数字。光标向下移动 n 行(常用)



x, X    在一行字当中,x 为向后删除一个字符 (相当于 [del] 按键), X 为向前删除一个字符(相当于 [backspace] 亦即是退格键) (常用)

dd  删除游标所在的那一整列(常用)
ndd n 为数字。删除光标所在的向下 n 列,例如 20dd 则是删除 20 列 (常用)

yy  复制游标所在的那一行(常用)
nyy n 为数字。复制光标所在的向下 n 列,例如 20yy 则是复制 20 列(常用)

p, P    p 为将已复制的数据在光标下一行贴上,P 则为贴在游标上一行! 举例来说,我目前光标在第 20 行,且已经复制了 10 行数据。则按下 p 后, 那 10 行数据会贴在原本的 20 行之后,亦即由 21 行开始贴。但如果是按下 P 呢? 那么原本的第 20 行会被推到变成 30 行。 (常用)

u   复原前一个动作。(常用)
[Ctrl]+r    重做上一个动作。(常用)

.   不要怀疑!这就是小数点!意思是重复前一个动作的意思。 如果你想要重复删除、重复贴上等等动作,按下小数点『.』就好了! (常用)


i, I    进入插入模式(Insert mode):
i 为『从目前光标所在处插入』, I 为『在目前所在行的第一个非空格符处开始插入』。 (常用)
a, A    进入插入模式(Insert mode):
a 为『从目前光标所在的下一个字符处开始插入』, A 为『从光标所在行的最后一个字符处开始插入』。(常用)
o, O    进入插入模式(Insert mode):
这是英文字母 o 的大小写。o 为『在目前光标所在的下一行处插入新的一行』; O 为在目前光标所在处的上一行插入新的一行!(常用)
r, R    进入取代模式(Replace mode):
r 只会取代光标所在的那一个字符一次;R会一直取代光标所在的文字,直到按下 ESC 为止;(常用)

:w  将编辑的数据写入硬盘档案中(常用)
:q  离开 vi (常用)
:wq 储存后离开,若为 :wq! 则为强制储存后离开 (常用)

:set nu 显示行号,设定之后,会在每一行的前缀显示该行的行号
:set nonu   与 set nu 相反,为取消行号!

多档案编辑的按键
:n  编辑下一个档案
:N  编辑上一个档案
:files  列出目前这个 vim 的开启的所有档案

多窗口情况下的按键功能
:sp [filename]  开启一个新窗口,如果有加 filename, 表示在新窗口开启一个新档案,否则表示两个窗口为同一个档案内容(同步显示)。
[ctrl]+w+ j
[ctrl]+w+↓  按键的按法是:先按下 [ctrl] 不放, 再按下 w 后放开所有的按键,然后再按下 j (或向下箭头键),则光标可移动到下方的窗口。
[ctrl]+w+ k
[ctrl]+w+↑  同上,不过光标移动到上面的窗口。
[ctrl]+w+ q 其实就是 :q 结束离开啦! 举例来说,如果我想要结束下方的窗口,那么利用 [ctrl]+w+↓ 移动到下方窗口后,按下 :q 即可离开, 也可以按下 [ctrl]+w+q 啊!


echo $HOME 

export 来使变量变成环境变量:

取消变量的方法为使用 unset

[root@www ~]# read [-pt] variable
选项与参数:
-p  :后面可以接提示字符!
-t  :后面可以接等待的『秒数!』这个比较有趣~不会一直等待使用者啦!



[root@www ~]# declare [-aixr] variable
选项与参数:
-a  :将后面名为 variable 的变量定义成为数组 (array) 类型
-i  :将后面名为 variable 的变量定义成为整数数字 (integer) 类型
-x  :用法与 export 一样,就是将后面的 variable 变成环境变量;
-r  :将变量配置成为 readonly 类型,该变量不可被更改内容,也不能 unset

 将 - 变成 + 可以进行『取消』动作

echo ${path#/*kerberos/bin:}
* # :符合取代文字的『最短的』那一个;
* ##:符合取代文字的『最长的』那一个

${变量#关键词}
${变量##关键词}  若变量内容从头开始的数据符合『关键词』,则将符合的最短数据删除
若变量内容从头开始的数据符合『关键词』,则将符合的最长数据删除
${变量%关键词}
${变量%%关键词}  若变量内容从尾向前的数据符合『关键词』,则将符合的最短数据删除
若变量内容从尾向前的数据符合『关键词』,则将符合的最长数据删除
${变量/旧字符串/新字符串}
${变量//旧字符串/新字符串}    若变量内容符合『旧字符串』则『第一个旧字符串会被新字符串取代』
若变量内容符合『旧字符串』则『全部的旧字符串会被新字符串取代』

[root@www ~]# username=${username-root}
 username 没有配置,则主动给予名为 root 的内容。

username=${username:-root}
加上『 : 』后若变量内容为空或者是未配置,都能够以后面的内容替换!


 alias lm='ls -al | more'
 unalias lm


[root@www ~]# history
   66  man rm
   67  alias
   68  man history
   69  history 
[root@www ~]# !66  <==运行第 66 笔命令
[root@www ~]# !!   <==运行上一个命令,本例中亦即 !66 
[root@www ~]# !al  <==运行最近以 al 为开头的命令(上头列出的第 67 个)

命令运行的顺序可以这样看:

1. 以相对/绝对路径运行命令,例如『 /bin/ls 』或『 ./ls 』;
2. 由 alias 找到该命令来运行;
3. 由 bash 内建的 (builtin) 命令来运行;
4. 透过 $PATH 这个变量的顺序搜寻到的第一个命令来运行。

一般来说,login shell 其实只会读取这两个配置文件:

1. /etc/profile:这是系统整体的配置,你最好不要修改这个文件;
2. ~/.bash_profile 或 ~/.bash_login 或 ~/.profile:属于使用者个人配置,你要改自己的数据,就写入这里!

所读取的个人偏好配置文件其实主要有三个,依序分别是:
1. ~/.bash_profile
2. ~/.bash_login
3. ~/.profile

其实 bash 的 login shell 配置只会读取上面三个文件的其中一个, 而读取的顺序则是依照上面的顺序。

 source 或小数点 (.) 都可以将配置文件的内容读进来目前的 shell 环境中! 

1. 标准输入  (stdin) :代码为 0 ,使用 < 或 << ;
2. 标准输出  (stdout):代码为 1 ,使用 > 或 >> ;
3. 标准错误输出(stderr):代码为 2 ,使用 2> 或 2>> ;

* 1> :以覆盖的方法将『正确的数据』输出到指定的文件或装置上;
* 1>>:以累加的方法将『正确的数据』输出到指定的文件或装置上;
* 2> :以覆盖的方法将『错误的数据』输出到指定的文件或装置上;
* 2>>:以累加的方法将『错误的数据』输出到指定的文件或装置上;

范例四:承范例三,将错误的数据丢弃,屏幕上显示正确的数据
[dmtsai@www ~]$ find /home -name .bashrc 2> /dev/null
至于写入同一个文件的特殊语法如上表所示,你可以使用 2>&1

范例六:利用 cat 命令来创建一个文件的简单流程
[root@www ~]# cat > catfile
testing
cat file test
<==这里按下 [ctrl]+d 来离开

[root@www ~]# cat catfile
testing
cat file test


[root@www ~]# cat > catfile << "eof"
> This is a test.
> OK now stop
> eof  <==输入这关键词,立刻就结束而不需要输入 [ctrl]+d


命令下达情况  说明
cmd1 && cmd2    1. 若 cmd1 运行完毕且正确运行($?=0),则开始运行 cmd2。
2. 若 cmd1 运行完毕且为错误 ($?≠0),则 cmd2 不运行。
cmd1 || cmd2    1. 若 cmd1 运行完毕且正确运行($?=0),则 cmd2 不运行。
2. 若 cmd1 运行完毕且为错误 ($?≠0),则开始运行 cmd2。


,由于命令是一个接着一个去运行的,因此,如果真要使用判断, 那么这个 && 与 || 的顺序就不能搞错。一般来说,假设判断式有三个,也就是:

command1 && command2 || command3

而且顺序通常不会变,因为一般来说, command2 与 command3 会放置肯定可以运行成功的命令, 因此,依据上面例题的逻辑分析,您就会晓得为何要如此放置啰~这很有用的啦!而且.....考试也很常考~

[root@www ~]# cut -d'分隔字符' -f fields <==用于有特定分隔字符
[root@www ~]# cut -c 字符区间            <==用于排列整齐的信息
选项与参数:
-d  :后面接分隔字符。与 -f 一起使用;
-f  :依据 -d 的分隔字符将一段信息分割成为数段,用 -f 取出第几段的意思;
-c  :以字符 (characters) 的单位取出固定字符区间;

范例二:将 export 输出的信息,取得第 12 字符以后的所有字符串
[root@www ~]# export | cut -c 12-

sort 可以排序,而且指定分隔符后用指定区间排序

uniq 将重复数据之显示一个

wc 获取一个文件的行数、字符数、多少word等信息

tee fileName 可以 同时存文件+界面显示

tr 可以用来删除一段信息当中的文字,或者是进行文字信息的替换!

你可能感兴趣的:(shell学习)