Linux開發有關知識匯集

 

ps命令

bash
ksh
csh
sh
tcsh
ps

一個終端至少有一個shell,用來和用戶打交道

登陸shell,管理員指定登陸是什么shell,平常用就用什么shell

exec ksh切換shell,切換shell之后原來的shell就沒用了。可以通過ps來驗證

date


操作系統要管理文件
 目錄
  子目錄
   文件
文件系統
 樹
移動文件系統
 /
/etc/hosts


linux嚴格區分大小寫;


pwd=print working directory打印出當前的工作目錄
ps=process status打印出進程的狀態
clear=ctrl+l
每個程序每運行一次有一個狀態


tty是終端編號,每個終端都有一個編號
pid進程的id;內核在管理對象的時候,一般采用一個整數來分配和識別
cmd是命令
time是利用的cpu的時間

cd=change direcotry改變當前工作目錄


絕對路徑
相對路徑

管理員在創建賬戶的時候會指定shell,和主目錄home directory

cd /etc/alsa/cards

/~.分別表示根目錄、主目錄、當前目錄
..表示上一級目錄
../..表示上一級的上一級


ls=list列出

telnet

passwd更改密碼
用戶名和密碼存在于/etc/passwd文件中
soft01:x:500:50::/home/soft01:/bin/bash
用戶名:密碼:
密碼實際上都放到了shadow文件中了
group


ps -l
ps -e
ps -f
ps -p pid


ls
ls /usr
ls /usr /mnt

case-sensitive
命令 【選項】....【參數】...

man
more

man  date
date +%D
date +%F
date +%T

date 08011020

問題:
etc下的passwd、shadow、group等文件及文件格式解釋

id
id username


文件系統
從/開始的樹狀結構
絕對路徑:/打頭
相對路徑:當前目錄之下開始
當前目錄:cd .
          cd ..
主目錄
 ~用戶名:本用戶的主目錄
 username,passwd,uid,gid,,home,shell:/etc/passwd,x--->/etc/shadow


 每個命令都對應一個可執行文件;shell會支持一些內部命令,沒有文件。
ls /bin  可執行文件
 如bash ,csh,tcsh,ksh等;

clear命令,清屏幕;
 
 sleep 5睡覺
 
ls -l  利用長格式顯示出相關信息

ls -F打標記(*表示可執行文件,@表示軟連接或者符號連接,)---快捷方式
ls -a顯示全部文件.    ..  包含隱藏文件一起顯示.開頭的是隱藏文件,其中包含.和..
ls -A  除了.和..之外都顯示


ls -l
  -打頭普通文件
  d打頭目錄文件
  l打頭鏈接文件
  x結尾可執行文件
  p打頭管道
 
 ls  -t -l與ls -l兩者的區別,兩者之間一個按字母一個是按時間來排序顯示
 
 ls -R,列出當前目錄開始的目錄樹
 ls -r
 ls -F

mkfifo abc
ln -s /bin/date da
ls -l

echo hello>ghi.jk

軟鏈接:快捷方式;存放的是路徑  ln -s
硬鏈接:同一文件對應多個名字  ln 
硬鏈接 跨設備不行

cp == copy
cp  /bin/zsh ~/Desktop/

當硬鏈接數量為0的時候,則真正的刪除該文件;
硬鏈接一旦建立后,硬鏈接之間是相互平等的

rwx= read  write  execute

drwxrwxrwx
權限===》
自己|同組人|其他人

rm  abc
rm  bs da

如何更改權限
chmod  ugo
u代表自己
g代表同組人
o代表其他人

chmod  o-rx z刪除其他人的rx權限
chmod  o+rx z增加其他人的rx權限
chmod  o=rwx z設置其他組人的rwx權限
chmod  o=-  z 設置其他組人的rwx權限為空
chmod  u-w,o+r,g+w  z
chmod  a+x  z,給所有人增加x權限
chmod  0644 z;注意:在c和c++中,以0開頭的是一個8進制數

r----4   w----2  x---1   ----0權限數字化

權限可以用一個3位的8進制數來表示---》如700==》c語言編程中可以借鑒這種模式

