Đầu tiên mình xin lỗi, do thứ XNUMX tuần trước mình không viết được bài nên hôm nay mình sẽ bổ sung thêm để bù lại ngày đã mất. 🙂
Mở rộng Brace
Trong tiếng Tây Ban Nha, mở rộng khóa có vẻ là một chức năng được lấy cảm hứng từ c-shell, điều này tạo ra sự kết hợp giữa các ký tự được nhập bên trong dấu ngoặc nhọn, thứ tự nó sử dụng là từ trái sang phải. Nó không phức tạp chút nào, nhưng nó là một tùy chọn sẽ rất hữu ích trong các chuyến tham quan GNU / Linux của chúng tôi.
Ví dụ:
$ echo a {1,2,3} a1 a2 a3
Khi dùng với dấu phẩy (,) tạo kết hợp giữa giá trị a và các giá trị bên trong dấu ngoặc nhọn. Nếu không có giá trị nào bên ngoài các khóa, nó sẽ chỉ hiển thị một lần mỗi giá trị mà khóa đó chứa.
$ echo {a, b, c} abc
Việc sử dụng nó không phức tạp chút nào, có những ví dụ khác phổ biến hơn như tạo nhiều thư mục trong một thư mục
$ mkdir ~ / Công việc / {một, hai, ba, bốn, năm}
Điều này tạo ra năm thư mục trong thư mục việc làm, giống như nhập một lệnh cùng một lúc. Tạo 5 thư mục.
Có mở rộng hai điểm .. điều này tạo ra một chuỗi số hoặc ký tự đi từ giá trị ban đầu đến giá trị cuối cùng, không sử dụng các số có chữ cái.
$ echo {1..5} #Correct 1 2 3 4 5 $ echo {a..f} #Correct abcdf $ echo {a..5} #Incorrect {a..5} # Tôi nghĩ rằng tôi sẽ không bao giờ hiểu được đã sử dụng màu xanh này trong thư
Chúng ta có thể tiết kiệm thời gian bằng cách tạo một chu trình cho
# Thay vì viết $ for ((i = 1; i <= 5; i ++)); làm echo "Số của tôi $ i"; done Số của tôi 1 Số của tôi 2 Số của tôi 3 Số của tôi 4 Số của tôi 5 # Chúng tôi lưu mã bằng cách sử dụng mở rộng dấu ngoặc nhọn. $ cho tôi trong {1..5}; do echo "Số của tôi $ i; done Số của tôi 1 Số của tôi 2 Số của tôi 3 Số của tôi 4 Số của tôi 5 # Tất nhiên nó hợp lệ để sử dụng mặc dù đầu ra khác. $ echo" Số của tôi "{1..5} Số của tôi 1 Số của tôi 2 Số của tôi 3 Số của tôi 4 Số của tôi 5
Tôi nghĩ khái niệm này đã rõ ràng, haha bây giờ tôi sẽ chỉ nhận xét rằng nó có thể kết hợp và lồng vào nhau. Ý tôi là gì?
Với khả năng kết hợp, chúng ta có thể nối một hoặc nhiều khóa
$ echo {a..c} {1..3} a1 a2 a3 b1 b2 b3 c1 c2 c3
Với việc lồng vào nhau như nhiều người sẽ tưởng tượng, bạn có thể sử dụng các khóa mở rộng trong các khóa mở rộng
$ echo {a, c {1..3}, d} a c1 c2 c3 d
Và cuối cùng từ Bash KHÔNG có thể tăng giá trị.
$ echo {0..20..2} 0 2 4 6 8 10 12 14 16 18 20
Đây là tất cả cho ngày hôm nay, vì vậy cảm ơn mọi người đã đọc tôi 🙂
thêm
Cách tạo thùng cục bộ
Khi tôi nói một bin local Ý tôi là một thư mục trong đó chúng ta có các tập lệnh của riêng mình và có thể thực thi chúng như một lệnh đơn giản ...
Để đạt được điều này tương đối dễ dàng, điều đầu tiên cần phải làm là tạo một thư mục nơi chúng ta sẽ lưu các script.
mkdir ~ / .bin # Trong ví dụ này, nó sẽ bị ẩn
Bây giờ chúng ta có thư mục để lưu các tập lệnh nhưng nó sẽ không hoạt động cho đến khi chúng ta thêm đường dẫn của .bin mới vào $ PATH
Đối với điều này, tệp đã được chỉnh sửa bash_profile, và dòng được thêm vào.
xuất PATH = $ PATH: ~ / .bin
Và điều đó là đủ để tạo một thùng rác cục bộ, tất nhiên nó sẽ yêu cầu quyền root nếu cần đối với ví dụ chúng tôi viết một kịch bản nhanh.
#! / bin / bash echo "Xin chào $ 1, bạn có khỏe không?"
Lưu nó với tên của xin chào
Tập lệnh được cấp quyền thực thi và nó sẽ chỉ đủ để gọi nó từ thiết bị đầu cuối
$ hello wada #This sẽ hiển thị thông báo Xin chào wada, bạn có khỏe không?
Vì vậy, với thủ thuật nhanh này, bạn có thể chạy các tập lệnh của mình nhanh hơn
Đó là tất cả những gì cho ngày hôm nay những người khỏe mạnh 🙂
Tái bút xin lỗi vì những sai sót nếu có, mắt tôi đã nhắm lại rồi hahaha 😀
Tôi đã ở trong vấn đề bash trong một thời gian dài và tôi đã không hiểu các mở rộng dấu ngoặc nhọn này, cảm ơn.
Về thủ thuật đường dẫn, Fedora theo mặc định thực hiện một cái gì đó như thế này nhưng trong "~ / .local / bin", hãy xem một đoạn mã từ bash_profile mà tôi đã đưa cho Jessie.
PATH = $ PATH: $ HOME / .local / bin: $ HOME / thùng
xuất PATH
Tôi có một số lo ngại:
1. Làm thế nào để tôi yêu cầu anh ta cho tôi hai khoảng thời gian với sự mở rộng của điểm; độ tuổi {1..24,55..90} và tôi mở rộng độ tuổi từ 1 đến 24 và tiếp tục với 55 đến chín mươi. như tôi đã làm nó không hoạt động. Tại sao?
2. Nếu tôi muốn giá trị đầu tiên là null và tiếp tục đánh số:
quên đi: http://manga.favorito / hình ảnh http://manga.favorito/imagen1
Tôi đã thử cách sau nhưng wget không nhận được: http://manga.favorito/imagen{, 1..42} Theo tôi, tôi sẽ phải bỏ tên đầu tiên mà không có số và tiếp tục với số từ 1 đến 42 nhưng không phải như vậy. Tại sao?
Bạn nói đúng một số bản phân phối có hoặc có .bin nhưng đó là để mọi người hiểu và thấy rằng có thể làm điều đó trong bất kỳ bản phân phối nào: D, Cảm ơn vì đã ghé qua.
Rất tốt, rất tốt cho những đóng góp kiến thức này cho thế giới linux và bảo mật của nó, một số thứ sáu, tôi hy vọng tôi có thể đọc cách định dạng một ổ đĩa trong một thiết bị đầu cuối và ghi hình ảnh iso DVD / CD của bất kỳ hệ thống miễn phí nào trong một thiết bị đầu cuối.
Cảm ơn những lời của bạn anh trai 😀 Tôi hứa rằng thứ sáu tuần sau tôi sẽ làm bài đăng đó. Và tôi phải nói về việc tùy chỉnh Vim hahaha nhưng tôi không muốn họ nghĩ rằng nó sẽ chỉ bao gồm Vim.
Bài viết về thiết bị đầu cuối xuất sắc, bài viết hay nhất mà tôi đã đọc trong một thời gian dài, kể cả một số blog xuất bản các bài hướng dẫn kiểu này. Cảm ơn rất nhiều!!
Cảm ơn bạn rất nhiều 😀 Tôi sẽ cố gắng để theo kịp.
Mẹo tuyệt vời của thùng cục bộ!
Chúc mừng!
Tuyệt vời, rất hữu ích cho bạn, cảm ơn bạn rất nhiều vì đã vượt qua người anh em 😀
Rất tốt! Không có ý kiến về điều này. Cảm ơn 🙂
Chào mừng anh trai, cảm ơn bạn đã dành thời gian để đọc nó 😀
Tôi có một số lo ngại:
1. Làm thế nào để tôi yêu cầu anh ta cho tôi hai khoảng thời gian với sự mở rộng của điểm; độ tuổi {1..24,55..90} và tôi mở rộng độ tuổi từ 1 đến 24 và tiếp tục với 55 đến chín mươi. như tôi đã làm nó không hoạt động. Tại sao?
2. Nếu tôi muốn giá trị đầu tiên là null và tiếp tục đánh số:
quên đi: http://manga.favorito/imagen http://manga.favorito/imagen1
Tôi đã thử cách sau nhưng wget không nhận được: http://manga.favorito/imagen{, 1..42} Theo tôi, tôi sẽ phải bỏ tên đầu tiên mà không có số và tiếp tục với số từ 1 đến 42 nhưng không phải như vậy. Tại sao?
* Xin lỗi nhưng tôi đặt bài viết đầu tiên như một câu trả lời và nó đã sai ở một số phần
1.- Logic của bạn là sai, bạn phải lồng nó vào hahaha hãy thử với
$ echo {{1..24},{55..90}}
2.- Giống như phần trước ...
$ echo "URL"{,{1..42}}
Đừng lo lắng, anh trai, chúng tôi ở đây để giúp chúng tôi 🙂
Để thay thế for bằng echo, nó sẽ như thế này
echo "Số của tôi" {1..5} $ '\ n' | sed -e: a -e '$! n; s / \ n / \ n /; ta' | sed -e: a -e '$! n; s / 5 \ n / 5 /; ta'
nhưng tôi thích printf hơn
printf "Tôi, tôi% d \ n" {1..5}
và sử dụng cùng một khái niệm về mở rộng khóa
atte
jvk85321
Làm thế nào để bạn đặt các hộp đầu cuối ????
atte
jvk85321
Kiểm tra xem thẻ mã có hoạt động không
Jeje
Để thay thế for bằng echo, nó sẽ như thế này
echo “Mi numero “{1..5}$’\n’ | sed -e :a -e ‘$!N;s/\n /\n/;ta’ | sed -e :a -e ‘$!N;s/5\n/5/;ta’
pero prefiero printf
printf “Mi numero %d\n” {1..5}
và sử dụng cùng một khái niệm về mở rộng khóa
atte
jvk85321
Tôi còn lại với một số lỗi nhưng nó đã hoạt động
Tôi còn sống maluco
Xin lôi vi đa lam phiên
atte
jvk85321
Hahaha bạn đã tự trả lời nhưng nếu nó nằm giữa các nhãn
không có khoảng trắng ...
Và khi thay thế cho thì không cần thiết phải làm nhiều như vậy đâu hahahaha đủ với:
echo -e "Mi numero "{1..5}"\n\b"
Thành thật mà nói printf là cách tốt nhất để in văn bản trong script, nó dễ di động hơn nhưng theo truyền thống sử dụng tiếng vang.
Tôi lấy không gian! hahahahaha
chúng ta hãy xem ngay bây giờ 😀
Quái nó là "nhỏ hơn" mã "lớn hơn" "nhỏ hơn" / mã "lớn hơn" hahahaha
Vấn đề là tiếng vang -e không chuẩn, vì vậy nó không hoạt động trên tất cả các hệ thống.
Cũng xuất hiện lộn xộn
jvk@jvktos:~$ echo -e "Mi numero "{1..5}"\n\b"
Mi numero 1
Mi numero 2
Mi numero 3
Mi numero 4
Mi numero 5
jvk@jvktos:~$
Và với cái này
jvk@jvktos:~$ echo "Mi numero "{1..5}$'\n' | sed -e :a -e '$!N;s/\n /\n/;ta' | sed -e :a -e '$!N;s/5\n/5/;ta'
Mi numero 1
Mi numero 2
Mi numero 3
Mi numero 4
Mi numero 5
jvk@jvktos:~$
Tôi nghĩ thứ hai trình bày kết quả tốt hơn, hahaha
atte
jvk85321
Những cái nhãn này thật là ngớ ngẩn, hehehe, hãy xem chúng có hiệu quả không
jvk@jvktos:~$ echo -e "Mi numero "{1..5}"\n\b"
Mi numero 1
Mi numero 2
Mi numero 3
Mi numero 4
Mi numero 5
jvk@jvktos:~$
Và với cái này
jvk@jvktos:~$ echo "Mi numero "{1..5}$'\n' | sed -e :a -e '$!N;s/\n /\n/;ta' | sed -e :a -e '$!N;s/5\n/5/;ta'
Mi numero 1
Mi numero 2
Mi numero 3
Mi numero 4
Mi numero 5
jvk@jvktos:~$
Tôi nghĩ thứ hai trình bày kết quả tốt hơn, hahaha
atte
jvk85321
Dù sao, hãy để khoảng cách giữa các dòng, đó là lý do tại sao tôi ghét html, hahahaha
Thông minh! Tôi vỗ chân bạn haha
Tôi không biết rằng các khóa có thể được lồng vào nhau, vì tôi cũng chưa bao giờ cố gắng sử dụng chúng, nó thực sự tiết kiệm rất nhiều mã và nó cũng dễ đọc hơn theo cách này. Cảm ơn bạn!
Cảm ơn bạn đã thông qua người anh em, tôi rất vui vì nó rất hữu ích.
Bạn được chào đón, đó là những gì chúng tôi ở đây để chia sẻ và đóng góp ý kiến. Tôi không biết cách lập trình, tôi vừa làm một vài việc trong Bash và tôi đã xuất bản một số đoạn mã mà tôi đã làm trong hai bài đăng. Tôi nghĩ rằng biết điều này có thể làm cho mã dễ hiểu hơn.