Linux命令&shell笔记1——基础篇

基本知识

shell提示符和shell脚本文件

  • username@hostname$代表普通用户,root@hostname#代表超级用户
  • shell脚本文件是以!#[解释器路径]开头的文件。比如#!/bin/bash
  • 想要运行shell脚本,可以用解释器执行:sh script.sh,或者直接执行脚本:./script.sh(注意前面的./不能省略)或使用脚本完整路径:/.../script.sh。直接执行脚本需要有可执行的权限,如果没有的话会zsh: permission denied: ./script.sh。此时需要chmod a+x script.sh

终端打印:echo、printf

关于echo

  • 每次打印加一个换行符。
  • 不带引号,单引号和双引号都可以打印,但有细微的差别:双引号中不能打印感叹号'!',需要转义。不带引号不能打印分号(因为被用作定界符),单引号中的变量$var不会被求值。
  • 一些选项:-n:忽略结尾的换行符;-e:包含转义序列
  • 打印彩色的例子echo -e "\e[1;31m This is red Text. \e[0m",其中最后的\e[0m把颜色重新置回,第一个\e[1;31m把颜色设置成了红色

关于printf

  • 和C语言中的printf很相似,注意每次使用都会在结尾附加一个\n
  • 格式:printf "[%[-a][.b][格式替代符:s/c/d/f...]]..." var1 var2...
$ printf "%-3s,%-10s,%-4.2f" 1 Raidriar 2.333333
1  ,Raidriar  ,2.33

变量与环境变量的使用

变量

  • 这样是给变量赋值:var=value,这样是判断相等:var = value
  • 在变量前面加上$前缀,即可对变量求值。例如echo $var
  • 获得变量长度:${#var}

环境变量是未在当前进程中定义,而是从父进程继承的变量。例如PATH

  • export命令可以设置环境变量:export PATH="$PATH:/..."
  • 还有一些环境变量HOME PWD USER UID SHELL
#!/bin/bash
echo $PATH;echo $HOME;echo $PWD;echo $USER;echo $UID;echo $SHELL
# script.sh
raidriarb@Rmbp LinuxShellTest % ./script.sh 
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/Apple/usr/bin:/Library/Apple/bin:/Applications/Wireshark.app/Contents/MacOS
/Users/raidriarb
/Users/raidriarb/Desktop/LinuxShellTest #PWD:当前工作目录
raidriarb
501 #UID为0,则为root用户
/bin/zsh #现在用的shell是哪个

数学

文件描述符与重定向

基础知识

文件描述符是与【一个打开的文件或数据流】相关联的【整数】。IO编程中,我们经常使用到stdin,stdout,stderr这几个流,这几个流的文件描述符是系统预留的,分别为0,1,2

  • 关于stderr:很多人不知道它是做什么用的,这个流用来打印错误信息。它虽然在控制台中打印了文本,但并非标准输出stdout的方式打印,否则是区分不开错误信息的文本和正常文本的。
  • 命令执行成功和不成功是有返回值的,这个返回值通过变量$?来查看
$ ls +
ls: +: No such file or directory #这是stderr打印的

$ echo $?
1 #不成功
$ echo $?
0 #上一条的echo $? 是成功的

文件重定向的符号有两个:>>>。其中前者的输出方式是“清空”,后者的输出方式是“追加”。

$ echo "hello1" > hello
$ cat hello
hello1

$ echo "hello2" > hello
$ cat hello
hello2

$ echo -n "hello3" >> hello
$ cat hello
hello2
hello3

当然也可以重定向stderr,这里不多演示了。
如果重定向到了这个文件:/dev/null,那么所有的输出都会被丢弃。这个文件也被称为黑洞。

管道和tee命令

管道的符号是|,它可以把上一个命令的输出,作为stdin,传给下一个命令。注意只有在管道的最后才会被输出。

$ cat file1 | cat -n
     1  this is a line in file1.
     2  this is another line.

如果使用了重定向,那么输出从stdout重定向了,没有什么东西可以通过管道传递给接下来的命令。
命令tee可以提供一种方法,将一份副本写入重定向的文件,同时把另一份副本传递给后续命令的stdin。

$ cat file1 | tee file1_cp | cat -n
     1  this is a line in file1.
     2  this is another line.
#既输出到了文件,又通过管道传输给下一个命令
  • tee默认情况是覆盖方式写入文件,但 -a 参数可以使用追加模式
  • stdin也可以作为tee的参数,只要把-或者/dev/stdin作为文件名参数即可
  • 同样的,/dev/stdout,/dev/stderr代表标准输出和标准错误流

其他技巧

别名 alias

  • 别名是一种快捷方式,可以替换一长串命令。
  • 例如alias rm 'cp $@ ~/backup; rm $@',可以防止rm -rf从删库到跑路
  • 一旦关闭当前终端,别名就会失效。如果要持久化,需要将它写入~/.bashrc文件中:echo 'alias cmd="command seq"' >> ~/.bashrc
  • 使用转义命令\command可以强制使用原命令command,而不是别名,所以强制删库跑路也是可以的。。。为了安全起见,建议在不信任的环境下的命令都加上这个转义序列,因为可能有人在此目录植入了别名,更换了一些别有用心的命令
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,293评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,604评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,958评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,729评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,719评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,630评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,000评论 3 397
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,665评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,909评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,646评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,726评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,400评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,986评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,959评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,996评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,481评论 2 342

推荐阅读更多精彩内容