文件的創建、刪除、修改、復制
創建目錄:
mkdir  da db dc建立3個并排的目錄
mkdir  dd/de  XX
mkdir  dd
mkdir  dd/de
==>mkdir -p dd/de/dc創建多層的目錄
ls -R顯示所有的目錄文件

touch創建空文件
touch f1  f2 f3同時創建3個空文件
touch  da/f4   db/f5在不同的目錄下創建不同的文件
touch db/f6  db/f7  db/f8
===>cd db
 touch f6 f7 f8
cd ..

date命令
date > xyz重定向;將左邊命令產生的輸出寫到右邊的文件中去;會清空文件中的原有內容;
date >>xyz把左邊命令產生的輸出追加到右邊的文件中,不會清空原文件中的原有內容;
cat xyz用命令來查看xyz的內容或者用vi來查看xyz的內容

pwd  > abc

cal顯示當月的日歷
cal  2012
cal 11 2010


echo  大家好
echo  大家好  >>  f10

echo  大家好才是真的好 >> f10;cat f10=====>重要在編輯腳本時很有效

date;sleep 5;date===>在設置識別裸設備時,速度可能比較慢,最好是init過程之前等待識別30秒

/dev/tty表示的是終端鼠標\鍵盤\顯示器

date > /dev/tty===>編輯腳本時常用

date  > /dev/null==>黑洞文件,永遠的空文件,空設備文件

如:ls -l  > /dev/null
 ls -l


mv  f1  dc  將f1文件移動到dc下
mv  f1  da dc將f1,da目錄移動到dc下
mv  db  dc/d2將db移動到dc下并修改為d2;只有移動一個目錄或文件的時候才能改名,如果移動多個是不能改名的

cp -r  包含目錄一起復制
cp -i   interactive交互;   目錄覆蓋的時候無提示,有文件覆蓋的時候才提示

rm -r可以刪除文件和非空目錄;但是刪除目錄時比較危險
rm本身是不刪除目錄的
rmdir只能用來刪除空目錄
rm -ri

字符鏈接軟
ln -s:通過文件系統鏈接一個文件或者目錄
link1-->inode 3561(data blocks/file2)-->file2--->inode 1282(data blocks)
硬鏈接
ln
在同一個文件系統上去鏈接文件
多個文件被硬性的鏈接到相同的inode number,涉及硬盤上的相同數據

如file1,file===》inode1282 (data blocks)
 dir1====>inode 4221(data blocks  file1=inode1282;file2=inode 1282)


ls
rm dc/f1  dc/f2  dc/f3
rm dc/f*
rm dc/*

通配符號
ls  -l  dc/*2
ls -l -d dc/*2
rm -r a*b*c

命令本身并不能處理通配符,是通過shell來處理的

?只能匹配一個任意字符
[]匹配指定范圍內的一個字符,如[b-j]   [135abj]
[4-12]====>[4-1,2]

cat
man
head /etc/passwd;head可以看前10行,或者head -5,顯示前5行
tail  默認看后10行,看后5行,tail -5
more分屏顯示
less可以上下左右的任意翻看文件內容,也是分屏顯示
vi
wc===word count統計數量;行數,單詞數,字符數
wc -l只要行數,-w只要單詞數  -c只要字符數
grep  字符串  文件
id
grep  -i  忽略大小寫i=ignore case
grep -v查找不包含指定字符串的行
grep -v 01 /etc/passwd >tempxxx
more tempxxx
rm tempxxx

grep -v 01 /etc/passwd | more   把左邊命令的輸出當作一個文件直接交給右邊的命令來處理。這就是管道

grep nologin /etc/passwd | wc -l

gedit全屏幕的編輯器
kate

vi==vim
有兩種工作狀態;1、初始的命令狀態;2、插入狀態
命令狀態(初始)----i,a,o--->插入狀態---<ESC>--->命令狀態
----->底行模式---->:/?


vi
    k上
h左     l右
 j下
^行首      $行尾
G文件尾     1G文件首
第N行   NG
屏幕頭H,屏幕中M,屏幕底L
下翻:ctrl+f 上翻 ctrl+b
w下一個單詞開頭
b上一個單詞開頭
e下一個單詞末尾

i在光標當前位置插入
a在光標所在位置后插入
o在光標所在行下插入一空行
O在光標所在行上插入一空行
 
:set nu顯示行號代碼
: no nu 不顯示行號
I跑行首添加
A跑行尾追加

x刪除一個字符3x
dw刪除當前詞
3dw刪除3個詞
dd刪除當前行
5dd刪除5行
:5,10d刪除5-10行
刪除之后如果想恢復的話,使用u,undo

p粘貼在光標位置之后
P粘貼在光標位置之前

r替換一個字符
cw替換一個單詞
cc替換一行
C替換從光標至行尾


yw拷貝詞
yy 拷貝行
dw剪切詞
dd剪切行
p當前行下粘帖
:1,2co3 拷貝行1,行2在行3之后
:4,5m6 移動行4,5在行6之后
復制某一個字符,yl

ps  -l
S=status
S睡眠狀態   T掛起狀態   R運行  Z 僵尸狀態
掛起狀態不會分時間片,只是一個后臺任務擺著;
sleep 10
sleep 10 &可以后臺執行

ps只顯示本終端的進程+e可以顯示所有的進程

ps -e -l | grep Z
ps -f 顯示完整的命令
ps -p 3846根據進程的PID來跟蹤進程

init進程,其PID總是為1;父進程為0(LINUX中是不存在的;UNIX中是存在的叫總調度)

jobs專門用來查看后臺任務
調出后臺任務到前臺fg,不帶參數表示把帶+號的調用到前面來執行
也可以帶fg+
把stopped的任務用bg在后臺執行起來

終止一個任務ctrl+c也可以用kill
kill發送的是一個sigterm信號

如果是后臺任務,kill也可以刪除

jobs
kill  %1為了區分進程和任務編號,進程直接寫數字,任務編號需要加%號

熟悉vi

grep
> |  ; * ? [] / ~ . ..
find可以搜索文件或目錄

find  目錄  條件 【命令,如何處理;默認print】----在指定的目錄中進行搜索;
find .  -name  f1 在當前目錄下搜索
find / -name  f1(name后面只能包含一個文件名)
find . -name f*這句是錯誤的。
eacho find . -name f*
find . -name "f*"
eacho find . -name "f*"


find . -name "*.cpp"  -exec cp{} d6 \;
這命令的意思是
find . -name "*.cpp" 找到所有的cpp文件
\;表示轉義就表示符號本身;   ;號是命令的結束標志
-exec表示后面有個執行命令
{}表示前面的內容

find d6 -name "*.cpp" -exec rm {} ";"

who當前誰在線
who am i

users只關心用戶的名字的情況下  users

who | grep 192.168.24.  顯示出在24網段登錄的用戶

w可以知道誰在做什么?

who where when what

history顯示出用過的所有的命令的列表
!編號即可以執行相關命令

history其命令存儲在.bash_history中

du顯示磁盤空間的使用情況
du -k
du -h
du -s只有綜合
df查看剩余多少空間

ping
ifconfig
ifconfig -a

ftp

!ls -l
!ls
!lcd
!表示本地的
put
mput
get
mget

prompt把交互方式打開或者關閉;
asc表示傳遞模式設置成字符模式;尤其是在跨平臺傳輸文本文件時
bin按照二進制模式來傳輸

 

locale設置編碼語言

write聊天
mesg n不想聊天


env環境命令(環境變量)
PS1是來指定命令提示符的

path環境變量---為shell指定可查找命令的目錄
命令不是在當前目錄下找,而是在path指定的目錄下去找
假設在path路徑下有多個路徑指向了同名的命令的話,可以用which來查看
如果像查詢哪里有某個命令,可以通過whereis cal
PATH=$PATH:.

初始化文件:系統級和用戶級
系統級/etc---可以針對所有用戶
用戶級----只針對自己,不同的shell用不同的初始化文件,看man bash或man csh
~/.bashrc

vi ~/.bashrc
source ~/.bashrc在當前終端必須先source下才能生效,其他終端自動生效

alias起一個別名如
alias c=clear
alias pl=‘ps -l’

 

vi my.sh
#!/bin/bash
echo 大家好
sleep 5
echo  I love u,baby。
sleep 5
date

source my.sh
chmod u+x my.sh

 本文由用戶 honghu79 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!